探索SpringMVC4中静态资源的访问链路

    问题由来:有时一些简单系统服务,不必用到很多jar包,于是自己封装servlet来处理所有的请求,但是@WebServlet(name="test", urlPatterns="/")会对项目中的静态资源进行拦截,这是我不乐意看到的,缓然回顾过往SpringMVC4项目中,却并没有明显使用mvc:resources标签进行静态资源处理,也没有配置其他servlet对静态资源进行放行,于是对SpringMVC4中静态资源的访问链路进行了探索之路。

  1.        既然SpringMVC亦是基于servlet,传统的我们都有配置web.xml的习惯,找到spring配置的servlet:

    根据对servlet的理解,SpringMVC将所有请求【包括静态资源】进行了接管。

  2. ​​​​​​​       开始源码调试探索。DispatcherServlet想必大家上课都听得耳朵起茧了,熟悉的同学可以直接在doDispatch方法上定位;当然基于对servlet的理解,在其父类FrameworkServlet可以找到doGet,doPost方法。打上断点走一遍,对大体脉络进行观察,其他有些方法不了解没关系,注意自己关注重点是:静态资源,于是重点关注是否有页面啊,后缀相关的,再者对一些可能是判断检测的方法点进去瞧瞧。
  3.        上述步骤完成几次之后,你很无奈的发现,然而好像并没找到相关后缀有关的地方,于是,搞不懂的问问百度、谷歌嘛;博客:https://blog.csdn.net/chenshun123/article/details/74370236给了我启示,<mvc:default-servlet-handler />​​​​​​​!!!对就是它的作用,让静态资源能够正常访问!
  4.        思考为什么?SpringMVC沿用了tomcat的静态资源配置,在handler进行相关处理,故能够正常访问到静态资源。{难怪我说如果spring如果自己做静态资源的后缀库放行的话,现在文件格式这么多种,可能以后更多,它仅仅作为框架难道一直更新?故spring肯定不会接锅。}
  5.        再回想很久以前,刚使用tomcat用的很爽的时候,是否一直忽略了一点,为什么加域名+端口+项目名+静态文件名就能访问到???这是因为:tomcat也有基于servlet的配置,找到tomcat物理路径,点开conf,你会发现一个web.xml,再进去查看,恍然大悟~~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值