Java Web app - 部署描述符 - URL模式映射

时间:2013-02-04 09:18:03

标签: servlets web.xml web-deployment url-mapping

两个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 个答案:

答案 0 :(得分: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