2014-09-28 112 views
-1

嗨我是Servlets新手可能很容易的问题。在我将数据传递到表单并单击提交按钮后,我得到java.lang.NullPointerExceptionLogOut.doPost(LogOut.java:45)任何想法如何通过此异常?Java Servlet nullPointerException登录注销会话

代码的doGet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) { 

    PrintWriter out = response.getWriter(); 
    response.setContentType("text/html"); 
    HttpSession session = request.getSession(false); 

    out.println("<form method='post' action='LogOut'>" 
      + "usr <input type='text' id='username'/>" 
      + "pass <input type='password'id='password'/>" 
      + "<input type='submit' value='Login'></form>"); 

    //If the username and password is correct 
    if (session != null) { 
     String username = (String) session.getAttribute("username"); 
     out.println("Hi " + username + "sessioon is started with id " + session.getId()); 
     out.println("<a id='logout' value='Logout' />"); 
    } 
} 

代码的doPost

protected void doPost(HttpServletRequest request, HttpServletResponse response) { 

    PrintWriter out = response.getWriter(); 
    String username = request.getParameter("username"); 
    String password = request.getParameter("password"); 
    response.setContentType("text/html"); 

    if (username.equals("usr") && password.equals("pass")) { //line 45 
     HttpSession sess = request.getSession(); 
     sess.setAttribute("username", username); 
    } else { 
     out.println("Wrong input data"); 
    } 
} 
+0

哪条线是45号线? – deKajoo 2014-09-28 14:35:01

+0

in the doPost method theres // line 45 – user3024888 2014-09-28 14:37:46

+0

检查request.getParameter(“username”);'或'request.getParameter(“password”);'不返回null – deKajoo 2014-09-28 14:39:21

回答

0

我建议你使用try-catch和捕获异常,并能编写用于当异常被捕获,处理这个问题。像给用户一个错误信息。如果总是出现错误消息,那么代码中可能存在逻辑错误。但让我困惑的是,第45行没有代码。看起来好像你留下了空间。