用户退出后,如果点击浏览器上的后退按钮,Web应用将不能正确保护受保护的页面——在Session销毁后(用户退出)受保护的JSP页重新在浏览器中显示出来。然而,如果用户点击返回页面上的任何链接,Web应用将会跳转到登陆页面并提示Session has ended.Please log in.
阻止浏览器缓存
上述问题的根源在于大部分浏览器都有一个后退按钮。当点击后退按钮时,默认情况下浏览器不是从Web服务器上重新获取页面,而是从浏览器缓存中载入页面。基于Java的Web应用并未限制这一功能,在基于PHP、ASP和.NET的Web应用中也同样存在这一问题。
幸运的是,HTTP头信息“Expires”和“Cache-Control”为应用程序服务器提供了一个控制浏览器和代理服务器上缓存的机制。HTTP头信息Expires告诉代理服务器它的缓存页面何时将过期。HTTP1.1规范中新定义的头信息Cache-Control可以通知浏览器不缓存任何页面。当点击后退按钮时,浏览器重新访问服务器已获取页面。如下是使用Cache-Control的基本方法:
1) no-cache:强制缓存从服务器上获取新的页面
2) no-store: 在任何环境下缓存不保存任何页面
保险起见,对html页面和jsp最好都加一些设置对于HTM网页,加入:
<meta HTTP-EQUIV="pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<meta HTTP-EQUIV="expires" CONTENT="0">
然后,jsp页面中加入:
<%
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragrma","no-cache");
response.setDateHeader("Expires",0);
%>
就可以了
以上是我在做程序中测试出来的bug解决方法 ,是别人拷贝过来,不过鉴于此情况经常发生所以记录下来供别人和自己将来参考,在ie下测试有效,其他浏览器由于本机没有安装暂时不知道。其实asp和其他页面也可参考啊。
分享到:
相关推荐
#### 一、JSP页面缓存的重要性与应用场景 JSP(Java Server Pages)技术是一种结合了HTML、XML和Java编程的技术,用于创建动态网页。在JSP开发中,页面缓存是一种常用的技术手段,能够显著提升用户的访问速度并减轻...
### HTML与JSP页面缓存解决方案 在Web开发过程中,页面缓存问题一直是开发者们关注的重点之一。合理的页面缓存管理不仅可以提升用户体验,还可以减轻服务器压力。然而,在某些情况下,如模态窗口中的POSTBACK操作时...
总的来说,JSP页面缓存是一个提高Web应用性能的重要工具,尤其是在处理大量静态或半静态内容时。正确地实现和使用JSP页面缓存可以有效地降低服务器压力,提升用户体验。这个资源提供了一个基础的实现方案,对于理解...
这时可以考虑使用过滤器(Filter)来统一管理所有JSP页面的缓存控制。创建一个简单的过滤器如下: ```java public class NoCacheFilter implements Filter { @Override public void init(FilterConfig filterConfig...
3. 解析JSP:使用JSP的`RequestDispatcher.include()`或`JspRuntimeLibrary.include()`方法,将JSP页面包含进来并执行,得到HTML字符串。 4. 生成HTML:将HTML字符串写入到一个新文件中,文件名通常是JSP文件名加上....
#### 二、JSP页面缓存时间设定 在JSP页面中,可以通过以下几种方式来控制缓存时间: 1. **使用JSP指令**:在JSP页面顶部添加`<%@ page %>`指令,设置`cache`属性值来控制页面的缓存时间。例如: ```jsp ``` ...
本文将详细介绍几种JSP中清除页面缓存的常见方法。 一、清除页面缓存 在JSP页面中,可以通过设置HTTP响应头来禁止浏览器缓存页面。以下代码片段展示了如何在JSP中实现这一目标: ```jsp response.setHeader(...
除了通过Servlet设置HTTP头部之外,还可以在JSP页面中使用HTML元标签来控制缓存行为。 示例代码: ```html ``` 这些元标签的效果与通过Servlet设置HTTP头部相同。它们会覆盖任何通过HTTP响应头设置的缓存控制...
#### 使用`<meta>`标签禁用静态HTML页面缓存 对于静态HTML页面,可以在页面头部添加特定的`<meta>`标签来控制缓存行为。常见的方法包括使用`Pragma`或`Expires`等属性来设置: ```html , 23 Aug 2006 12:40:27 ...
在 Servlet 的 init() 方法中缓存一些静态的数据或完成一些只需要执行一次的、耗时的操作,可以大大地提高系统性能。例如,可以在 init() 方法中建立一个 JDBC 连接池,以避免每次 SQL 请求都要执行一次 JNDI 查询。...
当你遇到“jsp页面加载时提示loading”的问题时,这通常意味着页面正在加载或有延迟加载的情况发生。这个问题可能由多种因素导致,下面我们将详细探讨这些可能的原因及其解决方案。 1. **页面内容过多**:如果JSP...
综上所述,当遇到JSP页面图片上传成功但不刷新的情况,通过添加随机参数来避免浏览器缓存问题,是一种常见且有效的解决方案。开发者需要在实际操作过程中,注意细节的准确性,以保证程序的正确执行。
在Web开发中,JSP页面缓存是提升应用程序性能的重要手段。通过缓存,可以避免重复计算或从数据库中频繁读取数据,从而提高响应速度,减轻服务器负担。本篇文章将深入探讨JSP页面缓存的原理、实现方式以及如何清除...
综上所述,IE页面缓存问题的解决不仅仅依赖于一种方法,而是需要结合JSP、Servlet以及HTML中的多种策略。通过合理设置响应头和HTML元信息,可以有效地控制页面的缓存行为,确保用户始终能够接收到最新的数据和最准确...
然而,每次有用户请求JSP页面时,服务器都需要解析其中的Java代码,生成HTML并发送到客户端。这一过程会消耗服务器资源,尤其是在高并发情况下。 页面静态化则是将这些动态生成的HTML提前生成并存储,后续的请求...
2. **预编译JSP**:当检测到变化后,使用JSP的`jsp:include`或`jsp:forward`指令,将JSP页面预编译成Servlet,并执行这个Servlet来生成HTML内容。 3. **保存HTML**:将生成的HTML内容保存到文件系统,作为静态页面...
1. **预处理**:当一个JSP页面首次被请求时,JSP容器(如Tomcat)会将其转换为一个Servlet源代码文件。 2. **编译**:接着,这个Servlet源代码会被编译成字节码,并由JVM执行。 3. **生成HTML**:Servlet根据页面上...
* page指令:,用于指定JSP页面的编码方式、语言、缓存等属性。 * include指令:,用于将其他文件包含到当前JSP页面中。 二、脚本(Script) JSP脚本是一种Java语句或表达式,它可以嵌入到JSP页面中,从而实现动态...
- **预编译**:使用`jspc`命令或类似工具将JSP页面预先编译成Java类,然后生成HTML文件。这在部署时完成,生成的HTML文件可直接发布。 - **动态生成**:在用户首次访问JSP页面时,服务器动态生成HTML并存储,后续...