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中处于那个位置。