使用Filter實現靜態HTML緩衝

2021-08-21 23:10:40 字數 1057 閱讀 6301

緩衝是web應用中必須考慮的乙個提高效能的重要手段。對於基於jsp/servlet技術的站點,常用的緩衝有持久層的資料庫連線池緩衝,記憶體中的值物件緩衝,jsp頁面緩衝,以及各種各樣的緩衝框架等等,無不是為了提高系統的吞吐量。

然而對於大型站點來說,將jsp頁面轉換為靜態html也許是最高效的方法,特別適合於資料不經常變化但是頁面訪問量特別大的站點,如新聞等,通過把jsp動態頁面預先轉換為靜態html頁面,當使用者請求此頁面時,系統自動導向到對應的html頁面,從而避免解析jsp請求,呼叫後台邏輯以及訪問資料庫等操作所帶來的巨大開銷。

如何將乙個已有的jsp站點的動態jsp頁面轉化為靜態html呢?我們希望在不用更改現有servlet,jsp的前提下讓系統自動將這些jsp轉換為html頁。幸運的是,filter為我們提供了一種實現方案。

filter是servlet 2.2規範中最激動人心的特性。filter能過濾特定url如/admin/*並進行必要的預處理,如修改request和response,從而實現定製的輸入輸出。更強大的是,filter本身是乙個責任鏈模式,它能乙個接乙個地傳遞下去,從而將實現不同功能的filter串起來,並且可以動態組合。

要自動生成靜態頁面,用filter截獲jsp請求並先進行預處理,自動生成html,是個不錯的主意。乙個很容易想到的方法是在filter截獲request後,導向乙個servlet,在這個servlet中向本機傳送乙個http請求,然後將響應寫入乙個檔案:

注意要避免遞迴。

另乙個方法是不模擬http,而是定製response,把伺服器返回的jsp響應輸出到我們自己的response中,就可以將響應快速寫入html檔案,然後再傳送給客戶。而且,由於沒有http模擬請求,直接讀取伺服器響應速度非常快。

綜上:用filter實現html緩衝的步驟是:

使用這個方法的好處是不用更改現有的servlet,jsp頁,限制是,jsp頁面結果不能與session相關,需要登陸或使用者定製的頁面不能用這種方法緩衝。

**實現中......

使用HTTPCLIENT去生成靜態HTML頁面

一般生成html頁時,都會用比如freemarker等去搞,但今天看到和學到乙個還應該 不錯的方法,是使用httpclient的get方法,去讀某個動態的url,然後把讀出的內容再儲存成html的,下面例子介紹一下 public class htmlparser 根據模版及引數產生靜態頁面 publ...

linux使用apache發布靜態html網頁

環境 安裝1 檢查是否安裝和httpd 3 如果沒安裝 啟動httpd並驗證 接著在瀏覽器裡訪問linux主機的ip可以看到下面的頁面說明啟動成功 yum安裝的路徑一般在 etc httpd conf httpd.conf,自定義安裝的可以用find name httpd.conf找找。編輯配置檔案...

HTM 使用HTM進行異常檢測

如果你對htm感興趣,我建立了乙個群,我們共同學習交流。515743445。本文研究使用htm進行單變數的異常檢測,並嘗試復現了numenta的計程車異常檢測結果。numenta的異常檢測專案在這裡我們復現下的numentatm nyc taxi.csv的結果。建議先閱讀readme對nab有個基本...