程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Servlet和Filter之間的差別與接洽

Servlet和Filter之間的差別與接洽

編輯:關於JAVA

Servlet和Filter之間的差別與接洽。本站提示廣大學習愛好者:(Servlet和Filter之間的差別與接洽)文章只能為提供參考,不一定能成為您想要的結果。以下是Servlet和Filter之間的差別與接洽正文


filter是一個可以復用的代碼片斷,可以用來轉換HTTP要求、呼應和頭信息。Filter不像Servlet,它不克不及發生一個要求或許呼應,它只是修正對某一資本的要求,或許修正從某一的呼應。

比來應用插裝的時刻,改用cookie對盤算機停止辨認,參加了過濾,細心研討了一下servlet和filter,差別重要是:

過濾器的性命周期普通都要經由上面三個階段:

servlet的特色是:

初始化

當容器第一次加載該過濾器時,init() 辦法將被挪用。該類在這個辦法中包括了一個指向 Filter Config 對象的援用。我們的過濾器現實上其實不須要如許做,由於個中沒有應用初始化信息,這裡只是出於演示的目標。

過濾

過濾器的年夜多半時光都消費在這裡。doFilter辦法被容器挪用, 同時傳入分離指向這個要求/呼應鏈中的 Servlet Request、Servlet Response 和 Filter Chain 對象的援用。然後過濾器就無機會處置要求,將處置義務傳遞給鏈中的下一個資本(經由過程挪用 Filter Chain 對象援用上的 doFilter辦法),以後在處置掌握權前往該過濾器時處置呼應。

析構

容器緊跟在渣滓搜集之前挪用 destroy()辦法,以便可以或許履行任何須需的清算代碼。

關於chain.doFilter(request,response)他的感化是將要求轉發給過濾器鏈高低一個對象。這裡的下一個指的是下一個filter,假如沒有filter那就是你要求的資本。 普通filter都是一個鏈,web.xml 外面設置裝備擺設了幾個就有幾個。一個一個的連在一路

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

filter是鏈式操作,那末在處置單個filter時必需最初跳轉到servlet對要求停止呼應。

假如走chain的話,經由過程chain.doFilter(request,response)這個辦法會立刻跳轉到被攔阻的servlet而且履行完還要再前往filter.chain相當於一扇門,從這扇門出去再從這扇門回來.挪用filter的辦法就是在web.xml中設置裝備擺設,須要設置裝備擺設一個與你須要攔阻的servlet雷同的url-pattern.

<!-- 設置裝備擺設一個過濾器 --> 
<filter> 
<filter-name>suibianxie</filter-name> 
<filter-class>com.etoak.filter.MyEncoding</filter-class> 
<!-- 設置裝備擺設一個公有參數 --> <init-param> <param-name>mycode</param-name> <param-value>gbk</param-value> </init-param> </filter> 
<!-- 攔阻的前後次序和mapping的次序有關 --> <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之間的差別與接洽,願望對年夜家有所贊助!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved