【问题标题】:Getting session from another Servlet从另一个 Servlet 获取会话
【发布时间】:2017-11-13 13:01:29
【问题描述】:

我正在尝试将用户对象存储在 Servlet1 的会话中。在 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:我得到一个空指针 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");

}

【问题讨论】:

  • 在第一个 servlet 中你有 request.getSession().setAttribute("TheLoggedInUser", userThatLogsIn); 。所以如果你想在第二个 servlet 中使用 userThatLogsIn 这个值,那么就这样做。 request.getSession().getAttribute("TheLoggedInUser"); 这行User loggedInUser = (User) request.getAttribute("TheLoggedInUser"); 必须替换为User loggedInUser = (User) request.getSession().getAttribute("TheLoggedInUser");

标签: java session servlets


【解决方案1】:

这一行

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

必须替换为

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

【讨论】:

    猜你喜欢
    • 2018-06-05
    • 2012-05-22
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多