【发布时间】: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");