jsp页面的缓存问题

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值