您的位置:首页 > 其它

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

2013-04-21 15:22 567 查看


有关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

(与任何类型都不匹配)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: