使用JSP中的過濾器過濾包中的所有servlet
濾鏡的開發分兩步:1。寫java類實現Filter接口及其doFilter方法。2.使用web.xml文件中的和元素註冊編寫的篩選器類,並設置它可以截獲的資源。過濾器鏈在web應用程序中,您可以開發和編寫多個過濾器,這些過濾器組合在壹起稱為過濾器鏈。web服務器根據過濾器在web.xml文件中的註冊順序決定首先調用哪個過濾器。當調用第壹個過濾器的doFilter方法時,web服務器將創建壹個表示過濾器鏈的FilterChain對象,並將其傳遞給該方法。在doFilter方法中,如果開發者調用FilterChain對象的doFilter方法,web服務器會檢查FilterChain對象中是否還有壹個過濾器,如果有,則調用第二個過濾器,如果沒有,則調用目標資源。過濾器鏈實驗(見filterChainAPI文檔)過濾器部署-註冊filtertestfilerorg . test . testfiterword _ file/we b-INF/word . txt 1。它用於指定過濾器的名稱,該元素的內容不能為空。2.元素用於指定篩選器的完全限定類名。3.元素用於指定過濾器的初始化參數,其子元素指定參數的名稱和值。在篩選器中,可以使用FilterConfig接口對象來訪問初始化參數。元素用於設置篩選器負責攔截的資源。過濾器攔截的資源可以通過兩種方式指定:Servlet名稱和請求路徑資源訪問的子元素用於設置過濾器的註冊名稱。該值必須是元素中聲明的篩選器的名稱。設置過濾器攔截的請求路徑(與過濾器關聯的URL樣式)並指定過濾器攔截的Servlet名稱。指定Servlet容器如何調用過濾器截獲的資源,可以是REQUEST、INCLUDE、FORWARD和ERROR之壹,默認為REQUEST。用戶可以設置多個子元素來指定過濾器攔截資源的各種調用方法。子元素可以設置的值及其含義:請求:當用戶直接訪問頁面時,Web容器會調用過濾器。如果通過RequestDispatcher的include()或forward()方法訪問目標資源,則不會調用過濾器。include:如果通過RequestDispatcher的INCLUDE()方法訪問目標資源,將調用過濾器。此外,過濾器不會被調用。forward:如果通過RequestDispatcher的FORWARD()方法訪問目標資源,則調用過濾器,否則不調用過濾器。錯誤:如果通過聲明性異常處理機制調用目標資源,則將調用過濾器。此外,過濾器不會被調用。提示:部署過濾器-映射過濾器示例:test Filter/test . jsptestfilter/index . jsprequestforwardfilterconfig接口:在配置過濾器時,用戶可以為過濾器配置壹些初始化參數。當web容器實例化filter對象並調用其init方法時,封裝了過濾器初始化參數的filterconfig對象將被傳入。因此,開發人員在編寫過濾器時,可以通過filterConfig對象的方法獲得:StringgetFilterName():過濾器的名稱。stringgetititparameter(string name):返回在部署描述中指定名稱的初始化參數的值。如果不存在,則返回null。enumerationgetinitiparameternames():枚舉集,返回過濾器的所有初始化參數的名稱。PublicsServletContextgetServletContext():返回對servlet上下文對象的引用。