Servlet的映射细节:
1):一个Servlet程序(Web组件),可以配置多个<url-pattern>,表示一个Servlet有多个资源名称。
<servlet-mapping>
<servlet-name>MappingServlet</servlet-name>
<url-pattern>/m1</url-pattern>
<url-pattern>/m2</url-pattern>
</servlet-mapping>
2):一个Servlet程序,可以配置多个<servlet-mapping>。
<servlet-mapping>
<servlet-name>MappingServlet</servlet-name>
<url-pattern>/m1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MappingServlet</servlet-name>
<url-pattern>/m2</url-pattern>
</servlet-mapping>
3):<url-pattern>必须保证唯一性,而且必须使用/作为开头。
4):Servlet的映射支持通配符映射(*,表示任意字符):
第一种写法: /*,任意的资源都可以访问该Servlet。 /system/* :请求的资源必须以/system/作为开头才可以访问。
第二种写法:*.拓展名,比如:*.do,请求的资源必须以.do作为结尾才可以访问该Servlet。
5):在映射Servlet的时候,<servlet-name>元素的文本内容不能是default。
因为在Tomcat中存在一个叫做default的Servlet,专门用于处理请求静态资源(html,css,js,图片等)。
以下为Tomcat中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>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>