当我做一个项目需要登录系统时,我发现jsp会自动创建会话,所以我添加<%@ page session =“false”%>进入所有页面以禁用他们创建会话的能力,因为我只希望一个servlet能够创建会话。
然而,当谈到使用bean时,我发现,由于<%@ page session =“false”%>我不能使用会话范围的bean,我想问一下可能的是什么解决这个僵局的解决方案。
非常感谢
答案 0 :(得分:1)
如果要从servlet设置会话属性(登录后),那么当您从中移动到另一个JSP时,会话将保留,您不需要编写
<%@ page session="false" %>
在那个JSP上。您在会话中可以使用您设置的所有属性。
这是一个测试代码: index页面显示在servlet中设置的'name'属性 - 当你按下'next JSP'按钮时,MaintainSession会将你带到另一个新的JSP,它再次显示'name'属性。
没有一个JSP需要&lt;%@ page session =“false”%&gt;。
的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>
MaintainSession.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