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

Filter過濾器

Filter生命周期

和Servlet一樣,Filter的創建和銷毀也是由WEB服務器負責。

Filter與Servlet的區別

1、在應用啟動的時候就進行裝載Filter類而servlet是在請求時才創建(但filter與Servlet的load-on-startup配置效果相同)。

2、容器創建好Filter對象實例后,調用init()方法。接著被Web容器保存進應用級的集合容器中去了等待著,用戶訪問資源。

3、當用戶訪問的資源正好被Filter的url-pattern攔截時,容器會取出Filter類調用doFilter方法,下次或多次訪問被攔截的資源時,Web容器會直接取出指定Filter對象實例調用doFilter方法(Filter對象常駐留Web容器了)。

4、當應用服務被停止或重新裝載了,則會執行Filter的destroy方法,Filter對象銷毀。

Filter工作原理(執行流程)

當客戶端發出Web資源的請求時,Web服務器根據應用程序配置文件設置的過濾規則進行檢查,若客戶請求滿足過濾規則,則對客戶請求/響應進行攔截,對請求頭和請求數據進行檢查或改動,并依次通過過濾器鏈,最后把請求/響應交給請求的Web資源處理。

請求信息在過濾器鏈中可以被修改,也可以根據條件讓請求不發往資源處理器,并直接向客戶機發回一個響應。當資源處理器完成了對資源的處理后,響應信息將逐級逆向返回。同樣在這個過程中,用戶可以修改響應信息,從而完成一定的任務。

過濾鏈的好處是,執行過程中任何時候都可以打斷,只要不執行chain.doFilter()就不會再執行后面的過濾器和請求的內容。

針對多個過濾器來說,例如,EncodingFilter負責設置編碼,SecurityFilter負責控制權限,服務器會按照web.xml中過濾器定義的先后循序組裝成一條鏈,然后一次執行其中的doFilter()方法,在實際使用時,就要特別注意過濾鏈的執行順序問題,像EncodingFilter就一定要放在所有Filter之前,這樣才能確保在使用請求中的數據前設置正確的編碼。

Filter的API詳解

1、ilter生命周期及其與生命周期相關的方法

Filter接口有三個方法,并且這個三個都是與Filter的生命相關的方法

init(Filterconfig):代表filter對象初始化方法 filter對象創建時執行

doFilter(ServletRequest,ServletResponse,FilterChain):代表filter執行過濾的核心方法,如果某資源在已經被配置到這個filter進行過濾的話,那么每次訪問這個資源都會執行doFilter方法

destory():代表是filter銷毀方法 當filter對象銷毀時執行該方法

Filter對象的生命周期:

Filter何時創建:服務器啟動時就創建該filter對象

Filter何時銷毀:服務器關閉時filter銷毀

2、Filter的AP詳解

● init(FilterConfig)

其中參數config代表 該Filter對象的配置信息的對象,內部封裝是該filter的配置信息。

@Override

//初始化方法:Filter創建時去執行init方法

public void init(FilterConfig filterConfig) throws ServletException {

//1、獲得web.xml中filter 的名稱 QuickFilter1

System.out.println(filterConfig.getFilterName());

//2、還能獲得當前filter的一些初始化參數

System.out.println(filterConfig.getInitParameter("aaa"));

//3、獲得servletContext

filterConfig.getServletContext();

System.out.println("init....");

}

● destory()方法

filter對象銷毀時執行

● doFilter方法

doFilter(ServletRequest,ServletResponse,FilterChain)

其中的參數:

ServletRequest/ServletResponse:每次在執行doFilter方法時 web容器負責創建一個request和一個response對象作為doFilter的參數傳遞進來。該request個該response就是在訪問目標資源的service方法時的request和response。

FilterChain:過濾器鏈對象,通過該對象的doFilter方法可以放行該請求

3、Filter的配置

  <filter>
? ?? ??<filter-nameFilter1</filter-name>
? ?? ??<filter-class>com.filter.Filter1</filter-class>
</filter>
<filter-mapping>
? ?? ??<filter-name>Filter1</filter-name>
? ?? ??<url-pattern>/*</url-pattern>
</filter-mapping>

4、url-pattern配置時

● 完全匹配 /sertvle1

● 目錄匹配 /aaa/bbb/* ----最多的

/user/*:訪問前臺的資源進入此過濾器

/admin/*:訪問后臺的資源時執行此過濾器

● 擴展名匹配 *.abc *.jsp

注意:url-pattern可以使用servlet-name替代,也可以混用

5、dispatcher:訪問的方式(了解)

配置格式為:*

REQUEST:默認值,代表直接訪問某個資源時執行filter

FORWARD:轉發時才執行filter

INCLUDE: 包含資源時執行filter

ERROR:發生錯誤時 進行跳轉是執行filter

6、Filter的作用?

● 公共代碼的提取

● 可以對request和response中的方法進行增強(裝飾者模式/動態代理)

● 進行權限控制

全部教程
主站蜘蛛池模板: 91亚洲欧美综合高清在线 | 免费人成激情视频在线观看冫 | 深夜天堂 | 亚洲综合网在线观看 | 老司机69精品成免费视频 | 国产精品果贷一区二区借贷宝 | 黄网站在线观看永久免费 | 亚洲国产精品日韩高清秒播 | 中文字幕天天躁日日躁狠狠 | 欧美成视频人免费淫片 | 又黄又爽又色又刺激的视频 | 91看片淫黄大片在看 | 正在播放国产尾随丝袜美女 | 国产gav成人免费播放视频 | 日本三级香港三级妇三 | 天堂亚洲欧美日韩一区二区 | 欧美激情首页 | 两个人看的www高清免费视频 | 欧洲精品视频在线观看 | a亚洲欧美中文日韩在线v日本 | 美女黄色在线观看 | 91成人在线免费视频 | 免看一级a一片成人123 | 999精品国产 | 成人小视频免费 | 亚洲日韩欧美综合 | 亚洲欧美在线观看首页 | 丁香婷婷激情五月 | 精品欧美一区视频在线观看 | 尤物视频一区 | 日操操| 亚洲福利视频一区 | 亚洲 欧美 另类中文字幕 | 激情五月激情综合色区 | 成人免费视频无遮挡在线看 | 色噜噜狠狠一区二区三区 | 免费观看一级特黄三大片视频 | 欧美天天视频 | 久久夜色精品国产亚洲 | 亚洲美女福利 | 国产亚洲一区二区精品 |