servlet struts2清除页面缓存代码

来源:互联网 发布:淘宝特种经营有什么用 编辑:程序博客网 时间:2024/06/07 04:02

群:欢迎加入-----------------------------------------------------Java、.Net、数据库、各种开发语言,群号:184764197

 

 

 

何谓页面缓存?简单的说就是,试试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);
是实现倒计时跳转页面。


原创粉丝点击