<servlet-mapping>
<servlet-name>myName</servlet-name>
<url-pattern>/aName</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
...
<url-pattern>
/*
</url-pattern>
</web-resource-collection>
...
</security-constraint>
这是 web.xml 的摘录(使用它来配置 jboss/tomcat web 服务)。只是想知道是否url-pattern
in web-resource-collection
是相对于url-pattern
in servlet-mapping
.
The url-pattern
用于选择给定请求的约束与任何事物无关。 Servlet 规范中有趣的部分是:
SRV.12.8.3 处理请求
当 Servlet 容器接收到
请求,应使用算法
SRV.11.1 中描述的选择
上定义的约束(如果有)url-pattern
这是最好的匹配
请求 URI。如果没有任何约束
选择后,容器应接受
的请求。否则容器
应确定 HTTP 方法是否
该请求被限制在
选定的图案。如果不是,则
请求应被接受。否则,
该请求必须满足
适用于的约束条件http-method
在url-pattern
。两者都
必须满足以下规则
请求被接受以及
分派到关联的 servlet。
And:
SRV.11.1 URL 路径的使用
收到客户端请求后,Web 容器确定 Web 应用程序
将其转发到的位置。所选的 Web 应用程序必须具有最长的
与请求 URL 开头匹配的上下文路径。 URL 的匹配部分
是映射到 servlet 时的上下文路径。
接下来,Web 容器必须使用 Servlet 来处理请求
下面描述的路径映射过程.
用于映射到 servlet 的路径是请求中的请求 URL
对象减去上下文路径和路径参数。 URL路径映射
以下规则按顺序使用。第一个成功的匹配将被使用,不再继续
尝试的比赛:
- 容器将尝试找到与请求路径完全匹配的
Servlet 的路径。成功的匹配将选择 servlet。
- 容器将递归地尝试匹配最长的路径前缀。这个做完了
通过使用“/”字符一次沿着路径树向下移动一个目录
路径分隔符。最长的匹配决定选择的 servlet。
- 如果 URL 路径中的最后一段包含扩展名(例如 .jsp),servlet 容器将尝试匹配处理扩展名请求的 servlet。
扩展被定义为最后一个“.”字符之后的最后一个段的部分
角色。
- 如果前三个规则都没有导致 Servlet 匹配,则容器将
尝试提供适合所请求资源的内容。如果是“默认”
servlet是为应用程序定义的,它将被使用。
SRV.11.2 映射规范
在Web应用程序部署描述符中,使用以下语法来定义
映射:
- 使用以“/”字符开头并以“/*”后缀结尾的字符串
用于路径映射。
- 以“*.”前缀开头的字符串用作扩展映射。
- 仅包含“/”字符的字符串表示“默认”servlet
应用程序。在这种情况下,Servlet 路径是请求 URI 减去上下文路径,并且路径信息为空。
- 所有其他字符串仅用于精确匹配。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)