web.xml中的三种<url-pattern>元素

有关servlet映射的重要规则:

1)容器会按上一页显示的顺序查找匹配。换句话说,首先查找完全匹配。如果找不到完全匹配,再查找目录匹配,如果目录匹配也找不到,就查找扩展名匹配。

2)如果一个请求与多个目录<url-pattern>匹配,容器会选择最长的匹配。换句话说,如果请求/foor/bar/myStuff.do,它就会映射到<url-pattern> /foor/bar/*,尽管这个请求与<url-pattern>/foo/*也匹配,但是前者更长一些。总是取最特定的匹配。

<servlet>
  <servlet-name>One</servlet-name>
  <servlet-class>foo.DeployTestOne</servlet-class>
</servlet>  
<servlet-mapping>
  <servlet-name>One</servlet-name>
  <url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet>
  <servlet-name>Two</servlet-name>
  <servlet-class>foo.DeployTestTwo</servlet-class>
</servlet>  
<servlet-mapping>
  <servlet-name>Two</servlet-name>
  <url-pattern>/fooStuff/bar</url-pattern>
</servlet-mapping>
<servlet>
  <servlet-name>Three</servlet-name>
  <servlet-class>foo.DeployTestThree</servlet-class>
</servlet>  
<servlet-mapping>
  <servlet-name>Three</servlet-name>
  <url-pattern>/fooStuff/*</url-pattern>
</servlet-mapping>


 

 

请求:

 

http://localhost:8080/MapTest/blue.do 
容器选择: DeployTestOne  
(与*.do扩展名模式匹配)

 

http://localhost:8080/MapTest/fooStuff/bar   
容器选择: DeployTestTwo  
( /fooStuff/bar 模式完全匹配)

 

http://localhost:8080/MapTest/fooStuff/bar/blue.do  
容器选择: DeployTestThree  
(与/fooStuff/*目录 模式匹配)

 

http://localhost:8080/MapTest/fooStuff/blue.do 
容器选择: DeployTestThree
(与 /fooStuff/* 目录模式匹配)

 

http://localhost:8080/MapTest/fred/blue.do
容器选择: DeployTestOne
(与*.do 扩展名模式匹配)

 

http://localhost:8080/MapTest/fooStuff    
容器选择: DeployTestThree
(与/fooStuff/* 目录模式匹配)

 

http://localhost:8080/MapTest/fooStuff/bar/foo.fo  
容器选择: DeployTestThree
(与/fooStuff/* 目录模式匹配)

 

http://localhost:8080/MapTest/fred/blue.fo
容器选择: 404 NOT FOUND
(与任何类型都不匹配)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值