动态页面jsp转换为html静态的网页

package SystemTools;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class UrlToHtml extends  HttpServlet  {
private static final long serialVersionUID = -3616674121206024906L;

//public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  public void jsptohtml(HttpServletRequest request, HttpServletResponse response )throws ServletException, IOException{
//  String bh=request.getParameter("bh");           
ServletContext sc = getServletContext();
String url = "www.163.com"; // jsp的路径
RequestDispatcher rd = sc.getRequestDispatcher(url);
final ByteArrayOutputStream os = new ByteArrayOutputStream();
final ServletOutputStream stream = new ServletOutputStream() {
public void write(byte[] data, int offset, int length) {
os.write(data, offset, length);
}

public void write(int b) throws IOException {
os.write(b);
}
};
final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
HttpServletResponse rep = new HttpServletResponseWrapper(response) {
public ServletOutputStream getOutputStream() {
return stream;
}

public PrintWriter getWriter() {
return pw;
}
};
rd.include(request, rep);

pw.flush();

FileOutputStream fos = new FileOutputStream("d:\\index.html"); // 把jsp输出的内容写到d:\test.htm
os.writeTo(fos);
fos.close();
}

}


------------------------------------------------------------------------------------------------------------------------------------

一段将网页静态化的JAVA代码



  • import java.io.BufferedReader;
  • import java.io.FileOutputStream;
  • import java.io.IOException;
  • import java.io.InputStreamReader;
  • import java.net.HttpURLConnection;
  • import java.net.URL;
  • import java.net.URLConnection;
  • /**
  •  * 一段将网页静态化的代码。
  •  * 
  •  * @author 老紫竹 JAVA世纪网(java2000.net)
  •  * 
  •  */
  • public class Test {
  •   /**
  •    * 将信息转化为静态html
  •    * 
  •    * @param sUrl
  •    *          动态信息访问URL
  •    * @param charset
  •    *          编码类型
  •    * @param sSavePath
  •    *          存储为静态文件的目录
  •    * @param sHtmlFile
  •    *          生成的静态文件名,可以按信息的唯一ID+.html命名
  •    * @throws IOException
  •    */
  •   public static void convert2Html(String sUrl, String charset,
  •       String sSavePath, String sHtmlFile) throws IOException {
  •     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);
  •       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();
  •     }
  •   }
  •   public static void main(String[] args) throws IOException {
  •     Test ru = new Test();
  •     String filePath = ru.getClass().getResource(".").getPath().toString(); // 取得项目根目录
  •     convert2Html("http://www.java2000.net/""UTF-8", filePath + "/",
  •         "aaaa.htm");
  •   }
  • }


    评论:这样的效果是不错,61行这样写静态页面代码看起来格式才一模一样。fout.write((inputLine+"\r\n").getBytes());

  • 你可能感兴趣的:(动态页面jsp转换为html静态的网页)