您的位置:首页 > 其它

实现任何页面静态化源码

2010-05-18 16:08 274 查看
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class HomeStaticAction extends Action {

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {

String sUrl = request.getParameter("sUrl"); //需要静态化的页面
String charset = request.getParameter("charset"); //编码
String sHtmlFile = request.getParameter("sHtmlFile");//静态化后页面的名称
String sSavePath = request.getSession().getServletContext().getRealPath("/"+"statichtml"); //静态化后的页面保存的路径
//String sSavePath = "E://cts//huajiao//WebRoot";
//System.out.println("sSavePath........."+sSavePath);
int HttpResult;
URL url = new URL(sUrl);
URLConnection urlconn = url.openConnection();
// 抽象类 URLConnection
// 是所有类的超类,它代表应用程序和 URL
// 之间的通信链接,通过在 URL 上调用
// openConnection 方法创建连接对象
urlconn.connect(); // 使用 connect 方法建立到远程对象的实际连接
HttpURLConnection httpconn = (HttpURLConnection) urlconn;
// 每个
// HttpURLConnection
// 实例都可用于生成单个请求,
// 但是其他实例可以透明地共享连接到
// HTTP 服务器的基础网络
HttpResult = httpconn. getResponseCode();
// getResponseCode可以从 HTTP
// 响应消息获取状态码
if (HttpResult != HttpURLConnection.HTTP_OK) {
} else {
InputStreamReader isr = new InputStreamReader(httpconn. getInputStream(),
charset);
BufferedReader in = new BufferedReader(isr);
//BufferedReader in = new BufferedReader(new UnicodeReader(in, Charset.defaultCharset().name());
String inputLine;
if (!sSavePath.endsWith("/")) {
sSavePath += "//";
}
FileOutputStream fout = new FileOutputStream(sSavePath + sHtmlFile);
while ((inputLine = in.readLine()) != null) {
//System.out.println(inputLine);
fout.write((inputLine+"/n").getBytes());
}

in.close();
fout.close();
}

String templateContent="";
FileInputStream fileinputstream=new FileInputStream(sSavePath+"/" + sHtmlFile);
int length=fileinputstream.available();
byte byts[]=new byte[length];
fileinputstream.read(byts);
fileinputstream.close();
templateContent=new String(byts);
// String a="/"";
// String b=".";
// String c="</jsp:include>";
// String ab="<jsp:include page="+a+"/jsp/index_html/online"+b+"jsp"+a+">"+c;
// templateContent=templateContent.replaceAll("<!--Online-->", ab);
FileOutputStream fileoutputstream=new FileOutputStream(sSavePath + sHtmlFile);
byte outbyte[]=templateContent.getBytes("utf-8");
fileoutputstream.write(outbyte);
fileoutputstream.close();

return mapping.findForward("success_html");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: