从另一个Servlet获取会话

时间:2017-11-13 13:01:29

标签: java session servlets

我试图在Servlet1中的会话中存储User对象。在Servlet2中,我试图从Servlet1中获取相同登录会话中的值。

Servlet1:

private void login(HttpServletRequest request, HttpServletResponse response) throws IOException {
    request.setCharacterEncoding("UTF-8");

    String emailFromForm = request.getParameter("email").toLowerCase();
    String passwordFromForm = request.getParameter("passWord");

    try {
        User userThatLogsIn = manager.getUser(emailFromForm);
        String passwordFromDB = userThatLogsIn.getPassword();

        if (passwordFromDB.equals(passwordFromForm)) {
            request.getSession().setAttribute("TheLoggedInUser", userThatLogsIn);
            response.sendRedirect("/Slit/welcome.jsp");
        } else {
            request.setAttribute("error", "Unknown login, try again");
            response.sendRedirect("/Slit/LoginFailed.jsp");
        }
    } catch (NullPointerException nullPointer) {
        System.err.println("NullPointerException: " + nullPointer.getMessage());
        response.sendRedirect("/Slit/LoginFailed.jsp");
    }
}

Servlet2:我得到一个nullpointer sessionaccept fnavn 在Mypage.MyPageServlet.sessionAccept(MyPageServlet.java:40)

private void sessionAccept(HttpServletRequest request, HttpServletResponse response) throws IOException {
    HttpSession session = request.getSession();
    session.setMaxInactiveInterval(30 * 60);
    User loggedInUser = (User) request.getAttribute("TheLoggedInUser");
    String fnavn = loggedInUser.getfName();
    String enavn = loggedInUser.getlName();
    String epost = loggedInUser.getEmail();


    request.getSession().setAttribute("messageJSP", "Velkommen" + epost);
    response.sendRedirect("Innstillinger.jsp");

}

1 个答案:

答案 0 :(得分:0)

这一行

User loggedInUser = (User) request.getAttribute("TheLoggedInUser");

必须替换为

User loggedInUser = (User) 
request.getSession().getAttribute("TheLoggedInUser");