Servlet中url-pattern的设置与匹配

  • <url-pattern/>的设置: 

  • (1):  精确路径模式:请求路径必须与<url-pattern>的值完全相同才可被当前Servlet处理.

  • 例如:<servlet-mapping> 
            <servlet-name>someServlet</servlet-name>
            <url-pattern>/xxx/ooo/jjj/some</url-pattern>
            <url-pattern>/xxx/some</url-pattern>
            <url-pattern>/some</url-pattern>
          </servlet-mapping>

  • (2):通配符路径模式:  该模式中的路径由两部分组成:精确路径部分与通配符部分。请求路径中只有携带了<url-pattern/>值中指定的精确路径部分才可被当前Servlet处理。

  • 例如:<servlet-mapping> 
            <servlet-name>secondServlet</servlet-name>
            <url-pattern>/aaa/*</url-pattern> 
        </servlet-mapping>

  • (3):全路径模式: 例如: <servlet-mapping>
            <servlet-name>secondServlet</servlet-name>
        <!--     <url-pattern>/*</url-pattern>  -->
        <!-- /*与/都是全路径模式,但它们还是有不同的
            /*是真正的全路径模式,可以拦截所有请求,无论是动态资源请求(.jsp),还是静态资源请求(.html),均会被拦截。
            /只会拦截静态资源请求,对于动态资源请求是不进行拦截的。
         -->
            <url-pattern>/</url-pattern>
        </servlet-mapping>

  • (4)后缀名模式:<servlet-mapping>
            <servlet-name>secondServlet</servlet-name>
            <!-- <url-pattern>/</url-pattern> -->
            <url-pattern>*.do(.后面随意,只不过后面有的框架用的都是.action或者.do)</url-pattern>
        </servlet-mapping>

  • 后缀名模式的用法限制:为<url-pattern/>设置值时,带斜杠的通配符路径模式与后缀名模式不能同时使用,例如,不能使用/*.do, /xxx/*.do等形式。否则,服务器将无法正常启动.

  • 匹配原则: (1):路径优先后缀匹配原则:就是这个请求按照路径方式能匹配上,按照后缀方式也能匹配上,这时候路径优先于后缀名。

  • (2):精确路径优先匹配原则:比如说/xxx/*和/xxx/ls它会优先执行/xxx/ls.

  • (3) :最长路径优先匹配原则:比如说/xxx/*和/xxx/ooo/*,用户提交请求/xxx/ooo/dada时,会优先执行最长路径的Servlet.(就是执行/xxx/ooo/dada所对应的Servlet的service()方法,其实也可以划分到第二个匹配原则中)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值