[英]JSP: About Session in a system with login in constraint
當我做一個項目需要在系統中登錄時,我發現jsp會自動創建會話,因此我在所有頁面中添加<%@ page session =“ false”%>以禁用其創建會話的能力,因為我只想要一個servlet能夠創建會話。
但是,在使用bean時,我發現由於<%@ page session =“ false”%>而無法在會話范圍內使用bean,我想問一下解決此死鎖的可能解決方案是什么。
非常感謝
如果要從servlet設置會話屬性(登錄后),那么當從servlet轉移到另一個JSP時,該會話將保留,並且您無需編寫
<%@ page session="false" %>
在那個JSP上。 您設置的所有屬性在會話中將對您可用。
這是一個測試代碼:索引頁面顯示了servlet中設置的“名稱”屬性-當您按下“下一個JSP”按鈕時,也會通過MaintenanceSession進入另一個新的JSP,它再次顯示“名稱”屬性。
JSP都不需要<%@頁面session =“ false”%>。
index.jsp
<body>
<form action="MaintainSession" method="post">
<input type="submit" value="Set Session Attribs"/>
</form>
<h1>Name : ${sessionScope.name}</h1>
<h1>Name : <%=session.getAttribute("name")%></h1>
<form action="Next.jsp" method="post">
<input type="submit" value="Next JSP"/>
</form>
</body>
Next.jsp
<body>
<h1>Hello World!</h1>
<h1>Name : ${sessionScope.name}</h1>
<h1>Name : <%=session.getAttribute("name")%></h1>
</body>
MaintenanceSession.java
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(true);
session.setAttribute("name", "MyName");
request.getRequestDispatcher("index.jsp").forward(request, response);
}
流程:
index.jsp ----Press Set Session Attribs---> MaintainSession servlet ----> index.jsp ---- press Next JSP ----> Next.jsp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.