老师,我这段用户登陆的代码哪里出错了为什么页面500报错了

老师,我这段用户登陆的代码哪里出错了为什么页面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);

           

}


}


正在回答

登陆购买课程后可参与讨论,去登陆

5回答

同学你好,首先,我们看到

http://img1.sycdn.imooc.com//climg/5dfec96009635dd607340240.jpg

可知,是UserServiceImpl中报错了,在login 方法中报了空指针异常,

空指针异常是有值为null的对象去调用方法或者,被遍历循环了。

由于粘贴过来的代码与同学的格式有偏差,老师无法确定同学的第12行代码是具体的那一行,猜测或者是下图中的1,或2.

http://img1.sycdn.imooc.com//climg/5dfeca140980c80103630075.jpg

同学可以在遍历之前和在调用u1之前分别打印一下,这两个值,看看哪个是null

如果listUser1 为null,说明传过来的集合是null

而根据登录页面传入的值,已经在监听器中进行了初始化,

目前老师只能猜测,是监听器中的方法没有被执行,建议同学写个输出语句在contextInitialized这个方法中,看看这个方法是否有被执行。

如果没有执行,请检查一下是否有在web.xml 中配置这个监听器。

如果没有,请配置一下这个监听器。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

提问者 散落满天的回忆 2019-12-21 19:27:58

老师我代码贴不出来一直在加载

我在再另一个问题中贴出麻烦老师了

提问者 散落满天的回忆 2019-12-21 19:25:47
提问者 散落满天的回忆 2019-12-21 19:25:36
好帮手慕酷酷 2019-12-21 18:30:21

同学你好,

1、同学的User实体类中是否重写的了equals和hashcode方法呢?如果没有重写,则在两个对象进行比较时,将不相等,如果没有重写,就需要获取属性进行比较,具体如下:

http://img1.sycdn.imooc.com//climg/5dfdf181093a247309880219.jpg

2、同学所粘贴的其他的类的代码编写的没有问题,老师将代码拼接测试也没有出现500的错误,同学出现500的错误是在点击登录按钮后进行跳转时出现的吗?如果是的话,建议同学检查一下categoryList.jsp页面的报错信息,查看一下报错的代码是否有编写错误,如果同学没有解决,建议同学将页面代码以及addCategoryServlet粘贴出来,报错信息贴一下。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 散落满天的回忆 #1
    出现500的错误是在点击登录按钮后进行跳转时出现的
    2019-12-21 19:10:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师