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:javascript

Xml代碼    收藏代碼
  1. <filter-mapping>   
  2. <filter-name>Logging Filter</filter-name>   
  3. <url-pattern>/products/*</url-pattern>   
  4. </filter-mapping>  

 

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

例2:html

Xml代碼    收藏代碼
  1. <filter-mapping>   
  2. <filter-name>Logging Filter</filter-name>   
  3. <servlet-name>ProductServlet</servlet-name>   
  4. <dispatcher>INCLUDE</dispatcher>   
  5. </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:java

Xml代碼    收藏代碼
  1. <filter-mapping>   
  2. <filter-name>Logging Filter</filter-name>   
  3. <url-pattern>/products/*</url-pattern>   
  4. <dispatcher>FORWARD</dispatcher>   
  5. <dispatcher>REQUEST</dispatcher>   
  6. </filter-mapping>   

 

在這種狀況下,若是請求是以/products/…開頭的,而且是經過request dispatcher的forward方法傳遞過來或者直接從客戶端傳遞過來的,則必須通過這個過濾器。
參考資料:http://topic.csdn.net/t/20060322/23/4633313.htmlapp

相關文章
相關標籤/搜索