Filter,過濾器,顧名思義,即是對數據等的過濾,預處理過程。為什么要引入過濾器呢?在平常訪問網站的時候,有時候發一些敏感的信息,發出后顯示時 就會將敏感信息用*等字符替代,這就是用過濾器對信息進行了處理。
推薦課程:Java教程。
這只是一個簡單的例子,當然,過濾器那么強大,它的功能也不可能局限于此,它不僅能預處 理數據,只要是發送過來的請求它都是可以預處理的,同時,它還可以對服務器返回的響應進行預處理,這樣,大大減輕了服務器的壓力。例如,實現URL級別的 權限訪問控制、過濾敏感詞匯、壓縮響應信息等一些高級功能。下面來詳細介紹一下過濾器。
Filter 技術是servlet 2.3 新增加的功能。servlet2.3是sun公司于2000年10月發布的,它的開發者包括許多個人和公司團體,充分體現了sun公司所倡導的代碼開放性原則。在眾多參與者的共同努力下,servlet2.3比以往功能都強大了許多,而且性能也有了大幅提高。
1.概念
過濾作用,對從客戶端向服務器端發送的請求進行過濾,也可以對服務器端返回的響應進行處理。它使用戶可以改變一個request和修改一個 response.。Filter 不是一個servlet,它不能產生一個response,但是它能夠在一個request到達servlet之前預處理request,也可以在 response離開servlet時處理response。換句話說,filter其實是客戶端與servlet中間的一個傳遞者,并且它可以對要傳遞 的東西進行修改。
注意:過濾器是用來攔截請求和響應的,不能產生響應,而servlet是用來處理請求并產生響應的。
2.適用場合
實現URL級別的權限訪問控制,過濾敏感詞匯,壓縮響應信息等。
3.過濾器如何實現攔截
當客戶端發生請求后,在HttpServletRequest 到達Servlet 之前,過濾器攔截客戶的HttpServletRequest 。 根據需要檢查HttpServletRequest ,也可以修改HttpServletRequest 頭和數據。 在過濾器中調用doFilter方法,對請求放行。請求到達Servlet后,對請求進行處理并產生HttpServletResponse發送給客戶端。在HttpServletResponse 到達客戶端之前,過濾器攔截HttpServletResponse 。 根據需要檢查HttpServletResponse ,可以修改HttpServletResponse 頭和數據。最后,HttpServletResponse到達客戶端。
4.Filter接口
Servlet API提供了一個Filter接口,編寫的過濾器必須實現該接口。
5.Filter的生命周期
(1)Filter接口中有三個重要的方法。
init()方法:初始化參數,在創建Filter時自動調用。當我們需要設置初始化參數的時候,可以寫到該方法中。doFilter()方法:攔截到要執行的請求時,doFilter就會執行。這里面寫我們對請求和響應的預處理。destroy()方法:在銷毀Filter時自動調用。
(2)Filter的生命周期
Filter的創建和銷毀由web服務器控制。
服務器啟動的時候,web服務器創建Filter的實例對象,并調用其init方法,完成對象的初始化功能。filter對象只會創建一次,init方法也只會執行一次。攔截到請求時,執行doFilter方法??梢詧绦卸啻?。服務器關閉時,web服務器銷毀Filter的實例對象。
6.Filter對象——FilterConfig
用 戶在配置filter時,可以使用<init-param>為filter配置一些初始化參數,當web容器實例化Filter對象,調用其 init方法時,會把封裝了filter初始化參數的filterConfig對象傳遞進來。因此開發人員在編寫filter時,通過 filterConfig對象的方法,就可獲得:
String getFilterName():得到filter的名稱。String getInitParameter(String name): 返回在部署描述中指定名稱的初始化參數的值。如果不存在返回null.Enumeration getInitParameterNames():返回過濾器的所有初始化參數的名字的枚舉集合。public ServletContext getServletContext():返回Servlet上下文對象的引用。
7.過濾器鏈——FilterChain
一組過濾器對某些web資源進行攔截,那么這組過濾器就稱為過濾器鏈。過濾器的執行順序和<filter-mapping>有關(誰在前先執誰)。
感謝你能夠認真閱讀完這篇文章,希望小編分享filter指的是什么意思內容對大家有幫助,同時也希望大家多多支持本站,關注本站行業資訊頻道,遇到問題就找本站,詳細的解決方法等著你來學習!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
在金融危機期間,失業率普遍會急劇.上升,因此保住工作則是應對金融危機最好的辦法。有了工作,才會有穩定的薪酬收入,因此可以支付日常生活中最重要的開銷。在金融危機時期,房地產市場、股票市場和期貨市場都處于歷史最低點,在這一階段擁有現金資產就是最具有保障的。以下是如何應對金融危機的相關內容。伴隨著如今鮑威爾已經承認美聯儲正在討論如何縮減購債規模,期權和債市交易市場已經發出了市場預警信號。自金融危機爆發以...
(資料圖片)提起如何開通手機國際漫游大家在熟悉不過了,被越來越多的人所熟知,那你知道如何開通手機國際漫游嗎?快和小編一起去了解一下吧!1、登錄中國移動國際官網,選擇港澳臺業務專區,選擇漫游業務,根據需要選擇對應的業務,開通即可。2、還可以撥打10086,然后按照語音提示開通國際漫游即可。3、預付費用戶無需申請,默認開通港澳臺、馬來西亞、韓國、越南等地區和國家的國際漫游業務。4、后付費用戶可登錄中國...
(資料圖)隨著社會越來越發達,大家都選擇在網絡上汲取相關知識內容,比如cf歷史上第一個槍王是誰,為了更好的解答大家的問題,小編也是翻閱整理了相應內容,下面就一起來看一下吧!肖玉成,即CFxyc,CFPL第一季全明星槍王。CF肖玉成,河南洛陽人,穿越火線職業玩家,號稱“槍王”。是一名經驗豐富的CF職業玩家,與KK、林肯、白鯊等穿越火線名將齊名,擁有豐富的帶隊經驗,時時刻刻都是隊伍的核心,擁有無語倫比...