亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Servlet和Filter之間的區(qū)別與聯(lián)系

 更新時間:2016年05月04日 11:23:37   作者:桑梓子  
這篇文章主要介紹了Servlet和Filter之間的區(qū)別與聯(lián)系的相關(guān)資料,需要的朋友可以參考下

filter是一個可以復(fù)用的代碼片段,可以用來轉(zhuǎn)換HTTP請求、響應(yīng)和頭信息。Filter不像Servlet,它不能產(chǎn)生一個請求或者響應(yīng),它只是修改對某一資源的請求,或者修改從某一的響應(yīng)。

最近使用插裝的時候,改用cookie對計算機進行識別,加入了過濾,仔細研究了一下servlet和filter,區(qū)別主要是:

過濾器的生命周期一般都要經(jīng)過下面三個階段:

servlet的特點是:

初始化

當容器第一次加載該過濾器時,init() 方法將被調(diào)用。該類在這個方法中包含了一個指向 Filter Config 對象的引用。我們的過濾器實際上并不需要這樣做,因為其中沒有使用初始化信息,這里只是出于演示的目的。

過濾

過濾器的大多數(shù)時間都消耗在這里。doFilter方法被容器調(diào)用, 同時傳入分別指向這個請求/響應(yīng)鏈中的 Servlet Request、Servlet Response 和 Filter Chain 對象的引用。然后過濾器就有機會處理請求,將處理任務(wù)傳遞給鏈中的下一個資源(通過調(diào)用 Filter Chain 對象引用上的 doFilter方法),之后在處理控制權(quán)返回該過濾器時處理響應(yīng)。

析構(gòu)

容器緊跟在垃圾收集之前調(diào)用 destroy()方法,以便能夠執(zhí)行任何必需的清理代碼。

關(guān)于chain.doFilter(request,response)他的作用是將請求轉(zhuǎn)發(fā)給過濾器鏈上下一個對象。這里的下一個指的是下一個filter,如果沒有filter那就是你請求的資源。 一般filter都是一個鏈,web.xml 里面配置了幾個就有幾個。一個一個的連在一起

request -> filter1 -> filter2 ->filter3 -> .... -> request resource.

filter是鏈式操作,那么在處理單個filter時必須最后跳轉(zhuǎn)到servlet對請求進行響應(yīng)。

如果走chain的話,通過chain.doFilter(request,response)這個方法會立即跳轉(zhuǎn)到被攔截的servlet并且執(zhí)行完還要再返回filter.chain相當于一扇門,從這扇門出去再從這扇門回來.調(diào)用filter的方法就是在web.xml中配置,需要配置一個與你需要攔截的servlet相同的url-pattern.

<!-- 配置一個過濾器 --> 
<filter> 
<filter-name>suibianxie</filter-name> 
<filter-class>com.etoak.filter.MyEncoding</filter-class> 
<!-- 配置一個私有參數(shù) --> <init-param> <param-name>mycode</param-name> <param-value>gbk</param-value> </init-param> </filter> 
<!-- 攔截的先后順序和mapping的順序有關(guān) --> <filter-mapping> <filter-name>suibianxie</filter-name> 
<!-- 注意這里和要攔截的servlet的url-pattern必須一致,等于是過濾器 搶在servlet之前攔截住了 --> 
<url-pattern>/servlet/Test</url-pattern> </filter-mapping> 
<!-- 配置第二個過濾器 --> 
<filter> 
<filter-name>suibianxie2</filter-name> 
<filter-class>com.etoak.filter.Naming</filter-class> 
</filter>
<filter-mapping> 
<filter-name>suibianxie2</filter-name> 
<url-pattern>/servlet/Test</url-pattern> 
</filter-mapping> 
<servlet> 
<servlet-name>Test</servlet-name> 
<servlet-class>com.etoak.servlet.Test</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>Test</servlet-name> 
<url-pattern>/servlet/Test</url-pattern> 
</servlet-mapping>

以上所述是小編給大家介紹的Servlet和Filter之間的區(qū)別與聯(lián)系,希望對大家有所幫助!

相關(guān)文章

最新評論