在用户第一次访问一个动态页面的时候将该动态页面保存为一个静态页面,当有用户再次访问该动态页面时只需要将保存的静态页面展示给用户即可.
这样可以减少服务器解释jsp代码的次数.
1、编写一个实现 Filter 接口的类,这个类命名为 CacheFilter.java
2、修改web.xml添加Cache Filter的配置参数,将jsp的过滤类指向 CacheFilter 类。
3、在 CacheFilter 类中获取请求,如果请求为需要缓存页面,首先先判断是否被缓存过,如果没有被缓存过便将请求的页面保存为静态页面文件。最后从文件中读取静态页面并写入请求的响应里。重复本次操作进行其它页面的缓存。
原理如上所诉,很简单
为了方便,在实现中使用了网上的 jspbook 包,对包中的程序进行了修改,具体实现步骤如下:
1、下载 jspbook 包,地址: http://onjava.com/onjava/2003/11/19/examples/jspbook.zip
2、解压缩 jspbook 包,修改 CacheFilter 类 和 CacheResponseWrapper 类。
CacheFilter 类
69行:name = name.substring(0,name.lastIndexOf("/")==-1?0:name.lastIndexOf("/"));
改为:String filesp = System.getProperty("file.separator");
name = name.substring(0, name.lastIndexOf(filesp) == -1 ? 0 : name.lastIndexOf(filesp));//修改 获得系统文件夹符号(源程序作者应该是外国人没有考虑中文符号)
75行:wrappedResponse.flushBuffer();// 增加 强制刷新
CacheResponseWrapper 类
35行:stream.flush();
改为: writer.flush();
3、建立动态web项目,建立com.jspbook包,将修改好的jspbook包中的类加入该包下面
4、将jspbook包中的jsp文件拷入web目录下
5、修改web.xml文件,下面是我写的项目的配置文件,请重点看带 filter 的标签
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns=" http://java.sun.com/xml/ns/j2ee" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>
JSP2HTML</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- The Cache Filter -->
<filter>
<!-- 设计过滤处理类,生成静态页面 -->
<filter-name>CacheFilter</filter-name>
<filter-class>com.jspbook.CacheFilter</filter-class>
<!-- 不需要缓存的URL -->
<init-param>
<param-name>/TimeMonger.jsp</param-name>
<param-value>nocache</param-value>
</init-param>
<init-param>
<param-name>/TestCache.jsp</param-name>
<param-value>nocache</param-value>
</init-param>
<!-- 缓存超时时间, 单位为秒 -->
<init-param>
<param-name>cacheTimeout</param-name>
<param-value>600</param-value>
</init-param>
<!-- 是否根据浏览器不同的地区设置进行缓存(生成的缓存文件为 test.jspid=1_zh_CN 的格式) -->
<init-param>
<param-name>locale-sensitive</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<!-- 设置需要缓存的 URL, 可以使用通配符, 如 /*.jsp, 或者加入多个映射地址 -->
<!--
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>/news.jsp</url-pattern>
</filter-mapping>
-->
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
</web-app>
6、配置web环境,运行web应用,你会发现由于 TestCache.jsp 和 TimeMonger.jsp 被配置成为 nocache 所以每次都回被重新加载。
<init-param>
<param-name>/TimeMonger.jsp</param-name>
<param-value>nocache</param-value>
</init-param>
其它的jsp页面会被保存成为静态文件,然后将静态文件返回给请求的响应。
<filter-mapping>
<filter-name>CacheFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
具体的缓存保存路径,请查找 CacheFilter 类 中53行的 String temp = tempDir.getAbsolutePath();
分享到:
相关推荐
动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html页面动态Jsp页面转换成静态Html...
jsp页面转换成静态页面 jsp页面转换成静态页面
本压缩包"动态Jsp页面转换成静态Html页面.zip"可能包含了一个工具或教程,用于帮助开发者将动态JSP页面转换为静态HTML页面,以提高网站性能、降低服务器负载或优化SEO。 首先,我们需要理解动态JSP页面的工作原理。...
1. **手动转换**:可以手动复制JSP页面的HTML内容,创建新的HTML文件,然后替换动态内容为静态数据。 2. **工具自动化转换**: - 使用专门的工具,如Apache Cocoon、FreeMarker等,它们能根据模板自动生成静态HTML...
把html页面转换为jsp页面工具java代码生成工具
然而,随着前端技术的发展,更多的应用倾向于采用单页应用(SPA)模式,这通常需要将后端渲染的JSP页面转换为静态HTML文件。这种转换可以提高页面加载速度,减少服务器负载,并优化SEO。 JSP到HTML的转换主要涉及...
本文主要讲述了如何使用JSP页面调用Applet实现人民币的大小写转换。该实现方法通过在JSP页面中嵌入一个Applet,使用JavaScript与Applet进行交互,实现实时的人民币大小写转换。 一、JSP页面调用Applet的实现 在JSP...
本实例是关于如何将JSP(Java Server Pages)页面转换为HTML静态页面的过程,这对于提升用户体验和降低服务器压力具有重要意义。 首先,我们来理解JSP和HTML的区别。JSP是一种动态网页技术,它允许开发者在HTML代码...
jsp转换成html的若干方法,不同的代码,不同的实现,通过过虑器是一种方案,通过jsp也可以
在IT行业中,将设计稿如PSD(Photoshop Document)或者其他静态资源如JSP(JavaServer Pages)转换为HTML页面是开发过程中一个重要的步骤。这个过程通常被称为前端开发或者页面重构,它涉及到将设计师的作品转化为...
在IT行业中,网页开发是一项重要的工作,而"jsp文件转换成htm文件.zip"这个压缩包提供的工具或教程可能就是帮助开发者实现将基于Java Server Pages (JSP) 的动态网页转换为静态HTML(HTM)文件的过程。这个转换过程...
6. **后续请求处理**:对于后续相同的请求,Filter可以直接在第一步发现静态页面存在,然后直接forward到静态HTML,避免再次执行JSP页面。 这种方法的优点在于,它可以在不修改现有Servlet和JSP代码的情况下提升...
然而,为了提高网站的搜索引擎优化(SEO),有时我们需要将JSP文件转换为静态HTML文件。这是因为搜索引擎爬虫通常更易于理解和索引静态内容,而JSP等动态页面可能在抓取和解析时遇到困难。下面我们将详细讨论如何...
在JSP中,将动态页面转换为静态页面是一种常见的优化技术,主要目的是提高网站的访问速度和降低服务器负载。动态页面通常需要服务器端执行代码,而静态页面则可以直接由Web服务器提供,无需额外的处理。以下是一些...
【标题】"jsp页面人力资源管理系统静态页面"涉及的是基于JavaServer Pages(JSP)技术构建的人力资源管理系统的前端部分。JSP是一种动态网页开发技术,它允许开发者将HTML、CSS、JavaScript等静态内容与Java代码相...
10. **JSP预编译**:默认情况下,JSP页面在首次请求时会被编译成Servlet。如果项目中有很多JSP页面,这可能导致首次访问时加载较慢。开启JSP的预编译功能可以提前处理这个过程,提升首次加载速度。 综上所述,解决...
- **预编译**:使用`jspc`命令或类似工具将JSP页面预先编译成Java类,然后生成HTML文件。这在部署时完成,生成的HTML文件可直接发布。 - **动态生成**:在用户首次访问JSP页面时,服务器动态生成HTML并存储,后续...
1. JSP文件首先被转换成Java源代码(`.java`文件)。 2. Java源代码编译成字节码(`.class`文件)。 3. Tomcat服务器执行字节码文件,处理JSP中的动态内容,然后将结果发送给浏览器。 4. 浏览器接收并展示静态HTML和...