web.xml里 中的 作用


在2.4版本的servlet規范在部屬描述符中新增加了一個<dispatcher>元素,這個元素有四個可能的值:即REQUEST,FORWARD,INCLUDE和ERROR,

可以在一個<filter-mapping>元素中加入任意數目的<dispatcher>,使得filter將會作用於直接從客戶端過來的request,通過forward過來的request,通過include過來的request和通過<error-page>過來的request。

如果沒有指定任何<dispatcher>元素,默認值是REQUEST。可以通過下面幾個例子來輔助理解。   

 

例1   

<filter-mapping>
<filter-name>Logging   Filter</filter-name>     
<url-pattern>/products/*</url-pattern>     
</filter-mapping> 

 

這種情況下,過濾器將會作用於直接從客戶端發過來的以/products/…開始的請求。因為這里沒有制定任何的<dispatcher>元素,默認值是REQUEST。       

 

例2

<filter-mapping>     
<filter-name>Logging   Filter</filter-name>     
<servlet-name>ProductServlet</servlet-name>     
<dispatcher>INCLUDE</dispatcher>     
</filter-mapping>   

 

這種情況下,如果請求是通過request   dispatcher的include方法傳遞過來的對ProductServlet的請求,則要經過這個過濾器的過濾。其它的諸如從客戶端直接過來的對ProductServlet的請求等都不需要經過這個過濾器。       

指定filter的匹配方式有兩種方法:直接指定url-pattern和指定servlet,后者相當於把指定的servlet對應的url-pattern作為filter的匹配模式,filter的路徑匹配和servlet是一樣的,都遵循servlet規范中《SRV.11.2   Specification   of   Mappings》一節的說明  。       

 

例3

<filter-mapping>     
<filter-name>Logging   Filter</filter-name>     
<url-pattern>/products/*</url-pattern>     
<dispatcher>FORWARD</dispatcher>     
<dispatcher>REQUEST</dispatcher>     
</filter-mapping>

 

在這種情況下,如果請求是以/products/…開頭的,並且是通過request   dispatcher的forward方法傳遞過來或者直接從客戶端傳遞過來的,則必須經過這個過濾器。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM