abstract public void clearBuffer() throws IOException ;
abstract public void flush() throws IOException ;
abstract public void close() throws IOException ;
public int getBufferSize() ;
abstract public int getRemaining() ;
public boolean isAutoFlush() ;
}
我相信当我写到这里你可能已经知道我想怎么做了。是的,来个偷天换日,继承JspWriter类,然后实现其定义的虚函数,然后把out变量替换成你自己实现的类的实例就ok了。
2.实现替换
假设:
<%@ page language="java" contentType="text/html;charset=GB2312"
import="jwb.util.HtmlIntoFile,jwb.util.TempSinglet,java.io.File"%><%
JspWriter out_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;
%>
3.更新问题
下面就讨论一下如何更新生成静态文件,其实从上面实现中你可以看到,很简单的就是将生成的静态文件删除即可,至于什么时候删除,要看你的需求了。我能想到的几种情况如下:
当用来生成页面的数据更新时
如果不需要很提供时时的数据可以定时更新
永远不更新
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




