熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

JSP中把動態頁面轉換為靜態頁面

2013-11-15 12:17:02  來源: JSP教程 

  要自動生成靜態頁面用Filter截獲jsp請求並先進行預處理自動生成Html是個不錯的主意一個很容易想到的方法是在Filter截獲Request後導向一個Servlet在這個Servlet中向本機發送一個http請求然後將響應寫入一個文件

  URLConnection urlConn = URLConnectionopen(http://localhost/req);

  注意要避免遞歸

  另一個方法是不模擬http而是定制Response把服務器返回的JSP響應輸出到我們自己的Response中就可以將響應快速寫入Html文件然後再發送給客戶而且由於沒有http模擬請求直接讀取服務器響應速度非常快

  截獲Response的關鍵便是實現一個WrappedResponse讓服務器將響應寫入我們的WrappedResponse中這類似於一個代理模式Servlet x已經提供了一個WrappedResponse類我們只需要復寫其中的一些關鍵方法即可

  WrappedResponse實現了Response接口它需要一個Response作為構造函數的參數事實上這正是代理模式的應用WrappedResponse充當了代理角色它會將JSP/Servlet容器的某些方法調用進行預處理我們需要實現自己的方法

  綜上用Filter實現HTML緩沖的步驟是

   用Filter截獲請求如/ajsp?id=映射到對應的html文件名為/html/ajspid=htm

   查找是否有/html/ajspid=htm如果有直接forward到此html結束

   如果沒有實現一個WrappedResponse然後調用filterChain(request wrappedResponse)

   將返回的WrappedResponse寫入文件/html/ajspid=htm然後返回響應給用戶

   下一次用戶發送相同的請求時到第步就結束了

  使用這個方法的好處是不用更改現有的ServletJSP頁限制是JSP頁面結果不能與Session相關需要登陸或用戶定制的頁面不能用這種方法緩沖
 


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20639.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.