首頁 >Java >java教程 >filter是什麼意思

filter是什麼意思

(*-*)浩
(*-*)浩原創
2019-05-14 15:46:2946284瀏覽

Filter的意思為“過濾器”,是處於客戶端與伺服器資源檔案之間的一道過濾網,在存取資源檔案之前,透過一系列的過濾器對請求進行修改、判斷等,把不符合規則的請求在中途攔截或修改;也可以對回應進行過濾,攔截或修改回應。

filter是什麼意思

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時,可以使用為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是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:什麼是javabean下一篇:什麼是javabean