`

servlet及struts2清除页面缓存问题

阅读更多


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

相关推荐

    JSP和Struts解决用户退出问题

    为解决这个问题,logoutSampleJSP2引入了对HTTP响应头的操作,设置`Cache-Control`和`Pragma`字段,禁止浏览器缓存页面。但此方法在某些特定条件下仍有缺陷。 logoutSampleJSP3进一步改进,通过在每个安全页面上...

    WebSphere Application Server下Struts2.0无法使用解决方案

    这个问题通常表现为在尝试访问Struts2控制的页面时,返回HTTP 500错误,并且日志中显示"Filter [struts]: not a filter class"这样的异常信息。这个错误表明WebSphere没有正确识别或加载Struts2的Filter类,即`org....

    Struts 2学习

    在Servlet环境中使用Struts 2时,可以通过`ServletActionContext.getRequest()`方法获取到当前的`HttpServletRequest`对象,从而访问请求参数等信息。 #### 结果处理与页面跳转 **1. 结果返回** 在Struts 2中,`...

    ssh面试题总结(很详细)

    Struts 的工作机制是当 web 应用启动时就会加载初始化 ActionServlet,ActionServlet 从 struts-config.xml 文件中读取配置信息,把它们存放到各种配置对象。 2. 为什么要使用 Struts? 使用 Struts 可以使开发...

    SSH面试题,struts,hibernate,Spring面试题

    - **一级缓存**:每个Session内部有自己的缓存,关闭Session时缓存自动清除,是默认开启的。 - **二级缓存**:独立于Session,需要额外配置,可以跨Session共享数据,但默认不开启。 3. **Hibernate查询方式**: ...

    cn.zip_Exitservlet_Struts 管理系统

    在"cn.zip_Exitservlet_Struts 管理系统"中,ExitServlet可能负责清除用户的会话状态,释放资源,以及执行一些安全相关的操作,如注销用户的登录状态,防止未授权访问。当用户完成操作或者选择退出时,ExitServlet被...

    SSH面试题大全.doc

    一级缓存是每个Session内置的,随Session关闭而清除;二级缓存是可选的,独立于Session,用于提高性能,但需额外配置。 5. Hibernate的查询方式: 包括本地SQL查询、Criteria API和HQL(Hibernate查询语言),提供...

    SSH框架面试题.pdf

    Struts是一个基于MVC模式的开源Web框架,用于构建动态网页应用。它通过将模型(Model)、视图(View)和控制器(Controller)分离来简化应用结构,提高可维护性和可扩展性。在Struts中,用户请求由控制器(Action...

    javaWEB开发ssh面试题总结.pdf

    一级缓存是每个Session内部的缓存,随Session关闭而清除。二级缓存是独立于Session的,需要手动配置并开启,可以跨Session共享数据。 5. **Hibernate的查询方式**: 包括本地SQL查询、Criteria API和HQL...

    java与ssh面试题总结

    Struts是一个MVC框架,其工作流程涉及ActionServlet、ActionMapping、ActionForm、表单验证、Action执行和ActionForward。使用Struts可以规范项目结构,简化MVC组件间的交互,便于学习和维护。 8. **为何使用...

    SSH的面试题,不错的哦

    - 一级缓存:每个Session内部的缓存,随Session关闭而清除。 - 二级缓存:独立于Session,可配置开启,用于跨Session共享数据。 5. **Hibernate查询方式**: - 本地SQL查询、Criteria API和HQL(Hibernate Query...

    SSH面试题总结 开源框架

    Struts的工作机制是在应用启动时初始化ActionServlet,处理用户请求,匹配ActionMapping,处理ActionForm数据,进行表单验证,执行Action的execute方法,转发请求到ActionForward指定的JSP组件,最后生成动态网页。...

    web.xml加入taglib报错

    5. 在IDE中清理并重新构建项目,清除可能的缓存问题。 博客中提供的`MyEclipse_Struts.doc`文件可能包含了使用MyEclipse进行Struts框架开发的详细指南。Struts是一个基于MVC(Model-View-Controller)设计模式的...

    ssh框架面试汇总 欢迎下载

    一级缓存是每个Session内部的缓存,随Session关闭而清除。二级缓存是SessionFactory级别的,可跨Session共享,但默认不启用。 **查询方式**:包括本地SQL查询、Criteria API和HQL(Hibernate Query Language)。 *...

    SSH面试题目!!!!!

    - 一级缓存是Session级别的,自动管理,事务完成后自动清除。 - 二级缓存可选,用于跨Session的数据共享,需注意数据一致性问题。 **查询方式**: - SQL:直接使用SQL查询。 - Criteria:面向对象的查询方式。 - ...

Global site tag (gtag.js) - Google Analytics