老师,我这段用户登陆的代码哪里出错了为什么页面500报错了
package com.imooc.system;
import java.util.List;
public class UserServiceImpl {
/**
* 用户登陆
*/
public int login(List<User> listUser,User user) {
List<User> listUser1=listUser;
User user1=user;
for(User u1:listUser1) {
if(u1.equals(user1)) {
return 1;//用户信息匹配成功,允许登陆
}
}
return -1;//用户信息匹配失败
}
}
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.system.User;
import com.imooc.system.UserServiceImpl;
/**
* Servlet implementation class loginServlet
*/
@WebServlet("/loginServlet")
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 {
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String code1=(String)request.getSession().getAttribute("KAPTCHA_SESSION_KEY");
String code2=request.getParameter("verifyCode");
if(code1!=null&&code1.equals(code2)) {
String name=request.getParameter("username");
String password=request.getParameter("password");
User u=new User(name,password);
List<User> us=(List<User>)request.getServletContext().getAttribute("collection");
UserServiceImpl use=new UserServiceImpl();
int i=use.login(us, u);
//如果等于1是登陆成功
if(i==1) {
request.getSession().setAttribute("name", name);//用于监听器进行判断是否登陆
request.getSession().setAttribute("password", password);
request.getRequestDispatcher("/pase/admin/categoryList.jsp").forward(request, response);
}else {
request.setAttribute("msg", "密码输入不正确");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}else {
request.setAttribute("msg", "验证码输入不正确");
request.getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
}
}
package com.imooc.system;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class InitListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub
List<User> li=new ArrayList<>();
User e=new User("aaa","123456");
li.add(e);
arg0.getServletContext().setAttribute("collection", li);
}
}
正在回答
同学你好,首先,我们看到
可知,是UserServiceImpl中报错了,在login 方法中报了空指针异常,
空指针异常是有值为null的对象去调用方法或者,被遍历循环了。
由于粘贴过来的代码与同学的格式有偏差,老师无法确定同学的第12行代码是具体的那一行,猜测或者是下图中的1,或2.
同学可以在遍历之前和在调用u1之前分别打印一下,这两个值,看看哪个是null
如果listUser1 为null,说明传过来的集合是null
而根据登录页面传入的值,已经在监听器中进行了初始化,
目前老师只能猜测,是监听器中的方法没有被执行,建议同学写个输出语句在contextInitialized这个方法中,看看这个方法是否有被执行。
如果没有执行,请检查一下是否有在web.xml 中配置这个监听器。
如果没有,请配置一下这个监听器。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,
1、同学的User实体类中是否重写的了equals和hashcode方法呢?如果没有重写,则在两个对象进行比较时,将不相等,如果没有重写,就需要获取属性进行比较,具体如下:
2、同学所粘贴的其他的类的代码编写的没有问题,老师将代码拼接测试也没有出现500的错误,同学出现500的错误是在点击登录按钮后进行跳转时出现的吗?如果是的话,建议同学检查一下categoryList.jsp页面的报错信息,查看一下报错的代码是否有编写错误,如果同学没有解决,建议同学将页面代码以及addCategoryServlet粘贴出来,报错信息贴一下。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 676 份
- 解答问题 9666 个
本阶段将从前端网页搭建入手,到Java Web基础,前后端结合助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星