何谓页面缓存?简单的说就是,试试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);
是实现倒计时跳转页面。
相关推荐
为解决这个问题,logoutSampleJSP2引入了对HTTP响应头的操作,设置`Cache-Control`和`Pragma`字段,禁止浏览器缓存页面。但此方法在某些特定条件下仍有缺陷。 logoutSampleJSP3进一步改进,通过在每个安全页面上...
这个问题通常表现为在尝试访问Struts2控制的页面时,返回HTTP 500错误,并且日志中显示"Filter [struts]: not a filter class"这样的异常信息。这个错误表明WebSphere没有正确识别或加载Struts2的Filter类,即`org....
在Servlet环境中使用Struts 2时,可以通过`ServletActionContext.getRequest()`方法获取到当前的`HttpServletRequest`对象,从而访问请求参数等信息。 #### 结果处理与页面跳转 **1. 结果返回** 在Struts 2中,`...
Struts 的工作机制是当 web 应用启动时就会加载初始化 ActionServlet,ActionServlet 从 struts-config.xml 文件中读取配置信息,把它们存放到各种配置对象。 2. 为什么要使用 Struts? 使用 Struts 可以使开发...
- **一级缓存**:每个Session内部有自己的缓存,关闭Session时缓存自动清除,是默认开启的。 - **二级缓存**:独立于Session,需要额外配置,可以跨Session共享数据,但默认不开启。 3. **Hibernate查询方式**: ...
在"cn.zip_Exitservlet_Struts 管理系统"中,ExitServlet可能负责清除用户的会话状态,释放资源,以及执行一些安全相关的操作,如注销用户的登录状态,防止未授权访问。当用户完成操作或者选择退出时,ExitServlet被...
一级缓存是每个Session内置的,随Session关闭而清除;二级缓存是可选的,独立于Session,用于提高性能,但需额外配置。 5. Hibernate的查询方式: 包括本地SQL查询、Criteria API和HQL(Hibernate查询语言),提供...
Struts是一个基于MVC模式的开源Web框架,用于构建动态网页应用。它通过将模型(Model)、视图(View)和控制器(Controller)分离来简化应用结构,提高可维护性和可扩展性。在Struts中,用户请求由控制器(Action...
一级缓存是每个Session内部的缓存,随Session关闭而清除。二级缓存是独立于Session的,需要手动配置并开启,可以跨Session共享数据。 5. **Hibernate的查询方式**: 包括本地SQL查询、Criteria API和HQL...
Struts是一个MVC框架,其工作流程涉及ActionServlet、ActionMapping、ActionForm、表单验证、Action执行和ActionForward。使用Struts可以规范项目结构,简化MVC组件间的交互,便于学习和维护。 8. **为何使用...
- 一级缓存:每个Session内部的缓存,随Session关闭而清除。 - 二级缓存:独立于Session,可配置开启,用于跨Session共享数据。 5. **Hibernate查询方式**: - 本地SQL查询、Criteria API和HQL(Hibernate Query...
Struts的工作机制是在应用启动时初始化ActionServlet,处理用户请求,匹配ActionMapping,处理ActionForm数据,进行表单验证,执行Action的execute方法,转发请求到ActionForward指定的JSP组件,最后生成动态网页。...
5. 在IDE中清理并重新构建项目,清除可能的缓存问题。 博客中提供的`MyEclipse_Struts.doc`文件可能包含了使用MyEclipse进行Struts框架开发的详细指南。Struts是一个基于MVC(Model-View-Controller)设计模式的...
一级缓存是每个Session内部的缓存,随Session关闭而清除。二级缓存是SessionFactory级别的,可跨Session共享,但默认不启用。 **查询方式**:包括本地SQL查询、Criteria API和HQL(Hibernate Query Language)。 *...
- 一级缓存是Session级别的,自动管理,事务完成后自动清除。 - 二级缓存可选,用于跨Session的数据共享,需注意数据一致性问题。 **查询方式**: - SQL:直接使用SQL查询。 - Criteria:面向对象的查询方式。 - ...