|-- 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 的優先級最低