javaweb---過濾器(Filter)

1.1.過濾器概述

過濾器的基本功能就是對servlet容器調用servlet的過程進行攔截,從而在servlet進行響應處理的前後實現一些特殊的功能。

1.2.過濾器基本工作原理

servlet API一共定義了三個接口類來供開發人員編寫Filter程序,分別爲Filter、FilterChain、FilterConfig。與servlet程序相似,她也是由servlet容器來調用和執行的,Filter通常用來攔截瀏覽器的servlet請求,因爲不管請求的是什麼資源,最終web服務器都是以servlet程序的形式來運行的,例如,jsp要先被翻譯成servlet、靜態圖片和HTML文件是由默認的servlet負責處理的,所以,servlet通常就是Filter所要攔截的資源。效果圖如下:

1.3.過濾器鏈

過濾器鏈效果圖:

圖中可看出,過濾器鏈中的只要有任意一個Filter的沒執行FilterChain.doFilter方法,則目標方法就不會被執行。

1.4.Filter接口

①.概述

該接口定義了三個方法,init()、doFilter()、destroy()

②.init

在web應用程序啓動時,web服務器(web容器)將根據web.xml的配置信息來創建每個Filter的實例對象,並將其保存在內存中。web容器創建完Filter實例後,將立即調用該Filter對象的init方法。init方法在Filter的生命週期中只執行一次,Web容器在調用init方法時,會傳入一個包含Filter配置和運行環境信息的FilterConfig對象。如圖:

.doFilter

當一個Filter對象能夠攔截的訪問請求到達後,servlet容器將調用該Filter的doFilter方法,值得注意的是,只有當Filter鏈中的Filter的init方法執行完後,才能把請求交給這個Filter處理。

④.destroy

只有當容器卸裝Filter之前纔會執行這個方法,這個方法也只執行一次。

1.5.FilterChain接口

.過濾器鏈

1.6.FilterConfig接口

.Filter程序需要在web.xml文件中註冊,在註冊Filter程序時,還可以對設置其初始化參數,

普通的servlet程序一樣,Filter程序也很可能需要訪問servlet容器。servlet規範將代表servletContext對象和Filter的配置參數信息都封裝到一個稱爲FilterConfig對象中,FilterConfig接口必須對外提供獲取FilterConfig對象的方法,以便在Filter程序中可以調用這些方法來獲取ServletContext,以及獲取web.xml文件中爲Filter設置的友好名稱和初始化參數。

FilterConfig接口定義瞭如下的方法

getFilerName獲取Filter的友好名稱

getServletContext獲取上下文

getInitParameter獲取某個名稱的初始化參數值

getInitParameterNames獲取所有的參數名稱

1.7.Filter的高級應用




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章