Servlet路径匹配原则

       当一个请求发送到服务器的时候,服务器首先会解析请求路径。将请求的 URL 去掉“HOST + ContextPath”,即去掉“服务器路径 + 当前应用上下文的路径”,然后将 URL的剩余部分作为要与<url-pattern/>进行匹配的 URI。例如,用户提交的请求为http://localhost:8080/oa/xxx/ooo,则去掉“HOST + ContextPath”后剩余部分为/xxx/ooo。服务器会将这个/xxx/ooo 与 web.xml 中所有的<url-pattern/>进行匹配。这个映射匹配过程是有顺序的,而且当有一个 servlet 匹配成功以后,就不会再去与其它 Servlet 进行匹配了。具体的匹配原则为:


(1 ) 路径优先 后辍 匹配原则
          例如 SomeServlet 的<url-pattern/>为*.do,OtherServlet 的<url-pattern/>为 /xxx/*。若用户提交的请求 URL 为 http://localhost:8080/oa/xxx/abc.do,此时服务器发现 SomeServlet 的*.do 与 OtherServlet 的/xxx/*都可以与用户提交请求的/xxx/abc.do 相匹配。那么服务器会按照“路径优先后辍匹配”的原则选择 OtherServlet。


(2 ) 精确路径 优先 匹配 原则
        例如 SomeServlet 的<url-pattern/>为/some,OtherServlet 的<url-pattern/>为 /*。若用户提交的请求 URL 为 http://localhost:8080/oa/some,此时服务器发现SomeServlet 的/some 与 OtherServlet 的/*都可以与用户提交请求的/some 相匹配。那么服务器会按照“精确路径优先匹配”的原则选择 SomeServlet。


(3 ) 最长路径 优先 匹配 原则
      例如 SomeServlet 的<url-pattern/>为/some/*,OtherServlet 的<url-pattern/>为 /some/other/*。若用户提交的请求 URL 为http://localhost:8080/oa/some/other,此时服务器发现 SomeServlet 的/some/*与 OtherServlet 的/some/other/*都可以与用户提交请求的/some/other 相匹配。那么服务器会按照“最长路径优先匹配”的原则选择 OtherServlet。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值