虚拟路径匹配规则简介
特点:
-
Servlet 容器接收到请求后,容器会将请求的 URL 减去当前应用的上下文路径,使用剩余的字符串作为映射 URL 与 Servelt 虚拟路径进行匹配
举例:
URL 为http://localhost:8080/servletDemo/myServlet
,其应用上下文是 servletDemo,容器会将http://localhost:8080/servletDemo
去掉,使用剩余的/myServlet
与 Servlet 虚拟路径进行匹配
匹配规则
匹配规则 | 使用规则 | 虚拟路径 | 可访问的URL |
---|---|---|---|
完全路径匹配 (精确匹配) | 以/ 开始,不能包含通配符* 。 必须完全匹配 |
/myServlet /user/myServlet /product/index.action | http://localhost:8080/servletDemo/myServlet http://localhost:8080/servletDemo/user/myServlet |
目录匹配 | 以/ 字符开头,并以/* 结尾的字符串。 用于路径匹配 |
/user/* /* | http://localhost:8080/servletDemo/user/aaa http://localhost:8080/servletDemo/aa |
扩展名匹配 | 以通配符*. 开头的字符串。 用于扩展名匹配 |
*.do *.action *.jsp | http://localhost:8080/servletDemo/user.do http://localhost:8080/servletDemo/myServlet.action http://localhost:8080/servletDemo/bb.jsp |
缺省匹配(默认匹配) | 映射路径为/ ,表示这个 Servlet 为当前应用的缺省 Servlet 或默认 Servlet,默认处理无法匹配到虚拟路径的请求。 |
/ | 可以匹配任意请求 URL |
注意:
目录匹配和扩展名匹配无法混合使用,即/rest/*.do
这种写法是不正确的。
匹配优先级
虚拟路径匹配优先级顺序为:
全路径匹配(精确匹配)> 目录匹配 > 扩展名匹配 > 缺省匹配(默认匹配)
特点 :
Servlet 容器会从优先级高的虚拟路径开始匹配,匹配成功后就会立刻将请求交给相应的 Servlet 进行处理,不会再关注其他虚拟路径是否匹配成功。
跳过Servlet类直接看web.xml的配置: