1. 程式人生 > >javaWeb專案中的過濾器

javaWeb專案中的過濾器

何為過濾器:

過濾器是處於客戶端與伺服器資原始檔之間的一道過濾網,在訪問資原始檔之前,通過一系列的過濾器對請求進行修改、判斷等,把不符合規則的請求在中途攔截或修改。也可以對響應進行過濾,攔截或修改響應

                                          

過濾器中的三個主要方法:

1. doFilter(ServletRequest, ServletResponse, FilterChain):這是一個完成過濾行為的方法。這同樣是上游過濾器呼叫的方法。引入的FilterChain物件提供了後續過濾器所要呼叫的資訊。如果該過濾器是過濾器鏈中的最後一個過濾器,則將請求交給被請求資源。也可以直接給客戶端返回響應資訊。

2. init(FilterConfig):由Web容器來呼叫完成過濾器的初始化工作。它保證了在第一次doFilter()呼叫前由容器呼叫。您能獲取在 web.xml 檔案中指定的初始化引數。

3. destroy():由Web容器來呼叫來釋放資源,doFilter()中的所有活動都被該例項終止後,呼叫該方法

如何使用:

  1. 編寫一個過濾器的類實現Filter介面
  2. 實現介面中尚未實現的方法(著重實現doFilter方法)
  3. 在web.xml中進行配置(主要是配置要對哪些資源進行過濾)

XML配置:

url-pattern配置:

url-pattern主要有四種匹配方式

                      (a)精確匹配,就是填寫jap或Servlet等需要過濾的請求的具體地址,例如:/Filter/TestFilter

                      (b)擴充套件匹配,由“*”號和副檔名組成,例如*.jsp

                      (c)路徑字首匹配,包含一個目錄和一個/*   例如:/Servlet/*指的是對Servlet目錄下的所有資源進行過濾

                      (d)全部匹配,使用/*,指的是對所以資源都過濾   

使用Filter的好處:

        在Filter執行的整個過程中客戶端和目標資源是不知道過濾器的存在的。Filter提供的是一種宣告式的服務,即在不用在原程式上做任何修改,只需要編寫Filter,原程式想用Filter,只需要在XML檔案中宣告一下即可。他具有可插拔的能力,用的時候配上web.XML,不用的時候只需要修改web.xml,對整個系統沒有影響,這種宣告式的服務非常方便,也非常強大。

        其次,使用Filter進行控制業務也非常方便,比如驗證使用者是否登入,是否有操作許可權,判斷Session,字符集等,放到Filter裡,可以省去大量重複的程式碼和繁瑣的控制