仔细学习一下
匹配循序 :::::
① 完全匹配
<url-pattern>/test/list.do</url-pattern>
② 路径匹配
<url-pattern>/*</url-pattern> 匹配根路径下的全部请求
③ 扩展名匹配
<url-pattern>*.do</url-pattern> 匹配全部 do 结尾的请求
<url-pattern>*.html</url-pattern> 匹配全部 html 结尾的请求
<url-pattern>*</url-pattern> 不能用 * ,否则报错
servlet-mapping 的重要规则:
容器会首先查找完全匹配,如果找不到,再查找目录匹配,如果也找不到,就查找扩展名匹配。
如果一个请求匹配多个 “ 目录匹配 ” ,容器会选择最长的匹配。
“/” 与 “/*” 的区别 ::::::
<url-pattern>/</url-pattern>
会匹配到 /login 这种类型的 url ,不会匹配到模式为 *.jsp 这样的后缀型 url
<url-pattern>/*</url-pattern>
会匹配所有 url :路径型的和后缀型的 url( 包括 /login,*.jsp,*.js 和 *.html 等 )
在web.xml配置servlet-mapping的时候,如果url-pattern设置为“/” html 静态页面404
解决方法:在web.xml文件,增加对静态资源的url映射
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>