从零开始学习Java Web(三):servlet和filter的url-pattern

来源:互联网 发布:mac的qq不能远程 编辑:程序博客网 时间:2024/06/06 03:31

    首先我们要清楚:一个请求只会执行一个servlet,可能会执行多个filter。

    servlet的url-pattern只有两种写法,一种是斜杠(/)开头,另一种是星号(*)开头带后缀。

如:/*、/abc/*、/abc.do、*.do等是合法的,/*.do、/abc/*.do都是不合法的。另外/abc*这种写法是不会报错,但是运行的时候可能达不到你希望的效果,tomcat会把他当成是一个精确的路径,假如你的项目路径是localhost:8080/test,则该url-pattern只会响应localhost:8080/test/abc*这个请求,而不会响应localhost:8080/test/abcd/或者localhost:8080/test/abcaaa这类的请求。

     servlet的url-pattern匹配度顺序为:精确查找-->最长路径查找-->后缀名查找,找到一个之后将不再往下查找。

     filter有两种形式,分别是:

<filter-mapping><filter-name></filter-name><url-pattern></url-pattern></filter-mapping>
<filter-mapping><filter-name></filter-name><servlet-name></servlet-name></filter-mapping>
filter执行的顺序为:url-pattern-->servlet-name,filter不同于servlet,filter的url-pattern的匹配度不影响filter的执行顺序,filter-mapping它们在web.xml的位置才是它们执行顺序的关键,但是,filter-mapping永远先执行于servlet-name。有多少个匹配请求url,就会执行多少个filter。

阅读全文
0 0
原创粉丝点击