如何使用servlet中的invalidate()注销会话

时间:2014-05-02 06:02:22

标签: jsp session servlets invalidation

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");
        }
    %>

2 个答案:

答案 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)

在这种情况下,您已成功使会话过期。这是您浏览器中的工具,当您单击后退按钮时,它会显示网页的抓取副本。因此,如果您单击刷新页面,则不会再次看到该页面。在这种情况下,您的网页将不会被处理,因为会话已过期,并将再次进入登录页面。