過濾器( 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 用於選擇陣列元素中滿足某種條件的元素。假設有乙個陣列,接著想要建立乙個新的陣列...