验证码无法显示,而且无法跳转页面,老师帮忙检查下
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<head>
<meta charset="UTF-8">
<title>登录</title>
<link rel="stylesheet" href="css/login.css">
</head>
<body>
<div class="login">
<div class="header">
<h1>
<a href="/login.do">登录</a>
<span style="color:red;text-align:center;">${msg}</span>
</h1>
<button></button>
</div>
<form action="/login1" method="post">
<div class="name">
<input type="text" id="name" name="username">
<p></p>
</div>
<div class="pwd">
<input type="password" id="pwd" name="password">
<p></p>
</div>
<div class="code">
<input type="text" id="code" name="verifyCode" style="width: 150px">
<img src="${pageContext.request.contextPath}/CheckImgSrevlet" style="width: 150px;height: 42px;vertical-align: middle;">
<p></p>
</div>
<div class="btn-red">
<input type="submit" value="登录" id="login-btn">
</div>
</form>
</div>
</body>
</html>
package com.imooc.domain;
public class User {
private String name;
private String password;
@Override
public String toString() {
return "User [name=" + name + ", password=" + password + "]";
}
public User(String name, String password) {
super();
this.name = name;
this.password = password;
}
public User() {
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.imooc.web.listener;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.imooc.domain.User;
public class InitListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
}
@Override
public void contextInitialized(ServletContextEvent sce) {
List<User> userList=new ArrayList<>();
userList.add(new User("张三","123456"));
userList.add(new User("李四","654321"));
sce.getServletContext().setAttribute("list", userList);
}
}
package com.imooc.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.imooc.domain.User;
import com.imooc.utils.UserLogin;
import com.imooc.utils.UserServlet;
/**
* Servlet implementation class LoginServlet
*/
@WebServlet("/login1")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String code1=request.getParameter("verifyCode");
String code2=(String)request.getSession().getAttribute("checkCode");
if(code1==null || !code1.equals(code2)) {
request.setAttribute("msg", "验证码错误");
request.getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
List<User> userList=(List<User>)request.getServletContext().getAttribute("list");
String name=request.getParameter("username");
String password=request.getParameter("password");
UserServlet user1=new UserLogin();
User user=user1.login(userList, new User(name,password));
if(user==null) {
request.getRequestDispatcher("/login.jsp").forward(request, response);
}else {
response.sendRedirect(request.getContextPath()+"/categoryList.jsp");
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
package com.imooc.servlet;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class CheckImgServlet
*/
@WebServlet("/CheckImgServlet")
public class CheckImgServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CheckImgServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int width=150;
int height=42;
BufferedImage bufferedImage=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphics graphics=bufferedImage.getGraphics();
graphics.setColor(Color.BLUE);
graphics.fillRect(0, 0, width, height);
graphics.setColor(Color.YELLOW);
graphics.drawRect(0, 0, width-1, height-1);
Graphics2D g2d=(Graphics2D)graphics;
g2d.setColor(Color.BLACK);
g2d.setFont(new Font("宋体",Font.BOLD,15));
StringBuffer sb=new StringBuffer();
String words="AQZWSXCDERFVBGTYHNMJUIKLOPqazwsxedcrfvtgbyhnujmiklop0123456789";
int x=0;
Random random=new Random();
for(int i=0;i<4;i++) {
int idx=random.nextInt(words.length());
char ch=words.charAt(idx);
sb.append(ch);
int jiaodu=random.nextInt(60)-30;
double threa=jiaodu*Math.PI/180;
g2d.rotate(threa,x,20);
g2d.drawString(String.valueOf(ch), x, 20);
g2d.rotate(-threa,x,20);
x+=20;
}
ImageIO.write(bufferedImage,"jpg",response.getOutputStream());
request.getSession().setAttribute("checkCode",sb.toString());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>mvcc</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>com.imooc.web.listener.InitListener</listener-class>
</listener>
</web-app>
package com.imooc.utils;
import java.util.List;
import com.imooc.domain.User;
public interface UserServlet {
public User login(List<User> userList,User user);
}
package com.imooc.utils;
import java.util.List;
import com.imooc.domain.User;
public class UserLogin implements UserServlet {
@Override
public User login(List<User> userList, User user) {
for(User user1:userList) {
if(user1.getName().equals(user.getName()) && user1.getPassword().equals(user.getPassword())) {
return user1;
}
}
return null;
}
}

正在回答 回答被采纳积分+1
同学你好,检查同学贴出代码,有如下两个问题:
1、404问题,根据贴出的运行效果,这里直接访问了login1并没有加项目名,导致没有找到对应地址,原因是 以"/"开头,表示项目根目录,会直接直接从localhost:8080后直接访问,这里login1是以"/"开头,则直接访问login1,所以建议同学在/login1前添加项目名称,比如:

2、验证码图片不展示,是因为同学的servlet名称写错啦,例如:

CheckImgServlet与CheckImgSrevlet不一样呐,建议同学将这里的名称统一。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
- 参与学习 人
- 提交作业 676 份
- 解答问题 9666 个
本阶段将从前端网页搭建入手,到Java Web基础,前后端结合助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星