一、映射Servlet的URL
?
? ? ? ? ?1、同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素
? ? ? ??的<servlet-name>可以被注册到同一个Servlet上面。
?
? ? ? ? ?2、映射Servlet的URL只能有两种写法:
2.1、*.扩展名
2.2、以正斜线(/)开头,并以(/*)结尾。
?
? ? ? ? ?3、对于如下一些映射关系:
?
? ?3.1、Servlet1 映射到 /abc/*
?
? ?3.2、Servlet2 映射到 /*
?
? ?3.3、Servlet3 映射到 /abc
?
?3.4、Servlet4 映射到 *.do
?
?
? ? ? ? ? ? ? ? ?有以下几种请求的URL时,Servlet引擎的调用:
?
? ? ? ? ? ? ? ? ? ?1>、当请求的URL为:"/abc/a.html"时,"/abc/*"和"/*"都匹配的
? ? ? ? ? ? ? ? ? ? 情况下,Servlet引擎会调用那个最为匹配的URL对应的Servlet
? ? ? ? ? ? ? ? ? ? 类,即为Servlet1
?
? ? ?2>、当请求的URL为:"/abc"时,"/abc"和"/abc/*"都匹配的情况下
? ? ? ?Servlet引擎会调用Servlet3
?
? ? ? ?3>、当请求的URL为:"/abc/a.do"时,"/abc/*"和"*.do"都匹配
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?的情况下,Servlet引擎将调用Servlet1
?
?
?
? ? ? ? ? ? ?4>、当请求的URL为:"/a.do"时,"/*"和"*.do"都匹配,Servlet引擎
? ? ? ?将调用Servlet2 ? ?
?
? ? ? ? ? ? ?5>、当请求的URL为:"/aaa/bbb/c.do"时,"/*"和"*.do"都匹配,
? ? ? ? ? ? ? ? ? ? Servlet引擎会调用Servlet2
?
二、DefaultServlet(默认Servlet)
?
? ? ? ? ? ? 这个默认的Servlet位于:$CATALINA_HOME/conf/web.xml
?
?
<servlet> <servlet-name>default</servlet-name> <servlet-class> org.apache.catalina.servlets.DefaultServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> ... <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
?
? ? ? ? ?1、如果一个Servlet的映射路径为正斜杠(/),那么这个Servlet就为当前
? ? ? ? ? ? ? ? ? ?web应用的缺省Servlet。 ? ???
?
? ? ? ? ? ?2、凡是在web.xml文件中找不到匹配的<servlet-mapping>元素的URL
? ? ? ? ? ? ? ? ? 他们的访问请求都将被交给这个默认的Servlet处理,即缺省的Servlet
? ? ? ? ? ? 用于处理其他Servlet都不处理的请求
?
? ? ? ? ? ?3、当访问Tomcat服务器中得某个静态资源(如:html页面、图片等)的时候
? ? ? ? ? ? ? ? ? 就是有这个默认的Servlet进行处理的
?
?
?
?