首頁  >  文章  >  Java  >  什麼是過濾器?

什麼是過濾器?

青灯夜游
青灯夜游原創
2020-07-28 12:06:542601瀏覽

什麼是過濾器?

過濾器是一個程序,它先於與之相關的servlet或JSP頁面運行在伺服器上。過濾器可附加到一個或多個servlet或JSP頁面上,並且可以檢查進入這些資源的請求資訊。

在這之後,過濾器可以作如下的選擇:

①以常規的方式呼叫資源(即,呼叫servlet或JSP頁面)。

②利用修改過的請求資訊呼叫資源。

③呼叫資源,但在傳送回應到客戶機前對其進行修改。

④阻止該資源調用,代之以轉到其他的資源,返回一個特定的狀態代碼或產生替換輸出。

過濾器的工作原理

在Servlet作為過濾器使用時,它可以對客戶的請求進行處理。處理完成後,它會交給下一個過濾器處理,這樣,客戶的請求在過濾鏈中逐一處理,直到請求發送到目標為止。例如,某網站裡有提交「修改後的註冊資訊」的網頁,當使用者填寫完修改資訊並提交後,伺服器在進行處理時需要做兩項工作:判斷客戶端的會話是否有效;對提交的資料進行統一編碼。這兩項工作可以在由兩個過濾器組成的過濾鏈中處理。當過濾器處理成功後,把提交的資料傳送到最終目標;如果過濾器處理不成功,將把視圖派發到指定的錯誤頁面。

過濾器的生命週期

public void init(FilterConfig filterConfig) throws ServletException;//初始化

和我們寫的Servlet程式一樣,Filter的建立和銷毀由WEB伺服器負責。 web 應用程式啟動時,web 伺服器將建立Filter 的實例對象,並呼叫其init方法,讀取web.xml配置,完成對象的初始化功能,從而為後續的使用者請求作好攔截的準備工作(filter對像只會建立一次,init方法也只會執行一次)。開發人員透過init方法的參數,可取得代表目前filter配置資訊的FilterConfig物件。

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException;//拦截请求

這個方法完成實際的過濾操作。當客戶要求存取與過濾器關聯的URL的時候,Servlet過濾器將先執行doFilter方法。 FilterChain參數用於存取後續過濾器。

public void destroy();//销毁

Filter物件建立後會駐留在內存,當web應用移除或伺服器停止時才銷毀。在Web容器卸載 Filter 物件之前被呼叫。此方法在Filter的生命週期中僅執行一次。在這個方法中,可以釋放過濾器使用的資源。

推薦教學:《java教學

以上是什麼是過濾器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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