小知识
一般的URL组成
URL = 服务器地址 + RequestURI
例如URI:http://localhost:8080/practice/main
- 【http://localhost:8080】就是服务器地址
- 【/practice/main】就是RequestURI
RequestURI:/practice/main
- 【/practice】ServletContext Path
- 【/main】Servlet Path
web.xml
中的url-pattern
匹配的就是Servlet Path
PS:这里的URL指的是不带参数的URL
url-pattern匹配规则
精确匹配
<url-pattern>/index</url-pattern>
这种格式只能匹配到Servlet Path
为/index
的路径。
前缀匹配
<url-pattern>/*</url-pattern>
这种格式可以匹配任意的Servlet Path
。
后缀匹配
<url-pattern>*.do</url-pattern>
这种格式只能匹配Servlet Path
为/*.do
,即以.do
作为后缀的路径。
/
匹配
<url-pattern>/</url-pattern>
这种格式可以匹配所有不带后缀的路径,比如,它可以匹配/main
,却不能匹配/main.do
。
注意点
Servlet Path
匹配规则一次只能选择一种,不能混用,形如/main/*.jsp
是错误的。
Servlet Path
的匹配顺序是精确匹配>前缀匹配>后缀匹配>匹配,并且一旦匹配到就结束,即Servlet Path
至多只能匹配一个。
SpringMVC中使用报404错误的原因:Controller返回*.jsp
时,找不到对应*.jsp
后缀的Controller。