使用HttpSession和GAE时还需要做多少工作?

时间:2012-08-14 17:41:43

标签: java google-app-engine session java-ee httpsession

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

<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。但是,如果我删除/评论所有会话垃圾,它工作正常。为什么会这样?我错过了什么或者我在某处弄错了吗?

1 个答案:

答案 0 :(得分:1)

请勿使用isNew()isNew()仅在会话首次建立时=当用户首次登陆您的任何网页时才会生效。

请参阅此问题的答案:Session is NOT working - GAE/J