同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名。
在Servlet映射到得URL中可以使用*通配符,但是只能有两种固定的格式:
1."*.扩展名"
2.以(/)开头并且以"/*"结尾。
假设有如下的一些映射关系:
/abc/* 映射到 Servlet1
/* 映射到Servlet2
/abc 映射到Servlet3
*.do 映射到Servlet4 (优先级最低)
发生以下行为:
当请求URL为“/abc/a.html”,“/abc/*” 和 “/*” 都可以匹配这个URL,但是Servlet容器最终将调用Servlet1.
当请求URL为“/abc”时,“/abc/*” ,“/abc”和“/*”都可以匹配这个URL,但是Servlet容器最终将调用Servlet3.
当请求URL为“/abc/a.do”时,“/abc/*” 和“*.do”都可以匹配这个URL,但是Servlet容器最终将调用Servlet1.
当请求URL为“/a.do”时,“/*”和“*.do”都可以匹配这个URL,但是Servlet容器最终将调用Servlet2.
当请求URL为“/xxx/yyy/a.do”时,"/*"和“*.do”都可以匹配这个URL,但是Servlet容器最终将调用Servlet2.