Java Servlet nullPointerException登录注销会话

Java Servlet nullPointerException登录注销会话,java,servlets,Java,Servlets,嗨,我是新来的Servlets可能是个简单的问题。在我将数据传递到表单并单击submit按钮后,我得到了java.lang.NullPointerExceptionLogOut.doPost(LogOut.java:45)如何通过此异常 代码doGet: protected void doGet(HttpServletRequest request, HttpServletResponse response) { PrintWriter out = response.getWriter

嗨,我是新来的Servlets可能是个简单的问题。在我将数据传递到表单并单击submit按钮后,我得到了
java.lang.NullPointerException
LogOut.doPost(LogOut.java:45)
如何通过此异常

代码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' />");
    }
}

我建议您使用
try catch
捕获异常,并在捕获异常时编写can来处理问题。比如给用户一条错误消息。如果错误消息总是出现,则代码中可能存在逻辑错误。但让我困惑的是,第45行没有代码。似乎您留下了一个空格。

哪一行是doPost方法中的第45行?在这里//第45行检查是否
request.getParameter(“用户名”)
请求.getParameter(“密码”)
不返回null您的输入应该具有
name
属性,而不是
id
。像这样的话,它会工作得很好。
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");
    }
}