RT。我用jsp+servlet写了个Demo简单的熟悉下过滤器的作用。我写的过滤器是判断session用于登录过滤,如果已登录可以访问welcome.jsp页面,否则返回login.jsp页面。不登录直接地址访问时过滤器生效。但在正常登录后进行销毁session操作后,如果在浏览器点击后退时仍然能展现welcome.jsp页面。我的理解是因为后退操作展现的是缓存页面,这理解对吗??那怎么样才能做到点击浏览器的后退操作后使页面重新加载而使过滤生效??浏览器session过滤器重新加载servlet

解决方案 »

  1.   

    http://www.cnblogs.com/yuanyuan/archive/2010/01/12/1645297.html
      

  2.   

    这儿 我试了一下我的系统 点击退后按钮 发现页面刷新了一下 回到了login页面 没出现你说的问题 但是我觉得这个问题的存在可能是页面就是个静态页面 没什么二次请求 我那个页面有很多静态请求 刷新时会多次请求  过滤器拦截到这些请求 也就回到了login页面了
      

  3.   

    你过滤器是从session里面读取数据,只要还是在session里的有效期(会话开始到结束),能从里面读取数据就可以登录
      

  4.   


    那是说你的过滤拦截实际上是被其它请求激活的喽?我写的Demo很简单,没有其它静态请求。
      

  5.   


    是有先点击退出登录的操作即进行session销毁的操作。然后点击浏览器的后退,会展现之前的页面,但实际上此时的session是null值的,只是如果直接在后退展现的页面进行刷新操作,session才会重新有原来的值。我有在控制台输出测试过。
      

  6.   

    过滤器跳转到指定页面  和  让页面禁止访问浏览器的缓存  这两个没冲突吧。。你不是说退出登录跳到指定页面然后点击”后退“按钮,显示 welcome.jsp 这里加上顶部加上禁用缓存的三行代码就可以了。
      

  7.   


    jsp页面上有这代码但没生效,我在servlet中要跳转到welcome.jsp页面时,在响应头里写了Java代码。用response.setHeader(...)...手动设置了禁止缓存。