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之間的差別與接洽,願望對年夜家有所贊助!