Servlet url-pattern的匹配规则

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错误页面。

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

你可能感兴趣的:(jsp&servlet)