Chinaunix首页 | 论坛 | 博客
  • 博客访问: 475375
  • 博文数量: 111
  • 博客积分: 3146
  • 博客等级: 中校
  • 技术积分: 939
  • 用 户 组: 普通用户
  • 注册时间: 2009-07-07 11:23
个人简介

Nathing

文章分类

全部博文(111)

文章存档

2016年(2)

2015年(1)

2014年(31)

2012年(2)

2011年(9)

2010年(36)

2009年(30)

我的朋友

分类: Java

2010-07-07 12:12:11

java做一个jsp项目。具体情况是这样:进入登录页面,输入用户名,密码,进入用户操作界面。此时点击浏览器后退按钮,又回到登录界面,此时再点击浏览器前进按钮,又会进入用户操作界面。
如何使这次点击浏览器前进按钮时,无法显示用户操作界面,而必须重新登录呢?
关键问题在于点击浏览器前进后退按钮并不是重新发送请求获得新的页面,而是从IE缓存中读取的页面和数据.此时即使sesion已经失效,点击前进按钮,还能从缓存中读取,还是能做操作的.
网上说:session.invalidate()方法只是将session得isValid属性设置为了false,而此时的session并没有销毁,其他属性如id等依然存有数据.不知是这样吗?还望高手解答.

关键是清掉登录后要去的页面的缓存(这点很重要,即使你的session已经失效,如果你不清掉这个页面的缓存的话,还是能做操作的),并使session失效.
具体操作:
1.登录页面:

<%
    response.setHeader("Pragma","No-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires", 0);
    response.flushBuffer();
    session.invalidate();

%>

前四句是清掉登录页面的缓存,这样点击浏览器后退按钮回到登录页面,就看不见你输入的用户名,第五句是使session失效.

2.登录后要去的页面:

<%
     response.setHeader("Pragma","No-cache");
     response.setHeader("Cache-Control","no-cache");
     response.setDateHeader("Expires", 0);
     response.flushBuffer();


     String user = (String)request.getSession().getAttribute("USER");
     if(user==null)
     {
         out.print("");
     }
%>

前四句清除缓存,后面检查session.
阅读(3426) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~