2011-12-19 204 views
0

我正在爲我的項目使用一些過濾器映射。以下過濾套鞋打過濾過濾器映射問題

<filter-mapping> 
     <filter-name>wygUserCheckFilter</filter-name> 
     <url-pattern>*.jsp</url-pattern> 
</filter-mapping> 

<filter-mapping> 
     <filter-name>wygUserCheckFilter</filter-name> 
     <url-pattern>/myProject/MyDisplay.jsp</url-pattern> 
</filter-mapping> 

但下面的人不打過濾

<filter-mapping> 
     <filter-name>wygUserCheckFilter</filter-name> 
     <url-pattern>/myProject/*.jsp</url-pattern> 
</filter-mapping> 

爲什麼會這樣呢?

回答

3

由於*在模式的匹配中僅*字符。只有匹配/myProject/*.jsp-pattern的url纔是完全相同的字符串。 *確實有特殊的意義僅在下列情況下(Servlet 2.4規範):

  • 的字符串用「/」字符開始並且以「/ *」 後綴結束用於路徑映射。
  • 以'*。'開頭的字符串 prefix用作擴展映射。
  • 只包含 '/'字符的字符串表示應用程序的「默認」servlet。在 這種情況下,servlet路徑是請求URI減去環境路徑 並且路徑信息爲空。
  • 所有其他字符串僅用於確切的 匹配。
+0

謝謝。我現在明白了。 – 2011-12-19 12:06:45

2

從Servlet 2.5的規格:

SRV.11.2

的映象

在Web應用程序部署描述符 規格,以下語法用於定義映射:

  • 以'/'字符開頭並以'/ *'後綴結尾的字符串用於路徑映射。
  • 以'*。'開頭的字符串被用作擴展映射。
  • 只包含'/'字符的字符串表示應用程序的「默認」servlet。在這種情況下,servlet路徑 是請求URI減去上下文路徑,路徑信息爲 null。
  • 所有其他字符串僅用於精確匹配。