Servlet url-pattern的匹配规则

r囧r小猫 2022-06-08 10:50 224阅读 0赞

**Servlet url-pattern的匹配规则

1.精确匹配**

资源路径必须一致才能匹配成功

HelloServlet

/a.html

浏览器输入: http://localhost:8080/a.html 匹配成功

HelloServlet

/b

浏览器输入: http://localhost:8080/b 匹配成功

HelloServlet

/a/test.html

浏览器输入: http://localhost:8080/a/test.html 匹配成功

2.通配符匹配

使用*来匹配0个或多个字符

HelloServlet

/*

代表输入任何不同的资源路径地址都能匹配成功
浏览器输入: http://localhost:8080/a/b/c 匹配成功
浏览器输入: http://localhost:8080/test.html 匹配成功

3.通配符路径匹配

HelloServlet

/a/*

代表输入任何以 a 路径开头的资源路径地址都能匹配成功
浏览器输入: http://localhost:8080/a/test 匹配成功
浏览器输入: http://localhost:8080/a/abc/xyz 匹配成功
浏览器输入: http://localhost:8080/a/a.html 匹配成功

4.后缀匹配

使用*.xx结尾,表示资源路径以任意多个字符开头并以.xx结尾就能匹配成功

TestServlet

*.do

浏览器输入: http://localhost:8080/xxx.do 匹配成功
浏览器输入: http://localhost:8080/a/a.do 匹配成功

TestServlet

*.jsp

浏览器输入: http://localhost:8080/xxx.jsp 匹配成功
浏览器输入: http://localhost:8080test/abc.jsp 匹配成功

5.匹配任意的url

当以上方式匹配规则都没有匹配成功时。

TestServlet

/*

TestServlet

/

注:

资源路径 要么只能以/开头,要么只能以*开头。

/app/*.jsp 不正确

/*.jsp 不正确

he*.jsp不正确

/aa/*/bb 是精确匹配,url必须是 /aa/*/bb,*已不代表通配的含义。

匹配优先级:
精确匹配>通配符匹配>后缀匹配>任意匹配
注:如果都没有匹配,则进入 web容器查找静态资源,返回静态资源。如果web容器也找不到资源则返回404。

Web服务器对请求地址的处理过程:

首先到当前web应用的web容器下的web.xml文件查找是否有匹配的url-pattern资源路径,有则交由 url-pattern对应的servlet-name的 Servlet处理该请求并响应给浏览器,没有则交给tomcat的内置的DefaultServlet处理,DefaultServlet程序到web容器的根目录下查找是否存在一个名称为xxx.html的静态文件,如果找到该文件,则读取该文件内容,返回给浏览器,如果找不到该文件,则返回404错误页面。

注:先找动态资源,再找静态资源

发表评论

表情:
评论列表 (有 0 条评论,224人围观)

还没有评论,来说两句吧...

相关阅读

    相关 servlet匹配规则

    一、概述 在利用servlet或Filter进行url请求的匹配时,很关键的一点就是匹配规则,但servlet容器中的匹配规则既不是简单的通配,也不是正则表达式,而是由自己的