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");
}
%>
答案 0 :(得分:0)
invalidated
方法,会话即.invalidate
来自docs,
invalidate
void invalidate()
Invalidates this session then unbinds any objects bound to it.
从你的问题
I didn't understood why these happen even if i invalidate that session.
but when i refresh that page it will again hit the login page.
这是因为页面是从浏览器缓存加载的,即使它转到上一页,您也无法从加载的页面发送任何请求
<强>更新强>
选中此How to clear browser cache using java
希望这会有所帮助!!
答案 1 :(得分:0)
在这种情况下,您已成功使会话过期。这是您浏览器中的工具,当您单击后退按钮时,它会显示网页的抓取副本。因此,如果您单击刷新页面,则不会再次看到该页面。在这种情况下,您的网页将不会被处理,因为会话已过期,并将再次进入登录页面。