url-pattern工作原理剖析

名词解释:

小web.xml:自己项目下配置的web.xml。
大web.xml:tomcat服务器下的web.xml。

举例分析

  • url-pattern=/
    在这里插入图片描述
    1、这是SpringMVC的前端控制器的配置,然而这样写的效果是什么呢?
    2、效果是:拦截请求后缀为 *.jsp 以外的其他请求。
    3、分析:处理请求是tomcat做的事,所有项目的web.xml都是继承于Tomcat的大web.xml。
    4、我们先来看一下Tomcat下的web.xml是如何配置的:
    在这里插入图片描述
    5、也就是说如果你在自己项目中不配置前端控制器,Tomcat将拦截所有请求。

6、重点:
而本例中我们配置的url-pattern=/,子类(小web.xml)重写父类(大web.xml)的方法,因此我们的前端控制器将会拦截诸如
/hello,/hello/index.html等后缀的请求。

而此时我们的前端控制器不会拦截.jsp的请求的原因是:大web.xml中还有一个url-pattern=*.jsp的方法,该方法没有被小web.xml重写,

因此Tomcat将会拦截.jsp为后缀的请求并进行处理。

  • url-pattern=/*
1、 小web.xml中配置这种路径匹配将会重写大web.xml中的两个路径匹配控制器,因此服务器将不再处理这些请求,这种路径配置一般有风险,因此常用作过滤器的路径匹配,而不用于控制器的路径匹配。
2、常用作过滤器路径匹配的原因,因为过滤器将会在处理完这些请求后放行给到下一个过滤器处理,直到FilterChain中的所有过滤器过滤完毕。
3、而控制器不同于过滤器,控制器即控制器拦截到请求后将不再放行,而是直接进行处理。
  • url-pattern=*.action 、 *.js 等(拓展名匹配)
    这种名为拓展名匹配,相当于在自己的小web.xml写自己的方法,拦截后缀为.action 、.js的请求。

一张图总结

在这里插入图片描述

以上是我的一些总结,如有不妥的地方,还请纠正,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值