用servlet将jsp文件内容转为htm

本文介绍了如何使用Servlet将JSP文件的内容转换为HTML。通过Servlet的RequestDispatcher和ServletOutputStream,实现了从JSP到HTML的转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用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>

效果图:
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值