1. 以 / 开始并以 /* 结束的表示路径映射, 即 /Test/* 表示请求路径以 /Test/ 开始的 URL 映射到该Servlet 处理
2. 以 *. 开始的表示扩展名映射, 即 *.abc 表示所有以扩展名为 abc 的请求映射到该 Servlet 处理
3. 以 / 开始的表示完全映射, 即 /Test 表示请求 URL 为 /Test 映射到该 Servlet 处理
4. URL Pattern 为 / 表示映射成默认的 Servlet, 当其他 URL 映射未匹配时, 使用默认的Servlet
路径匹配顺序
1. 先匹配完全映射的 URL
2. 再次匹配路径映射的 URL, 并且最长的路径的匹配优先
3. 再次匹配扩展名映射
4. 最后使用默认的 Servlet
以下为示例
Servlet 映射
path pattern servlet
/foo/bar/* servlet1
/baz/* servlet2
/catalog servlet3
*.bop servlet4
incoming path servlet handling request
/foo/bar/index.html servlet1
/foo/bar/index.bop servlet1
/baz servlet2
/baz/index.html servlet2
/catalog servlet3
/catalog/index.html “default” servlet
/catalog/racecar.bop servlet4
/index.bop servlet4
各种匹配模式下的 ServletPath 和 PathInfo
1. 完全匹配 ServletPath = 匹配模式 PathInfo = null
2. 扩展名匹配 ServletPath = 请求的URL PathInfo = null
3. 路径匹配 ServletPath = 匹配模式剪去 "/*" PathInfo = 请求URL 剪去ServletPath
4. 默认 Servlet 匹配 ServletPath = 请求的URL PathInfo = null
< p style=line-height: 150%>如果同样的URL 被映射到多个 Servlet 时, Serlvet 规范未做说明, Tomcat 使用最后一个映射的Servlet
如果覆盖了容器内设的 Servlet 映射, 使用新的映射
本文详细介绍了Web应用中Servlet的四种URL映射方式:路径映射、扩展名映射、完全映射及默认Servlet映射,并提供了示例帮助理解。同时阐述了Tomcat中的匹配顺序与特殊情况处理。
1162

被折叠的 条评论
为什么被折叠?



