2013-02-04 64 views
1

兩個URL映射之間的區別:/ *和/?Java web應用程序 - 部署描述符 - URL模式映射

<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DefaultServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

我讀的規格後不能理解的是:

模式/ *將迫使一切通過MyServlet
該模式/將使DefaultServlet作爲應用程序中的默認servlet。

兩者對我來說都差不多。請讓我知道是否有任何特定的區別?

+1

看到[this](http://stackoverflow.com/questions/5276297/mapping-servlet-to-serve-my-requests),[this](http://www.coderanch.com/t/526534)/Servlets/java/servlet-URL-mapping),並可能[this](http://www.zomeon.com/3686420/servlet-filter-url-mapping)。另外,[java servlet規範](https://jira.sakaiproject.org/secure/attachment/16135/servlet-2_4-fr-spec.pdf)可能有用。 –

+1

@EliranMalka作爲一個附註,你給出了Servlet規範2.4版的鏈接,而當前版本是3.0。這裏是[Java™Servlet規範版本3.0]的鏈接(http://download.oracle.com/otndocs/jcp/servlet-3.0-fr-eval-oth-JSpec/) – informatik01

+0

謝謝,@ informatik01,這是方便起見 - 這是我發現的唯一版本在線快速參考爆炸,無需下載。 –

回答

0

感謝您的鏈接,通過他們我已編譯這個答案。讓我們看到了一個樣本web.xml

案例1:

<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servlet2</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
`

在這種情況下,所有的請求/context//context/anything/context/sample.do將調用servlet2

案例2:

<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>servlet2</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
`

在像/context/這種情況下請求,/context/anything調用servlet2/context/sample.do將調用servlet1