大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Filter過濾器

Filter生命周期

和Servlet一樣,F(xiàn)ilter的創(chuàng)建和銷毀也是由WEB服務(wù)器負(fù)責(zé)。

Filter與Servlet的區(qū)別

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

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

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

4、當(dāng)應(yīng)用服務(wù)被停止或重新裝載了,則會執(zhí)行Filter的destroy方法,F(xiàn)ilter對象銷毀。

Filter工作原理(執(zhí)行流程)

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

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

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

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

Filter的API詳解

1、ilter生命周期及其與生命周期相關(guān)的方法

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

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

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

destory():代表是filter銷毀方法 當(dāng)filter對象銷毀時執(zhí)行該方法

Filter對象的生命周期:

Filter何時創(chuàng)建:服務(wù)器啟動時就創(chuàng)建該filter對象

Filter何時銷毀:服務(wù)器關(guān)閉時filter銷毀

2、Filter的AP詳解

● init(FilterConfig)

其中參數(shù)config代表 該Filter對象的配置信息的對象,內(nèi)部封裝是該filter的配置信息。

@Override

//初始化方法:Filter創(chuàng)建時去執(zhí)行init方法

public void init(FilterConfig filterConfig) throws ServletException {

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

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

//2、還能獲得當(dāng)前filter的一些初始化參數(shù)

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

//3、獲得servletContext

filterConfig.getServletContext();

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

}

● destory()方法

filter對象銷毀時執(zhí)行

● doFilter方法

doFilter(ServletRequest,ServletResponse,FilterChain)

其中的參數(shù):

ServletRequest/ServletResponse:每次在執(zhí)行doFilter方法時 web容器負(fù)責(zé)創(chuàng)建一個request和一個response對象作為doFilter的參數(shù)傳遞進來。該request個該response就是在訪問目標(biāo)資源的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/*:訪問后臺的資源時執(zhí)行此過濾器

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

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

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

配置格式為:*

REQUEST:默認(rèn)值,代表直接訪問某個資源時執(zhí)行filter

FORWARD:轉(zhuǎn)發(fā)時才執(zhí)行filter

INCLUDE: 包含資源時執(zhí)行filter

ERROR:發(fā)生錯誤時 進行跳轉(zhuǎn)是執(zhí)行filter

6、Filter的作用?

● 公共代碼的提取

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

● 進行權(quán)限控制

全部教程
主站蜘蛛池模板: 国产精品伦一区二区三级视频 | 98色花堂永久地址国产精品 | 成人亚洲性情网站www在线观看 | 四虎最新网址入口 | 国产欧美日韩高清专区手机版 | 欧美日韩顶级毛片www免费看 | 免费国产a国产片高清不卡 免费国产阿v视频在线观看 | 99久久香蕉 | 久久国产精品国产精品 | 黑丝毛片 | 豆国产97在线 | 中国 | 在线观看久草视频 | 青青热在线精品视频免费 | 奇米影视奇米色 | 国产一级特黄aaa大片 | 99精品视频在线观看 | 中文字幕在线一区二区三区 | 中文字幕伦理聚合第一页 | 国产高清美女一级a毛片久久 | 久精品视频| 亚洲va欧美va国产 | 国产一级片毛片 | 欧美成人h精品网站 | 中文字字幕在线 | 国自产拍在线视频天天更新 | 激情五月色婷婷丁香伊人 | 精品日本一区二区 | 日韩精品一区二区三区中文字幕 | 日日夜夜综合 | 99九九热 | 国产天天在线 | h片在线观看网站 | 四虎影院免费在线播放 | 香蕉国产在线 | 7777精品伊人久久久大香线蕉 | 91大片| 久久久亚洲伊人色综合网站 | 天天摸夜夜添 | 久久精品国内一区二区三区 | 特黄特色一级aa毛片免费观看 | 国产高清区|