我做了一个登陆页面index.jsp和一个验证的文件loginManage.jsp,登录页面可以进去,但是输入姓名和密码后点提交后就
会出现错误(我的姓名和密码都输入正确,和数据库中的一样)。其中,index.jsp中表单里的关键代码是
<form action="loginManage.jsp?param=login" method="post" onsubmit="return checkForm()">
loginManage.jsp中的一部分代码是
<%
String userName = request.getParameter("userName");
String password = request.getParameter("password");
String param = request.getParameter("param");
UserDAL impleUser = new UserDAL();if(param.equals("login")){  //登录操作
    User user = impleUser.getUserByNameAndPwd(userName, password);
    List users = (ArrayList)application.getAttribute("users");    if(user!=null){
        if(users.size()==0){  //如果现在为第一个登录的
                users = new ArrayList();
                users.add(user.getUserName());
            }else{
                int i = 0;
                for(i=0;i<users.size();i++){
                    if(user.getUserName().equals(users.get(i).toString())){
                            break;
                        }
                    }
                if(i==users.size()){  //如果当前用户没有在已登录用户的列表中
                        users.add(user.getUserName());
                    }
                }
                session.setAttribute("user", user);
                application.setAttribute("users", users);
                response.sendRedirect("main.jsp");
    }else if(param.equals("register")){     //注册操作
        int count = impleUser.save(userName, password, 0);
        if(count>0){
                out.print("<script type='text/javascript'>alert('注册成功,请登录。');location.replace('index.jsp');</script>");
            }else{
                out.print("<script type='text/javascript'>alert('注册失败,请重新注册!');history.back()");
            }
    }else{
        out.print("啥都不是");
        }
    }
%>
其中的getUserByNameAndPwd()和save()方法都验证过是对的,而页面出现的错误信息是
type Exception reportmessagedescriptionThe server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: java.lang.NullPointerException
root cause java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish v3 logs.
不知道该怎么解决。

解决方案 »

  1.   

    if(param.equals("login")){
    这个我也不知道 传说这里换成if(("login").equals(param))比较好
      

  2.   

    List users=new ArrayList()先声明应该是
      

  3.   

    没有运行你的代码,不知道出错在第几行,if(users.size()==0)这句觉得有问题,貌似如果users是null,调用size方法会有异常吧。应该检查if(users!=null)好些吧。
      

  4.   

    if(user.getUserName().equals(users.get(i).toString())){
    这里的toString去掉试试,或者验证下users.get(i),看看是否null
      

  5.   

    上面的问题解决了,但是我还有一个注册页面,register.jsp里面的表单是 <form action="loginManage.jsp?param=register" method="post" onSubmit="return checkForm(this)">对应loginManage.jsp中的代码是else if(param.equals("register")){ //注册操作
      int count = impleUser.save(userName, password, 0);
      if(count>0){
      out.print("<script type='text/javascript'>alert('注册成功,请登录。');location.replace('index.jsp');</script>");
      }else{
      out.print("<script type='text/javascript'>alert('注册失败,请重新注册!');history.back()");
      }
    我运行后,页面是空白的,数据库中也没添加新的User,但是save()测试后是对的
      

  6.   

    数据库没添加说明你的save里肯定有问题了,没有成功插入数据,debug下save的过程吧
      

  7.   

    还有
    out.print("<script type='text/javascript'>alert('注册失败,请重新注册!');history.back()");
     这句结尾少了</script>
    如果显示了这个页面,估计就是空白了
      

  8.   

    我试了,save()能插入数据,但是运行页面后就不行,还是出来空白页,然后数据库中也没插入
      

  9.   

    你是说单独运行save吧,我的意思是你运行页面时候debug,也许是你用户名过长,或者什么问题的
      

  10.   

    恩,我单独运行的时候好着呢,运行页面的时候我名字没起太长,我对debug的经验不多,好像下边没
    显示什么变量
      

  11.   

    out.print("<script type='text/javascript'>alert('注册失败,请重新注册!');history.back()");
     这句结尾少了</script>把这个先加上
      

  12.   

    实在不好意思,这下搞笑了,刚才我把这段代码 int count = impleUser.save(userName, password, 0);
            if(count>0){
                    out.print("<script type='text/javascript'>alert('注册成功,请登录。');location.replace('index.jsp');</script>");
                //out.print("注册成功");
                }else{
                //out.print("注册失败");
                    out.print("<script type='text/javascript'>alert('注册失败,请重新注册!');history.back();</script>");
                }
    写错位置了,放在了user==null的里边了,所以一直没执行