web.xml中多个Servlet执行顺序的问题!

1.两个servlet或者两个servlet-mapping,其中的servlet-name名称不能存在相同。

2.所有的servlet-mapping标签下,url-pattern中包含的文本不能相同。

3.两个或者多个servlet执行先后顺序的问题(以三个为例)

无论三个servlet标签的顺序如何,首先执行的一定是url-pattern中文本与浏览器地址栏路径最接近的那个相对应的servlet。

上图说话

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
        xmlns="http://java.sun.com/xml/ns/javaee"   
        xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"   
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"   
        version="3.0">
  <display-name></display-name>    
  
  <servlet>
        <servlet-name>test2</servlet-name>
        <servlet-class>test.Test2Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>test2</servlet-name>
        <url-pattern>/demo2/*</url-pattern>
    </servlet-mapping>

  <servlet>
      <servlet-name>test1</servlet-name>
      <servlet-class>test.Test1Servlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>test1</servlet-name>
      <url-pattern>/</url-pattern>
  </servlet-mapping>
  
  <servlet>
      <servlet-name>test3</servlet-name>
      <servlet-class>test.Test3Servlet</servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name>test3</servlet-name>
      <url-pattern>/demo2/test/*</url-pattern>
  </servlet-mapping>
   
  
</web-app>

(1)如果你在浏览器地址栏输入http://ip:port/projectName/demo2/test/xxx.首先执行的一定是Test3Servlet(并且Test1Servlet,Test2Servlet均不会执行),无论该servlet在web.xml中处于那个位置。

(2)如果你在浏览器地址栏输入http://ip:port/projectName/demo2/xxx.首先执行的一定是Test2Servlet(并且Test1Servlet,Test3Servlet均不会执行),无论该servlet在web.xml中处于那个位置。

原文地址:https://www.cnblogs.com/joeking/p/11014776.html