2012-02-25 208 views
0

我有以下URL模式(* * * VS .any_pattern):servlet映射

<servlet-mapping> 
     <servlet-name>name_of_a_servlet</servlet-name> 
     <url-pattern>*.some_pattern</url-pattern> 
    </servlet-mapping> 

如果我在URL模式如多於一個模式:*.htm*.css*.do等,我可以在網址格式中使用*.*嗎?或者我必須這樣使用;

<url-pattern>*.htm</url-pattern> 
<url-pattern>*.css</url-pattern> 
<url-pattern>*.do</url-pattern> 

回答

2

*.*是不是一個有效的網址模式。 *只能在開始模式結束。如果您打算每 HTTP請求覆蓋,那麼您需要使用/*

<servlet-mapping> 
    <servlet-name>name_of_a_servlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

我不過問,如果這個servlet不能更好是filter

0

URL映射語法在Servlet API規範(我引用2.4)此信息定義:

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

所以簡短的回答是,url-pattern意味着一個url模式。您必須製作多種模式才能完全匹配這三種模式。

+0

哦,圖案規範的第11.2節在Servlet 2.4規範 – gorjusborg 2012-02-25 13:22:37

+1

這不是OP的定義題。你可以在一個''中有多個''條目。 OP的具體問題是如何只有一個。 OP使用'*。*'的嘗試顯然失敗了,這就是他在這裏問的原因。 – BalusC 2012-02-25 13:33:10

+0

不好意思誤解了這個問題。 – gorjusborg 2012-02-25 14:35:24

-1

<url-pattern>*.some_pattern</url-pattern>
應該
<url-pattern>/*.some_pattern</url-pattern> //路徑之前削減


-pattern>/path-pattern</url-pattern>

+1

歡迎來到堆棧溢出:-)請看看[答] – JimHawkins 2016-10-18 07:12:31