相信到这里你可能已经知道怎么做了。是的,来个偷天换日,继承JspWriter类,然后实现其定义的虚函数,然后把out变量替换成你自己实现的类的实例就ok了。
JSP技术实现动态页面到静态页面的方案第二:
实现替换
假设
﹤%@ page language=java contentType=text/html;charset=GB2312 import=jwb.util.HtmlIntoFile,jwb.util.TempSinglet,java.io.File%﹥
﹤%
JspWriter outout_bak =out;String arg1=argument1;String filePath = /cache/根据参数生成文件名_ + arg1 + .html;
//首先判断文件是否已经存在,如果不存在则执行本页面,否则跳转到静态页面就OK了File f = new File(pageContext.getServletContext().getRealPath(filePath));
if(f.exists()){ out_bak.clear(); pageContext.forward(filePath); System.out.println(直接转到静态页面);
return;}out= new HtmlIntoFile(pageContext.getServletContext().getRealPath(filePath));out.write(﹤!--文件开始--﹥);
%﹥
﹤html﹥
﹤head﹥
﹤body﹥
﹤%= 看吧,这就是输出被重定向到文件的实现,很简单吧^_^%﹥
﹤/body﹥
﹤/head﹥
﹤/html﹥
﹤%
out.close();
//关闭生成的静态文件out_bak.clear();pageContext.forward(filePath);
System.out.println(执行本页面后再转到静态页面);return;
%﹥ |
JSP技术实现动态页面到静态页面的方案第三:
更新问题
下面就讨论一下如何更新生成静态文件,其实从上面实现中你可以看到,很简单的就是将生成的静态文件删除即可,至于什么时候删除,要看你的需求了。我能想到的几种情况如下
◆当用来生成页面的数据更新时
◆如果不需要很提供时时的数据可以定时更新
◆永远不更新
那么通过这个JSP技术实现动态页面到静态页面的方案,从动态页面到静态的转变就已经告一段落,你是否有点启发呢?