TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
用Servlet将jsp文件内容转为HTML。代码如下: package examples;
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 {
- private static final String CONTENT_TYPE = "text/html; charset=GBK";
- // Initialize global variables
- public void init() throws ServletException {
- }
-
- // Process the HTTP Get request
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- response.setContentType(CONTENT_TYPE);
- service(request, response);
- /**
- * 只有成功初始化后此方法才能被调用处理用户请求。前一个参数提供访问初始请求数据的方法和字段,
- * 后一个提供servlet构造响应的方法。
- */
- }
- // Process the HTTP Post request
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- doGet(request, response);
- }
- public void destroy() {
- }
- public void service(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
-
- ServletContext sc = getServletContext();
- String url = "/index.jsp";
-
- String name = "index.htm"; // 这是生成的html文件名
-
- String pName = "e:\Tomcat 5.5\webapps\jspTohtml\index.htm"; // 生成html的完整路径
- 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(pName); // 把jsp输出的内容写到指定路径的htm文件中
- os.writeTo(fos);
- fos.close();
- response.sendRedirect(name); // 书写完毕后转向htm页面
- }
- }
- 在web.xml文件中配置:
- <servlet>
- <servlet-name>Tohtml</servlet-name>
- <servlet-class>examples.ToHtml</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>Tohtml</servlet-name>
- <url-pattern>/Tohtml</url-pattern>
- </servlet-mapping>
- 下面是用来测试的index.jsp:
- <%@ page contentType="text/html; charset=gb2312" %>
- <html>
- <head>
- <title>Cache Filter Test</title>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
- </head>
- <body>
- 简单测试:s=
- <%
- int s=0;
- // mock time-consuming code
- for (int i=0;i<1000;i++) {
- for (int j=0;j<1000;j++) {
- s=s+j;
- }
- }
- out.print(s);
- %>
- </body>
- </html>
- 效果图:
- [img]http://img.javaxxz.com/2014/10/1/213009875.jpg[/img]
复制代码
源码下载:http://file.javaxxz.com/2014/10/1/213010312.zip |
|