报错
exception org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
org.apache.jsp.error_jsp._jspService(error_jsp.java:100)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)代码如下
考虑到篇幅 直接上body部分的代码了
check.jsp
<body>
   <%
//解决request请求中的中文乱码
request.setCharacterEncoding("UTF-8");
String username = "";
int visitTimes = 0;
Cookie[] cookies  = request.getCookies();
//便利cookie找出登陆账号以及该账号登陆的次数
for(int i = 0 ;cookies != null && i < cookies.length ;i++){
//第一个cookie消息
Cookie cookie = cookies[i];
if(cookie.getName().equals("username")){
username = cookie.getValue();
}
else if(cookie.getName().equals("visitTimes")){
visitTimes = Integer.parseInt(cookie.getValue());
}

}
if(username == null || username.trim().equals("")){
throw new Exception ("您还没有登陆。请先登陆");
}
Cookie visitTimesCookie = new Cookie("visitTimes",Integer.toString(++visitTimes));
response.addCookie(visitTimesCookie);
   %>
   <FORM action="" method="post">
    <TABLE>
    <TR>
    <TD>当前登陆的账号:</TD>
    <TD><%=username%></TD>
    </TR>
    <TR>
    <TD>当前登陆的次数:</TD>
    <TD><%=visitTimes%></TD>
    </TR>
    <TR>
    <TD></TD>
    <TD><INPUT type = "button" value="刷新" > </TD>
    </TR>
    </TABLE>
   </FORM>
  </body>
error.jsp(这段代码报的错)
这里的代码有点迷糊 执行顺序不是我想的那样
下面有return 那么return下面的语句应该都不执行了
<%=exception.getMessage()%>也应该不会执行 所以不会出现说
java.lang.NullPointerException的错误 应该是直接跳到check.jsp吧
可能是我理解错了 谁可以帮忙看下
 <body>
    <%
     //设置request编码方式,解决request请求中的中文乱码
     request.setCharacterEncoding("UTF-8");
     //设置response编码方式,解决response响应中的中文乱码
     response.setCharacterEncoding("UTF-8");
     if(request.getMethod().equals("post")){
     Cookie usernameCookie = new Cookie("username",request.getParameter("username"));
     Cookie visittimesCookie = new Cookie("visitTimes","0");
     response.addCookie(usernameCookie);
     response.addCookie(visittimesCookie);
     //显示cookie页面
     response.sendRedirect(request.getContextPath() + "/cookie.jsp");
     return;
     }
    
    %>
    <FORM action="error.jsp" method="post">
     <TABLE>
     <TR>
     <TD><%=exception.getMessage()%></TD>
     </TR>
     <TR>
     <TD>账号:</TD>
     <TD><INPUT type="text" name = "username"> </TD>
     </TR>
     <TR>
     <TD>密码:</TD>
     <TD><INPUT type="password" name = "password"> </TD>
     </TR>
      <TR>
     <TD></TD>
     <TD><INPUT type="submit" value="登陆"> </TD>
     </TR>
     </TABLE>
    </FORM>
    
  </body>

解决方案 »

  1.   

    记录登录次数应该使用application比较好...
      

  2.   

    cookie是有寿命的,记录次数用这个不算太好。 
    如果十分需要的话, 一般正常都是 记录在数据库的。
      

  3.   

    直接存数据库,cookie没用,cookie可以禁用的
      

  4.   

     弱弱问一下 为什么不使用application 设置一个全局变量呢 
      

  5.   

    application合适嘛?要是访问量一大,很多很多,你服务器压力不是很大了,session能不能都尽量不用,更别说application了,如果反问量不大application没问题,大了存数据库