【发布时间】:2014-05-02 06:02:21
【问题描述】:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
HttpSession session = request.getSession();
if(session != null)
{
try
{
response.setHeader("Cache-Control","no-cache"); //Forces caches to obtain a new copy of the page from the origin server
response.setHeader("Cache-Control","no-store"); //Directs caches not to store the page under any circumstance
response.setDateHeader("Expires", 0); //Causes the proxy cache to see the page as "stale"
response.setHeader("Pragma","no-cache"); //HTTP 1.0 backward compatibility
session.setAttribute("admin_name",null);
session.invalidate();
response.sendRedirect("login.jsp");
}
catch(Exception e)
{
System.out.println(e.getMessage());
System.out.println(e);
}
}
else
{
}
}
这是我的 servlet。我将注销我使用名称 admin_name 创建的会话。当我注销会话时,它成功地点击了登录页面。但是当我按下后退按钮时,它会转到上一页。即使我使该会话无效,我也不明白为什么会发生这些。但是当我刷新该页面时,它会再次点击登录页面。
这是我在jsp页面中使用的代码。
<%
String name = null;
if (session.getAttribute("admin_name") == null) {
response.sendRedirect("login.jsp");
} else {
name = (String) session.getAttribute("admin_name");
}
%>
【问题讨论】:
-
您无需从即将失效的会话中删除内容。它将变得无法访问,并且 (a) 因此会受到 GC 的约束,并且 (b) 属性也将变得无法访问和无法访问。
标签: jsp session servlets invalidation