返回首頁
當前位置: 主頁 > 網絡編程 > Jsp實例教程 >

servlet struts2清除頁面緩存代碼

時間:2011-03-25 23:58來源:知行網www.wzliqi.com 編輯:麥田守望者

何謂頁面緩存?簡單的說就是,試試IE或者firefox工具欄的前進\后退按鈕,就知道了.也就是說,瀏覽器會先將頁面緩存,待下次使用時,就直接從緩存里面取數據,而不重web server重新獲取數據.從而減少了server的壓力.
但凡事就利就有弊。比如web頁面的登陸,如何退出呢?當然在servlet可以用
session.removeAttribute("LogName");
session.invalidate();
但,僅這樣是不完善的。如果用戶沒有及時將瀏覽器關閉的話,那么按“后退”按鈕,就有可能造成不安全因素了(因為用戶并沒有真正的退出)。
好在http協議可以自定義緩存頁面。示例如下:
一般來說,web頁面都有一個登陸按鈕。登陸按鈕映射servlet或struts action等等。也就是說,登陸動作后,一般都是跳轉至主頁。所以在sendRedirect或forward動作之前加入清除緩存代碼:
servlet
session.setAttribute("logName", logName);//用戶寫入session
//清除頁面
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
//跳轉頁面
RequestDispatcher requestDispatcher = null;
requestDispatcher = request.getRequestDispatcher("index.jsp");
requestDispatcher.forward(request,response);

struts2

HttpServletResponse response = ServletActionContext.getResponse();
//清除登陸頁面緩存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);

//頁面重定位,倒計時。
String URL = "index.jsp";
String content=3+";URL="+URL;//3秒后進入主頁
response.setHeader("REFRESH",content);

這樣在調用session.invalidate()后,再按IE或firefox退出按鈕時,就會出現頁面已過期的提示了。
response.setHeader("REFRESH",content);
是實現倒計時跳轉頁面。

------分隔線----------------------------
標簽(Tag):Struts2
------分隔線----------------------------
推薦內容
猜你感興趣
久久99久久99精品免视看