实现任何页面静态化源码

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");
 }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘怀帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值