package com.html;
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 HtmlDemo extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
this.doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException
{
RequestDispatcher dispatcher = this.getServletContext().getRequestDispatcher("/index.jsp");
final ByteArrayOutputStream byteos = new ByteArrayOutputStream();
final ServletOutputStream stream = new ServletOutputStream()
{
//只是处理字节流,而PrintWriter则是处理字符流,和
public void write(byte[] data, int offset, int length)
{
byteos.write(data, offset, length);
}
public void write(int b) throws IOException
{
byteos.write(b);
}
};
final PrintWriter printw= new PrintWriter(new OutputStreamWriter(byteos,"UTF-8")); //进行编码转换,当输出流从比特流转换为字符流的时候设置才是有效的。
HttpServletResponse rep = new HttpServletResponseWrapper(resp)
{
@Override
public ServletOutputStream getOutputStream() {
return stream;
}
@Override
public PrintWriter getWriter() {
return printw;
}
};
dispatcher.include(req, rep);
printw.flush();
FileOutputStream fileos = new FileOutputStream("/index_jsp.html", false); // 把jsp输出的内容写到xxx.htm
byteos.writeTo(fileos);
fileos.close();
}
}