2012-06-07 52 views
0

我在會話中遇到問題。當我註銷會話是 結束,但當瀏覽器後退按鈕被按下,我得到前一頁。我使用的JSP Servlet技術和我的註銷代碼如下如何使用java清除瀏覽器緩存

    request.getSession().invalidate(); 
     response.setHeader("Cache-Control","no-cache"); 
     response.setDateHeader("Expires", 0); 
     response.setHeader("Pragma","no-cache"); 
     response.sendRedirect("home.jsp"); 

給出有誰能夠告訴我問題出在哪裏,什麼將是這個問題的解決方案?

回答

0
<script> 
    history.forward(); 
</script> 

將此javascript加入到註銷頁面和調用之前的頁面。 添加下面的代碼在標籤

onLoad="if (location.href.indexOf('reload')==-1) location.replace(location.href+'?reload')" 

這將解決您的後退按鈕的問題。

+0

我已經用這個,但我沒有工作。 – user1407310

+0

你需要刷新頁面才能生效。請注意,通常該會話僅在瀏覽器窗口關閉時才真正結束。 –

+0

刷新頁面後也不起作用 – user1407310

1

您是否僅在註銷頁面上設置緩存標頭?如果是這樣,你需要把它們放在每個頁面上,因爲你來自的頁面沒有它們並且會被緩存。

0

WIRTE你的代碼如下,

 //... 
    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 

    //can check userId or something likes this.In this sample, i checked with userName. 
    String userName = (String) session.getAttribute("User"); 
    if (null == userName) { 
     request.setAttribute("Error", "Session has ended. Please login."); 
     RequestDispatcher rd = request.getRequestDispatcher("login.jsp"); 
     rd.forward(request, response); 
    } 
相關問題