静态化页面

package com.zph.util;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.nio.charset.Charset;
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;

/**
 * @author shaevel
 * 该方法只能静态化本应用的动态页面
 *
 */
public class TestToHtml extends HttpServlet {
 private static final long serialVersionUID = -8637885029101603118L;
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws IOException, ServletException {
  
  Charset cs = Charset.forName("UTF-8");  //设置生成文件的字符集
  
  String url = "";
  String name = "";
  ServletContext sc = getServletContext();
  String file_name = request.getParameter("file_name");// 你要访问的jsp文件,如index.jsp
  // 则你访问这个servlet时加参数.如http://localhost/toHtml?file_name=index
  url = "/" + file_name + ".jsp?id=zhang&m=13425109339";// 这是你要生成wml的jsp文件
  name = "E://1.wml";// 这是生成的wml文件??,如index.wml.
  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,cs));
  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(name); // 把jsp输出的内容写到xxx.wml
  os.writeTo(fos);
  fos.close();
  PrintWriter out = response.getWriter();
  out.print("<p align=center><font size=3 color=red>successfully??</font></p>");
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws IOException, ServletException {
  doGet(request, response);
 }
}

posted on 2009-09-19 00:06 张平辉 阅读(424) 评论(0)  编辑  收藏 所属分类: JAVA


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

留言簿

文章分类

文章档案

搜索

最新评论