1

我读到,设置我需要放置的会话属性:

<sessions-enabled>true</sessions-enabled>

appengine-web.xml内部并实现java.io.Serializable. (虽然我不明白这是为什么!)

以下是使用HttpSession的 servlet 之一:

 @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
        throws ServletException, IOException {
    String userName = request.getParameter("username");
    String password = request.getParameter("password");
    ArrayList list = new ArrayList();
    if(userName.compareTo("user") != 0 ) {
        list.add("Wrong Username");
    } else if(password.compareTo("password") != 0) {
        list.add("Wrong Password");
    }

    if(list.isEmpty()) {
        HttpSession session = request.getSession();
        if(session.isNew()) {
            session.setAttribute("UserRole", "PW :Admin");
            session.setMaxInactiveInterval(900);
            RequestDispatcher rd = request.getRequestDispatcher("abc/cpanel/PcPanel.jsp");
            request.setAttribute("SessionStatus", "JC"); // Just Created 
            rd.forward(request, response);
        }
    } else {
        response.sendRedirect("abc/cpanel/PcPanel_Login.jsp");
    }
}

在验证用户名和密码并输入if块后,请求应该被转发到PcPanel Login.jsp但它不会发生。而是会出现一个空白页面,其中包含该 servlet 的地址。但如果我删除/评论所有会话垃圾,它工作正常。为什么会这样?我错过了什么还是我在某个地方犯了错误?

4

1 回答 1

1

不要使用isNew(). isNew()仅在首次建立会话 = 用户首次登陆您的任何页面时才成立。

请参阅此问题的答案:会话不工作 - GAE/J

于 2012-08-14T18:23:35.140 回答