Servlet的一些细节

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!!!

原文地址:https://www.cnblogs.com/Vamps0911/p/10854815.html