|-- Context Path --|-- Servlet Path -|--Path Info--| http://www.myserver.com /mywebapp /helloServlet /hello |-------- Request URI ----------------------------|
① 当映射一个servlet时候,能够多层 好比 html
<url-pattern>/servlet/index.html</url-pattern> ok web
从这里还能够看出,后缀名是 html 不必定就是 html,多是假象. 面试
② 使用通配符在servlet映射到URL中 app
有两种格式: webapp
第一种格式 *.扩展名 好比 *.do *.ss url
第二种格式 以 / 开头 同时以 /* 结尾 好比 /* /news/* spa
通配符练习题: code
l Servlet1 映射到 /abc/* server
l Servlet2 映射到 /* htm
l Servlet3 映射到 /abc
l Servlet4 映射到 *.do
问题(面试题):
l 当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪一个servlet响应
Servlet引擎将调用Servlet1。
l 当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪一个servlet响应
Servlet引擎将调用Servlet3。
l 当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪一个servlet响应
Servlet引擎将调用Servlet1。
l 当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪一个servlet响应
Servlet引擎将调用Servlet2。
l 当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪一个servlet响应
Servlet引擎将调用Servlet2。
在匹配的时候,要参考的标准:
(1) 看谁的匹配度高,谁就被选择
(2) *.do 的优先级最低