一、Servlet的多重映射
多个路径访问同一个Servlet,这里写了三种方式,必须掌握第一种。
1、注解配置访问路径
@WebServlet(name = "helloServlet", value = {"/hello-servlet","/a","/b","/c"})
public class HelloServlet extends HttpServlet {
2、配置多个<servlet-mapping>
<servlet>
<description></description>
<display-name>TestServlet01</display-name>
<servlet-name>TestServlet01</servlet-name>
<servlet-class>cn.itcast.servlet.TestServlet01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestServlet01</servlet-name>
<url-pattern>/TestServlet01</url-pattern>
</servlet-mapping>
<servlet-mapping>
<!--映射为Test01 -->
<servlet-name>TestServlet01</servlet-name>
<url-pattern>/Test01</url-pattern>
</servlet-mapping>
http://localhost:8080/chapter03/TestServlet01
http://localhost:8080/chapter03/Test01
3、一个<servlet-mapping>配置多个<url-pattern>
<servlet-mapping>
<servlet-name>TestServlet01</servlet-name>
<url-pattern>/TestServlet01</url-pattern>
<url-pattern>/Test02</url-pattern>
<url-pattern>/</url-pattern>
</servlet-mapping>
http://localhost:8080/chapter03/Test02
http://localhost:8080/chapter03/
二、Servlet的映射路径中使用通配符(*)
两种使用方式
1.目录匹配: 比如 /abc/* 或者 /*
2.扩展名匹配: *.do ,*.action
注意:两种使用方式不能混用,例如 /*.do这种写法是错误的。
优先级:完全目录匹配>目录匹配>扩展名匹配
三、缺省Servlet
Servlet的映射路径 “/” ,代表这是一个缺省的servlet.
找不到匹配的虚拟路径时,交由缺省Servlet处理
四、tomcat也有缺省Servlet
<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>
<!-- The mapping for the default servlet -->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
请求路径找不到匹配的虚拟路径时,tomcat的缺省Servlet就起作用了