【发布时间】:2014-06-22 01:34:57
【问题描述】:
这些 url 映射有什么区别?
<url-pattern>/servlet</url-pattern>
和
<url-pattern>/servlet/*</url-pattern>
和
<url-pattern>/*</url-pattern>
和
<url-pattern>*.do</url-pattern>
【问题讨论】:
标签: java web.xml url-pattern
这些 url 映射有什么区别?
<url-pattern>/servlet</url-pattern>
和
<url-pattern>/servlet/*</url-pattern>
和
<url-pattern>/*</url-pattern>
和
<url-pattern>*.do</url-pattern>
【问题讨论】:
标签: java web.xml url-pattern
请注意,根 (/) 表示您的 Web 应用程序的上下文根。
<url-pattern>/servlet</url-pattern>
匹配直接映射到 root(/) 下的路径 servlet 的特定资源
<url-pattern>/servlet/*</url-pattern>
匹配/servlet下的任何资源。
<url-pattern>/*</url-pattern>
匹配根目录下的任何资源(/)。
<url-pattern>*.do</url-pattern>
匹配特定的文件模式,即以.do 结尾。
【讨论】:
在Servlet 3.0 Specification,12.2 映射规范部分中解释了 URL 模式:
在 Web 应用程序部署描述符中,使用以下语法来定义映射:
以
/字符开头并以/*后缀结尾的字符串用于路径映射。以
*.前缀开头的字符串用作扩展映射。空字符串 ("") 是一种特殊的 URL 模式,它精确映射到应用程序的上下文根,即
http://host:port/<context-root>/形式的请求。在这种情况下,路径信息是/,servlet 路径和上下文路径是空字符串(“”)。仅包含
/字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet 路径是请求 URI 减去上下文路径,并且路径信息为空。所有其他字符串仅用于完全匹配。
【讨论】: