教你用servlet将jsp文件内容转为htmlJava认证考试
文章作者 100test 发表时间 2009:04:30 06:30:16
来源 100Test.Com百考试题网
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>.
更多优质资料尽在百考试题论坛 百考试题在线题库