什麼是過濾器?

2021-09-29 05:32:53 字數 1269 閱讀 2853

1.概念:

過濾器是乙個程式,它先於與之相關的servlet或jsp頁面執行在伺服器上。過濾器可附加到乙個或多個servlet或jsp頁面上,並且可以檢查進入這些資源的請求資訊。在這之後,過濾器可以作如下的選擇:

①以常規的方式呼叫資源(即,呼叫servlet或jsp頁面)。

②利用修改過的請求資訊呼叫資源。

③呼叫資源,但在傳送響應到客戶機前對其進行修改。

④阻止該資源呼叫,代之以轉到其他的資源,返回乙個特定的狀態**或生成替換輸出。

2.過濾器的工作原理

在servlet作為過濾器使用時,它可以對客戶的請求進行處理。處理完成後,它會交給下乙個過濾器處理,這樣,客戶的請求在過濾鏈裡逐個處理,直到請求傳送到目標為止。例如,某**裡有提交「修改的註冊資訊」的網頁,當使用者填寫完修改資訊並提交後,伺服器在進行處理時需要做兩項工作:判斷客戶端的會話是否有效;對提交的資料進行統一編碼。這兩項工作可以在由兩個過濾器組成的過濾鏈裡進行處理。當過濾器處理成功後,把提交的資料傳送到最終目標;如果過濾器處理不成功,將把檢視派發到指定的錯誤頁面。

3.過濾器的生命週期

public void init(filterconfig filterconfig) throws servletexception;//初始化

和我們編寫的servlet程式一樣,filter的建立和銷毀由web伺服器負責。 web 應用程式啟動時,web 伺服器將建立filter 的例項物件,並呼叫其init方法,讀取web.xml配置,完成物件的初始化功能,從而為後續的使用者請求作好攔截的準備工作(filter物件只會建立一次,init方法也只會執行一次)。開發人員通過init方法的引數,可獲得代表當前filter配置資訊的filterconfig物件。

public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception;//攔截請求

這個方法完成實際的過濾操作。當客戶請求訪問與過濾器關聯的url的時候,servlet過濾器將先執行dofilter方法。filterchain引數用於訪問後續過濾器。

public void destroy();//銷毀

filter物件建立後會駐留在記憶體,當web應用移除或伺服器停止時才銷毀。在web容器解除安裝 filter 物件之前被呼叫。該方法在filter的生命週期中僅執行一次。在這個方法中,可以釋放過濾器使用的資源。

什麼是過濾器模式 Filter

世界上並沒有完美的程式,但是我們並不因此而沮喪,因為寫程式就是乙個不斷追求完美的過程。意圖以不同的標準過濾一組物件,通過邏輯運算解耦組合。類圖 例項 static class person public person setname string name public string getgend...

什麼是布隆過濾器

本質上布隆過濾器是一種資料結構,比較巧妙的概率型資料結構 probabilistic data structure 特點是高效地插入和查詢,可以用來告訴你 某樣東西一定不存在或者可能存在 相比於傳統的 list set map 等資料結構,它更高效 占用空間更少,但是缺點是其返回的結果是概率性的,而...

vue 過濾器是使用

1.過濾器可以用在兩個地方使用 雙花括號插值和v bind表示式 2.你可以在乙個元件的選項中定義本地的過濾器 filters 3.在建立 vue 例項之前全域性定義過濾器 vue.filter capitalize function value new vue 注意 1.在上述例子中,capita...