JSP中把动态页面转换为静态页面

要自动生成静态页面,用Filter截获jsp请求并先进行预处理,自动生成Html,是个不错的主意。一个很容易想到的方法是在Filter截获Request后,导向一个Servlet,在这个Servlet中向本机发送一个http请求,然后将响应写入一个文件:

URLConnection urlConn = URLConnection.open(http://localhost/req);

注意要避免递归。

另一个方法是不模拟http,而是定制Response,把服务器返回的JSP响应输出到我们自己的Response中,就可以将响应快速写入Html文件,然后再发送给客户。而且,由于没有http模拟请求,直接读取服务器响应速度非常快。

截获Response的关键便是实现一个WrappedResponse,让服务器将响应写入我们的WrappedResponse中。这类似于一个代理模式,Servlet 2.x已经提供了一个WrappedResponse类,我们只需要复写其中的一些关键方法即可。

WrappedResponse实现了Response接口,它需要一个Response作为构造函数的参数,事实上这正是代理模式的应用:WrappedResponse充当了代理角色,它会将JSP/Servlet容器的某些方法调用进行预处理,我们需要实现自己的方法。

综上:用Filter实现HTML缓冲的步骤是:

1. 用Filter截获请求,如/a.jsp?id=123,映射到对应的html文件名为/html/a.jspid=123.htm。

2. 查找是否有/html/a.jspid=123.htm,如果有,直接forward到此html,结束。

3. 如果没有,实现一个WrappedResponse,然后调用filterChain(request, wrappedResponse)。

4. 将返回的WrappedResponse写入文件/html/a.jspid=123.htm,然后返回响应给用户。

5. 下一次用户发送相同的请求时,到第2步就结束了。

使用这个方法的好处是不用更改现有的Servlet,JSP页,限制是,JSP页面结果不能与Session相关,需要登陆或用户定制的页面不能用这种方法缓冲。
 

时间: 2024-11-02 10:20:13

JSP中把动态页面转换为静态页面的相关文章

实例:JSP中把动态页面转换为静态页面

js|动态|静态|页面|转换 要自动生成静态页面,用Filter截获jsp请求并先进行预处理,自动生成Html,是个不错的主意.一个很容易想到的方法是在Filter截获Request后,导向一个Servlet,在这个Servlet中向本机发送一个http请求,然后将响应写入一个文件: URLConnection urlConn = URLConnection.open(http://localhost/req); 注意要避免递归. 另一个方法是不模拟http,而是定制Response,把服务器返

把动态页面变成静态页面--ISAPI_Rewrite针对IIS的解决方案

     静态页面对于搜索引擎的友好性是毋庸置疑的,但是,动态页面的优势对于站点维护的便利,论坛和其他需要程序控制的机制来说也是必需的.      我们除了可以用使用内容发布系统把页面发布为静态html格式以外,还有另外的选择.那就是静态--〉动态页面的映射.这里,Apache服务器上有一个非默认模块mod_Rewrite.使用了正则表达式方式,把动态页面转换为静态页面.这样我们就可以把me.asp?para=123映射成me/123.html这样的静态页面.当遇到me/123.html的请求时

JSP技术实现动态页面到静态页面的方法_JSP编程

本文是介绍了jsp技术实现动态页面到静态页面的方法,分享给大家,具体如下: 对于JSP技术实现动态页面到静态页面的方案,我们从三个步骤来说明: JSP技术实现动态页面到静态页面的方案第一: 为了能深入浅出的理解这个框架的由来,我们首先来了解一下JSP解析器将我们写的JSP代码转换成的JAVA文件的内容. 下面是一个JSP文件test.jsp ﹤%@ page language=java contentType=text/html;charset=GB2312 %﹥ ﹤% out.write(﹤!

thinkphp中的 s函数静态缓存 和 memcache动态缓存 和 静态页面 三者关系

问题描述 thinkphp中的 s函数静态缓存 和 memcache动态缓存 和 静态页面 三者关系 thinkphp中的 s函数静态缓存 和 memcache动态缓存 和 静态页面 这三者是什么关系呢?分不清. 知道s函数和memcache是缓存数据,静态页面是生成静态页面. 可是都生 成静态页面 了为什么还要 s函数和memcache的缓存数据 呢?

seo-网站当中动态页面和静态页面有何区别

问题描述 网站当中动态页面和静态页面有何区别 网站当中动态页面和静态页面有何区别 为什么说静态页面seo比较友好 解决方案 现在来说静态和动态没多大区别了,搜索引擎会处理.之前的是因为参数不好处理所以对seo有影响.做静态话服务器压力小点 解决方案二: 大网站都是伪静态,把动态网页转换为静态的,这样能减轻服务器的访问压力. 解决方案三: 可交互的页面称为动态页面,你发送一个请求,页面响应你.友好值得是让用户用起来舒服. 解决方案四: 动态的话的话,数据会一直变化. 对seo 而言,静态对seo

Asp.Net 动态页面转静态页面主要代码_实用技巧

一个是一个页面转换的类,该类通过静态函数Changfile()来实现,动态页面到静态页面的转换. 复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControl

JS+JSP通过img标签调用实现静态页面访问次数统计的方法_javascript技巧

本文实例讲述了JS+JSP通过img标签调用实现静态页面访问次数统计的方法.分享给大家供大家参考,具体如下: 测试页面: test.html   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>test</title> <meta http-equiv="pragma" conte

如何将aspx页面发布静态页面

问题描述 如何将aspx页面发布静态页面 解决方案 解决方案二:又是这样问题解决方案三:请帮忙解答一下吧,谢了.解决方案四:如何直接将.aspx页面直接生成静态页面.htm(转载)//请参考下面的例子voidPage_Load(){.Response.Charset="";this.EnableViewState=false;StringWritertw=newStringWriter();HtmlTextWriterwt=newHtmlTextWriter(tw);stringpat

彻底了解动态页面和静态页面的优缺点

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 一般说来网页的url地址有三种形式,静态形式,伪静态形式,动态形式.站长们都知道静态形式是最理想的网页形式,因为它对搜索引擎是最友好的,更容易被搜索引擎找到收录,静态网页地址是真实的,存在的而且静态形式的url地址也是最美观的,地址中没有一些变量特殊的符号,例如?.&.%等符号,这些符号给让的人感觉比较陌生,容易产生不信任感.伪静态形