大家跟著做就可以了,這個代碼還可以在修改讓他傳遞個文件名稱,生成文件,按照傳遞的參數(shù)實現(xiàn)文件名稱,大家自己修改下
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頁 位置在%服務(wù)器的根目錄%/工程名/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輸出的內(nèi)容寫到xxx.htm
os.writeTo(fos);
fos.close();
PrintWriter out =
response.getWriter();
out.print("<p align=center><font size=3
color=red>首頁已經(jīng)成功生成!</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">生成靜態(tài)頁</a>
kszx.jsp為要生成htm的動態(tài)頁
如果不在wwwroot下,在wwwroot/pp下
就要寫成
<a
href="../web/tohtm?urls=/kszx/kszx.jsp">生成靜態(tài)頁</a>