1
同一个Servlet可以被映射到多个URL上,即多个<servlet-mapping>元素的<servlet-name>子元素的设置值可以是同一个Servlet的注册名
1 <servlet> 2 <servlet-name>HelloServlet</servlet-name> 3 <servlet-class>HelloServlet</servlet-class>> 4 </servlet> 5 <servlet-mapping> 6 <servlet-name>HelloServlet</servlet-name> 7 <url-pattern>/HelloServlet</url-pattern> 8 </servlet-mapping> 9 <servlet-mapping> 10 <servlet-name>HelloServlet</servlet-name> 11 <url-pattern>/HelloServlet2</url-pattern> 12 </servlet-mapping> 13 <servlet-mapping> 14 <servlet-name>HelloServlet</servlet-name> 15 <url-pattern>/HelloServlet3</url-pattern> 16 </servlet-mapping>
意思就是可以用HelloServlet,HelloServlet2,HelloServlet3。都可以访问HelloServlet这个Servlet类
2
在Servlet映射到的URL中也可以使用 * 通配符,但是只能有两种固定的格式,一种是“ * . 扩展名”,另外一种格式是以正斜杠(/)开头并以“ /* 结尾”。
3
缺省Servlet
- 如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet
- 凡是在web.xml文件种找不到匹配的<servlet-mapping>元素的URL,它们的访问请求就交给缺省Servlet处理,也就是,缺省Servlet用于处理所有Servlet都不处理的访问请求
- 当访问TomCat服务器中某个静态HTML文件和图片时,实际上是在访问这个缺省Servlet
总结一下就是:浏览器访问服务器的时候,不管URL里面是什么,其实都是访问Servlet!当我们访问的是存在的Servlet的时候就是做存在Servlet中的事,如果我们访问的是不存在的Servlet或者其他如html,jsp等文件时,我们访问的是缺省Servlet
1 <servlet> 2 <servlet-name>default</servlet-name> 3 <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> 4 <init-param> 5 <param-name>debug</param-name> 6 <param-value>0</param-value> 7 </init-param> 8 <init-param> 9 <param-name>listings</param-name> 10 <param-value>false</param-value> 11 </init-param> 12 <load-on-startup>1</load-on-startup> 13 </servlet>
1 <servlet-mapping> 2 <servlet-name>default</servlet-name> 3 <url-pattern>/</url-pattern> 4 </servlet-mapping>
这里就是TomCat中web.xml中对缺省Servlet的映射设置,所以当我们访问不存在的Servlet,或者一些不是Servlet的文件时,我们访问的都是缺省Servlet,通过这个缺省Servlet来帮助我们完成很多功能。
所以在开发中,我们千万不要随便配置缺省Servlet!!!