2012-03-19 60 views
5

可能重複:
Servlet mapping/vs /*之間differenct /和/ *在服務器URL匹配模式

是什麼的 '/' 和 '/ *' 在服務器URL映射的區別?

因爲我讀的行動書春,我發現這句話:

接下來我們必須指明哪些網址將被 DispatcherServlet處理。找到映射到URL 模式(例如.htm,/或/ app)的DispatcherServlet是很常見的。但是,這些URL模式有幾個 問題:

  • 的的* .htm模式意味着反應總是會在HTML表單(其中,我們將在第11章中學習,不一定 的情況下)。
  • 將其映射到/ *並不意味着任何指定的響應類型,但表示DispatcherServlet將服務於所有請求。這使得 服務靜態內容,如圖像和樣式表比所需的更困難。
  • /app模式(或類似的東西)可以幫助我們區分Dispatcher-Servlet提供的內容和其他類型的內容。但是,我們有一個實現細節(特別是/ app路徑)暴露在我們的URL中。這導致了複雜的URL重寫策略來隱藏/ app路徑。

而不是使用其中任何一種有缺陷的servlet的映射方案,我更喜歡 映射的DispatcherServlet這樣的:

<servlet-mapping> 
    <servlet-name>spitter</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

通過映射的DispatcherServlet到/,我說這是默認的 servlet和它將負責處理所有請求, 包括對靜態內容的請求。

根據上面的話,似乎'/'和'/ *'將服務於所有的請求。

有什麼區別?

回答

3

僅包含/字符的字符串表示應用程序的「默認」servlet。在這種情況下,servlet路徑是請求URI減去上下文路徑,路徑信息爲空。 &

以*開頭的字符串。前綴被用作擴展映射。

模式/ *將強制所有通過您的Servlet。

模式/將使您的Servlet成爲應用程序的默認Servlet, 意味着它將拾取每個沒有其他準確 匹配的模式。

+0

默認的servlet('/')和所有的'/ *'之間有什麼區別? – hguser 2012-03-19 14:26:38