评论

收藏

[JSP] jsp生成静态页面的方法

开发技术 开发技术 发布于:2021-10-24 16:18 | 阅读数:531 | 评论:0

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 toHtml extends HttpServlet 
{ 
  public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
  { 
  String url=""; 
  String name=""; 
    ServletContext sc = getServletContext(); 
    String file_name=request.getParameter("file_name");//你要访问的jsp文件,如index.jsp 
  //则你访问这个servlet时加参数.如https://localhost/toHtml?file_name=index 
    url = "/"+file_name+".jsp";//这是你要生成HTML的jsp文件,如 
                   //https://localhost/index.jsp的执行结果. 
    name="/home/resin/resin-2.1.6/doc/"+file_name+".htm";//这是生成的html文件名,如index.htm. 
    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(name); //把jsp输出的内容写到xxx.htm 
    os.writeTo(fos); 
    fos.close(); 
    PrintWriter out=response.getWriter(); 
    out.print("<p align=center><font size=3 color=red>首页已经成功生成!Andrew</font></p>"); 
  } 
}
关注下面的标签,发现更多相似文章