更新時間:2021-07-27 16:44:33 來源:動力節點 瀏覽1041次
Filter,過濾器,顧名思義,即是對數據等的過濾,預處理過程。為什么要引入過濾器呢?在平常訪問網站的時候,有時候發一些敏感的信息,發出后顯示時就會將敏感信息用*等字符替代,這就是用過濾器對信息進行了處理。
這只是一個簡單的例子,當然,過濾器那么強大,它的功能也不可能局限于此,它不僅能預處理數據,只要是發送過來的請求它都是可以預處理的,同時,它還可以對服務器返回的響應進行預處理,這樣,大大減輕了服務器的壓力。例如,實現URL級別的權限訪問控制、過濾敏感詞匯、壓縮響應信息等一些高級功能。下面來詳細介紹一下過濾器。
過濾作用,對從客戶端向服務器端發送的請求進行過濾,也可以對服務器端返回的響應進行處理。它使用戶可以改變一個request和修改一個response.。Filter不是一個servlet,它不能產生一個response,但是它能夠在一個request到達servlet之前預處理request,也可以在response離開servlet時處理response。換句話說,filter其實是客戶端與servlet中間的一個傳遞者,并且它可以對要傳遞的東西進行修改。
注意:過濾器是用來攔截請求和響應的,不能產生響應,而servlet是用來處理請求并產生響應的。
實現URL級別的權限訪問控制,過濾敏感詞匯,壓縮響應信息等。
當客戶端發生請求后,在HttpServletRequest到達Servlet之前,過濾器攔截客戶的HttpServletRequest。根據需要檢查HttpServletRequest,也可以修改HttpServletRequest頭和數據。在過濾器中調用doFilter方法,對請求放行。請求到達Servlet后,對請求進行處理并產生HttpServletResponse發送給客戶端。在HttpServletResponse到達客戶端之前,過濾器攔截HttpServletResponse。根據需要檢查HttpServletResponse,可以修改HttpServletResponse頭和數據。最后,HttpServletResponse到達客戶端。
Servlet API提供了一個Filter接口,編寫的過濾器必須實現該接口。
(1)Filter接口中有三個重要的方法。
init()方法:初始化參數,在創建Filter時自動調用。當我們需要設置初始化參數的時候,可以寫到該方法中。doFilter()方法:攔截到要執行的請求時,doFilter就會執行。這里面寫我們對請求和響應的預處理。destroy()方法:在銷毀Filter時自動調用。
(2)Filter的生命周期
Filter的創建和銷毀由web服務器控制。
服務器啟動的時候,web服務器創建Filter的實例對象,并調用其init方法,完成對象的初始化功能。filter對象只會創建一次,init方法也只會執行一次。攔截到請求時,執行doFilter方法。可以執行多次。服務器關閉時,web服務器銷毀Filter的實例對象。
用戶在配置filter時,可以使用為filter配置一些初始化參數,當web容器實例化Filter對象,調用其init方法時,會把封裝了filter初始化參數的filterConfig對象傳遞進來。因此開發人員在編寫filter時,通過filterConfig對象的方法,就可獲得:
String getFilterName():得到filter的名稱。String getInitParameter(String name):返回在部署描述中指定名稱的初始化參數的值。如果不存在返回null.Enumeration getInitParameterNames():返回過濾器的所有初始化參數的名字的枚舉集合。public ServletContext getServletContext():返回Servlet上下文對象的引用。
一組過濾器對某些web資源進行攔截,那么這組過濾器就稱為過濾器鏈。過濾器的執行順序和有關(誰在前先執誰)。
以上就是動力節點小編介紹的"Filter是什么意思",希望對大家有幫助,想了解更多可查看Filter過濾器。動力節點在線學習教程,針對沒有任何Java基礎的讀者學習,讓你從入門到精通,主要介紹了一些Java基礎的核心知識,讓同學們更好更方便的學習和了解Java編程,感興趣的同學可以關注一下。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習