JSP產生靜態Html頁面

來源:互聯網
上載者:User

標籤:turn   dispatch   動態   stream   include   ppi   抓取   方便   tle   

【轉載】JSP產生靜態Html頁面

在網站項目中,為了訪問速度加快,為了方便百度爬蟲抓取網頁的內容,需要把jsp的動態網頁面轉為html靜態頁面。通常有2種常用的方式:

1.偽靜態,使用URL Rewriter

2.純靜態,本文中代碼實現的就是純靜態,Servlet實現。

代碼:

 

  1. import java.io.ByteArrayOutputStream;  
  2. import java.io.FileOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.OutputStreamWriter;  
  5. import java.io.PrintWriter;  
  6.   
  7. import javax.servlet.RequestDispatcher;  
  8. import javax.servlet.ServletContext;  
  9. import javax.servlet.ServletException;  
  10. import javax.servlet.ServletOutputStream;  
  11. import javax.servlet.http.HttpServlet;  
  12. import javax.servlet.http.HttpServletRequest;  
  13. import javax.servlet.http.HttpServletResponse;  
  14. import javax.servlet.http.HttpServletResponseWrapper;  
  15.   
  16. /** 
  17.  * @Description: jsp產生html頁面--使用 
  18.  * @author Alpha 
  19.  * @date 2015年9月17日 下午1:24:27 
  20.  * @version V1.0 
  21.  */  
  22. public class ToHtml extends HttpServlet {  
  23.   
  24.     private static final long serialVersionUID = -7294946376649752356L;  
  25.   
  26.     public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
  27.   
  28.         ServletContext sc = getServletContext();//為你的應用的上下文路徑。  
  29.   
  30.         String fileName = request.getParameter("fileName");// 你要訪問的jsp  
  31.         // 則你訪問這個servlet時加參數.如http://localhost/test/toHtml?fileName=index  
  32.         String url = "/" + fileName + ".jsp";// 你要產生的頁面的檔案名稱。副檔名為jsp  
  33.         String name = sc.getRealPath("/") + fileName + ".html";// 這是產生的html檔案名稱  
  34.   
  35.         RequestDispatcher rd = sc.getRequestDispatcher(url);  
  36.   
  37.         final ByteArrayOutputStream os = new ByteArrayOutputStream();  
  38.   
  39.         final ServletOutputStream stream = new ServletOutputStream() {  
  40.             public void write(byte[] data, int offset, int length) {  
  41.                 os.write(data, offset, length);  
  42.             }  
  43.   
  44.             public void write(int b) throws IOException {  
  45.                 os.write(b);  
  46.             }  
  47.         };  
  48.   
  49.         final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));  
  50.   
  51.         HttpServletResponse rep = new HttpServletResponseWrapper(response) {  
  52.             public ServletOutputStream getOutputStream() {  
  53.                 return stream;  
  54.             }  
  55.   
  56.             public PrintWriter getWriter() {  
  57.                 return pw;  
  58.             }  
  59.         };  
  60.           
  61.         rd.include(request, rep);  
  62.         pw.flush();  
  63.           
  64.         FileOutputStream fos = new FileOutputStream(name); // 把jsp 輸出的內容寫到xxx.html  
  65.         os.writeTo(fos);  
  66.         fos.close();  
  67.           
  68.         PrintWriter out = response.getWriter();  
  69.         out.print("SUCCESS");  
  70.           
  71.     }  
  72. }  

web.xml 配置:

 

 

  1. <!-- 產生靜態頁面 -->  
  2.     <servlet>  
  3.         <servlet-name>jspToHtmlServlet</servlet-name>  
  4.         <servlet-class>com.alpha.servlet.ToHtml</servlet-class>  
  5.     </servlet>  
  6.     <servlet-mapping>  
  7.         <servlet-name>jspToHtmlServlet</servlet-name>  
  8.         <url-pattern>*.2html</url-pattern>  
  9.     </servlet-mapping>  



產生方法:

 

http://localhost:8080/test/idnex.2html?fileName=index 產生首頁

JSP產生靜態Html頁面

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.