黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

Filter過濾器

Filter過濾器簡介

ServletAPI中提供了一個Filter接口,開發web應用時,如果編寫的Java類實現了這個接口,則把這個java類稱之為過濾器Filter。

通過Filter技術,開發人員可以實現用戶在訪問某個目標資源之前,對訪問的請求和響應進行攔截。簡單說,就是可以實現web容器對某資源的訪問前截獲進行相關的處理,還可以在某資源向web容器返回響應前進行截獲進行處理。

下圖是filter調用關系的UML圖:

一個filter必須實現javax.servlet.Filter。

三個方法

1. voidsetFilterConfig(FilterConfig config) //設置filter 的配置對象;

2. FilterConfiggetFilterConfig() //返回filter的配置對象;

3. voiddoFilter(ServletRequest req,ServletResponse res,FilterChain chain) //執行filter的工作

Filter過濾器用法

在HttpServletRequest到達Servlet之前,攔截客戶的HttpServletRequest。

根據需要檢查HttpServletRequest,也可以修改HttpServletRequest頭和數據。

在HttpServletResponse到達客戶端之前,攔截HttpServletResponse。

根據需要檢查HttpServletResponse,也可以修改HttpServletResponse頭和數據。

Filter過濾器種類

用戶授權的Filter:Filter負責檢查用戶請求,根據請求過濾用戶非法請求。

日志Filter:詳細記錄某些特殊的用戶請求。

負責解碼的Filter:包括對非標準編碼的請求解碼。

Filter可攔截多個請求或響應;一個請求或響應也可被多個請求攔截。

Filter過濾器應用實例

創建一個Filter只需要兩個步驟:1.創建Filter處理類(如:MyFiletr)實現javax.servlet.Filter接口;2.web.xml中配置Filter

1、簡單的記錄日志的Filter,這個Filter負責攔截所符合條件的用戶請求,并將請求的信息記錄在日志中。

web.xml配置信息:

總結:上面的程序實現了doFilter()方法,實現該方法就可以實現對用戶請求進行預處理,也可以實現對服務器響應進行后處理--他們的分界線為是否調用了chain.doFilter(),執行該方法之前,即對用戶請求進行預處理;執行該方法之后,即對服務器響應進行后處理。

在上面的請求Filter中,僅在日志中記錄請求的URL,對所有的請求都執行chain.doFilter (request,reponse)方法,當Filter對請求過濾后,依然將請求發送到目的地址。如果需要檢查權限,可以在Filter中根據用戶請求的HttpSession,判斷用戶權限是否足夠。如果權限不夠,直接調用重定向即可,無須調用chain.doFilter(request,reponse)方法。

2、簡單的認證登錄Filter。

web.xml配置信息:

 

3、再次闡述Filter及一個應用小例子。

Filter也稱之為過濾器,它是Servlet技術中比較激動人心的技術,WEB開發人員通過Filter技術,對web服務器管理的所有web資源:例如Jsp, Servlet, 靜態圖片文件或靜態 html 文件等進行攔截,從而實現一些特殊的功能。例如實現URL級別的權限訪問控制、過濾敏感詞匯、壓縮響應信息等一些高級功能。

Servlet API中提供了一個Filter接口,開發web應用時,如果編寫的Java類實現了這個接口,則把這個Java類稱之為過濾器Filter。通過Filter技術,開發人員可以實現用戶在訪問某個目標資源之前,對訪問的請求和響應進行攔截。簡單說,就是可以實現web容器對某資源的訪問前截獲進行相關的處理,還可以在某資源向web容器返回響應前進行截獲處理。

web.xml配置信息:

Filter過濾器應用總結

Filter接口中有一個doFilter方法,當開發人員編寫好Filter類實現doFilter方法,并配置對哪個web資源進行攔截后,WEB服務器每次在調用web資源的service方法之前(服務器內部對資源的訪問機制決定的),都會先調用一下filter的doFilter方法。

Filter的生命周期和Servlet一樣,Filter的創建和銷毀也是由WEB服務器負責。不過與Servlet區別的是,它是1>在應用啟動的時候就進行裝載Filter類(與Servlet的load-on-startup配置效果相同)。2>容器創建好Filter對象實例后,調用init()方法。接著被Web容器保存進應用級的集合容器中去了等待著,用戶訪問資源。3>當用戶訪問的資源正好被Filter的url-pattern攔截時,容器會取出Filter類調用doFilter方法,下次或多次訪問被攔截的資源時,Web容器會直接取出指定Filter對象實例調用doFilter方法(Filter對象常駐留Web容器了)。4>當應用服務被停止或重新裝載了,則會執行Filter的destroy方法,Filter對象銷毀。注意:init方法與destroy方法只會直接一次。

Filter不僅可以通過url-pattern來指定攔截哪些url匹配的資源。而且還可以通過servlet-name來指定攔截哪個指定的servlet(專門為某個servlet服務了,servlet-name對應Servlet的相關配置)。

全部教程
主站蜘蛛池模板: 亚洲色图综合在线 | 欧美亚洲国产成人综合在线 | 日韩天堂| h片免费在线观看 | 国产视频资源在线观看 | 免费观看a级毛片在线播放 免费观看a级完整视频 | 国产一区二区精品久 | 亚洲国产中文字幕在线观看 | 亚洲日本韩国欧美 | 免费韩国伦理片在线观看 | 免费一级毛片正在播放 | 中文精品久久久久中文 | 国产99r视频精品免费观看 | 综合网色| 国产一区二区三区在线观看免费 | 欧美日韩一级大片 | 亚洲视频免费观看 | 带色视频 | 日韩在线成人 | 国产黄色在线免费观看 | 乱色伦图片区 | 伦伦影院精品一区 | 日韩一二 | 国产亚洲新品一区二区 | 伊人精品影院一本到欧美 | 中文欧美一级强 | 日韩欧美中文字幕在线观看 | 久久久免费观成人影院 | 日本三级香港三级人妇 m | 欧美成人性生活片 | 国产成人咱精品视频免费网站 | 日本福利在线 | 国产又爽又黄又舒服又刺激视频 | 精品影视网站入口 | 亚洲天堂ww | 亚洲欧美日韩综合久久久久 | 黄色三级网站 | 亚洲mv国产精品mv日本mv | 4虎影视国产在线观看精品 4k岛国精品午夜高清在线观看 | 免费人成在线观看 | 亚洲v天堂v手机在线观看 |