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