用servlet將JSP轉換為靜態頁面
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="";
????String?name="";
????
????????ServletContext?sc?=?getServletContext();
????????
????????String?file_name=request.getParameter("file_name");// 你要訪問的 jsp 文件 , 如 index.jsp
??// 則你訪問這個 servlet 時加參數 . 如 http://localhost/toHtml?file_name=index
????????url?=?"/"+file_name+".jsp";// 這是你要生成 HTML 的 jsp 文件 , 如
???????????????????????????????????//http://localhost/index.jsp 的執行結果 .
????????name="/home/resin/resin-
????????????????
????????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> 首頁已經成功生成! Andrew</font></p>");
????}
}
posted on 2006-05-31 16:18 ZengChang 閱讀(588) 評論(2) 編輯 收藏 所屬分類: 學習筆記