Servlet之過濾器Filter

2021-08-21 16:27:03 字數 1490 閱讀 8176

過濾器( filter)即是對資料等的過濾,預處理過程。為什麼要引入過濾器呢?在平常訪問**的時候,有時候發一些敏感的資訊,發出後顯示時就會將敏感資訊用*等字元替代,這就是用過濾器對資訊進行了處理。這只是乙個簡單的例子,當然,過濾器那麼強大,它的功能也不可能侷限於此,它不僅能預處理資料,只要是傳送過來的請求它都是可以預處理的;同時,它還可以對伺服器返回的響應進行預處理。這樣,大大減輕了伺服器的壓力。例如,實現url級別的許可權訪問控制統一編碼過濾敏感詞彙壓縮響應資訊等一些高階功能。

在乙個web應用中,可以編寫多個filter,這些filter組合起來稱之為乙個filter鏈(filterchain)

web伺服器根據filter在web.xml檔案中的

註冊順序,決定先呼叫哪個filter,當第乙個filter的dofilter方法被呼叫時,web伺服器會建立第乙個代表filter鏈的filterchain物件傳遞給該方法。在dofilter方法中,開發人員如果呼叫了filterchain物件的dofilter方法,則web伺服器會檢查filterchain物件中是否還有filter,如果有則呼叫第二個filter,如果沒有則呼叫目標資源。 

init()方法:初始化引數,在建立filter時自動呼叫。當我們需要設定初始化引數的時候,可以寫到該方法中

dofilter()方法:攔截到要執行的請求時,dofilter就會執行。這裡面寫我們對請求和響應的預處理

destroy()方法:在銷毀filter時自動呼叫

filter的建立和銷毀由web伺服器控制

(1)伺服器啟動的時候,web伺服器建立filter的例項物件,並呼叫其init方法,完成物件的初始化功能。filter物件只會建立一次,init方法也只會執行一次

(2)攔截到請求時,執行dofilter方法,可以執行多次,

(3)伺服器關閉時,web伺服器銷毀filter的例項物件

public class encodingfilter implements filter

public void dofilter(servletrequest request, servletresponse response,

filterchain chain) throws ioexception, servletexception

@override

public void destroy()

}

encoding

com.mark.demo.filter.encodingfilter

charset

utf-8

/*

JavaWeb之過濾器

對使用者請求進行統一認證 編碼轉換 對使用者傳送的資料進行過濾替換 轉換影象格式 對響應的內容進行壓縮 過濾器是乙個伺服器端的元件,它可以擷取使用者端的請求與響應資訊,並對這些資訊進行過濾。4.1 servlet 2.5request 使用者直接訪問頁面時,web容器將會呼叫過濾器 forward ...

HBase之過濾器

過濾器的型別很多,但是可以分為兩大類 比較過濾器,專用過濾器 過濾器的作用是在服務端判斷資料是否滿足條件,然後只將滿足條件的資料返回給客戶端 hbase 的基本 api,包括增 刪 改 查等。增 刪都是相對簡單的操作,與傳統的 rdbms 相比,這裡的查詢操作略顯蒼白,只能根據特性的行鍵進行查詢 g...

Swift之過濾器 filter

swift 提供了很多方便的函式來運算元組,比如 filter,map,reduce,flatmap 等.今天我們了解一下 filter 顧名思義 就是用來過濾的,這是 swift 為每個陣列提供的乙個新式 filter 用於選擇陣列元素中滿足某種條件的元素。假設有乙個陣列,接著想要建立乙個新的陣列...