0
我創建了一個登錄頁面,我的項目「的學生信息系統」包含文本域的用戶名,用戶名和password.i試圖用戶名和用戶ID的值存儲在會話對象,並在另一頁使用但它返回空值。會話對象返回null
我創建了一個登錄頁面,我的項目「的學生信息系統」包含文本域的用戶名,用戶名和password.i試圖用戶名和用戶ID的值存儲在會話對象,並在另一頁使用但它返回空值。會話對象返回null
幾個原因:
session.setAttribute(key, value)
完成)。session.invalidate()
)。session.getAttribute(key)
或${key}
完成)。以下login.jsp
示例..
<form action="login" method="post">
Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br>
<input type="submit" value="login">
<span class="error">${error}</span>
</form>
<p>Debug info: your current session ID is ${pageContext.session.id}</p>
..with映射/login
一個servlet,其具有基本上在doPost()
以下..
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = userDAO.find(username, password);
if (user != null) {
request.getSession().setAttribute("user", user);
response.sendRedirect(response.encodeRedirectURL("home.jsp"));
} else {
request.setAttribute("error", "Unknown login, try again");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}
..和一個home.jsp
這一下這樣的..
<p>Welcome, ${user.name}!</p>
<p>Debug info: your current session ID is ${pageContext.session.id}</p>
..應該工作。
確保會話ID是在兩個頁面的相同。出於調試目的,您可以通過${pageContext.session.id}
查看它,如上面的JSP代碼片段所示。如果它是相同的並且User
對象仍然不存在,那麼問題就在於別的地方。