1. 程式人生 > >Filter過濾器

Filter過濾器

初始化 要求 str 什麽 應用 請求 工作原理 服務器端 處理

一 概述

1.什麽是過濾器?

過濾器是一個運行在Web服務器端的java應用程序,主要與Servlet配合使用,也可以與其他組件配合使用,用於在請求達到目標資源前對請求進行預處理,在響應到達客戶端前對響應做出處理。

2.Filter工作原理:

Web容器啟動時創建一個與Filter相關的Map集合,key值為Filter的urlPattern,value為Filter的引用變量,將請求uri與Map集合中的key逐個匹配,獲取匹配的引用變量,存放到數組中,從而形成過濾器鏈,然後執行。

3.生命周期

Filter的創建與銷毀由Web容器負責,容器啟動時創建Filer對象並初始化,只創建一次。在Web容器調用destroy方法後

銷毀,一般在服務器關閉時才銷毀。

二 過濾器的配置與執行

Filter有兩種註冊方式:在web.xml文件中配置與在源碼中註釋。其中采用源碼中註釋的方式,註冊分散在多個文件中,
各過濾器在過濾器鏈中的順序難以確定,如果對順序要求較高,必須采用配置的方式。

一個Web應用程序可以配置多個Filter,Filter在配置文件web.xml中從上往下配置的順序就是其在過濾器鏈中從前往後
的順序。請求時從過濾器鏈的前段開始執行,一個執行完畢執行下一個,直到到達目標資源。處理響應時逆向執行過濾器鏈,
即從最後一個開始執行。

如果同時采用了兩種方式註冊,那麽相當於存在兩個過濾器。

三 過濾的請求類型

不僅可以通過urlPattern或者servletName為過濾器指定過濾的請求,還可以為過濾器指定過濾的請求類型:
1.FORWARD:過濾器只對請求轉發中的forward起作用。
2.INCLUDE:過濾器只對請求轉發中的include起作用。
3.REQUEST:默認值過濾器對所用的請求都起作用。
4.ERROR:僅在請求處理過程中發生錯誤時起作用。

Filter過濾器