1 toHtml.java(不用修改,直接用) package com.jetsum.mystatic;
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 = request.getParameter("urls")!=null?request.getParameter("urls"):""; //url是要生成htm的jsp页面 String name = ""; response.setContentType("text/html;charset=gb2312"); ServletContext sc = getServletContext(); System.out.println("request.getRealPath"+request.getRealPath("")); name = request.getRealPath("") + "/index.htm"; /*生成htm页 位置在%服务器的根目录%/工程名/index.htm 例如:d:/tomcat5.0/webapp/studyteach/index.htm ,注意这里是在根目录生成,你可以生成后放到你想放的文件夹里,保证其它东西如图片的路径正确 这里就写成name = request.getRealPath("") + "/kszx/kszx.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>首页已经成功生成!</font></p>"); } } web.xml 中添加 <servlet> <servlet-name>tohtm</servlet-name> <servlet-class>com.jetsum.mystatic.toHtml</servlet-class> </servlet>
<servlet-mapping> <servlet-name>tohtm</servlet-name> <url-pattern>/web/tohtm</url-pattern> </servlet-mapping> 使用方法很简单 mytest.jsp(wwwroot下) <a href="web/tohtm?urls=/kszx/kszx.jsp">生成静态页</a> kszx.jsp为要生成htm的动态页 如果不在wwwroot下,在wwwroot/pp下 就要写成 <a href="../web/tohtm?urls=/kszx/kszx.jsp">生成静态页</a> |