MVC配置资源访问

MVC资源访问

关于静态资源的访问与动态资源的访问,在MVC中有专门的配置驱动,可以将情况分为以下4种:

  1. <mvc:default-servlet-handler><mvc:annotation-driven>都没有配置
  2. 仅配置<mvc:default-servlet-handler>
  3. 仅配置<mvc:annotation-driven>
  4. 配置<mvc:default-servlet-handler><mvc:annotation-driven>

1-都没有配置

这种情况下的结论是,使用@RequestMapping映射资源能够访问,但静态资源无法访问

原因是:请求进入DispatcherServlet后,找到了HandlerMappings列表属性,这个属性中有DefaultAnnotationHandlerMapping对象,在这里插入图片描述
DefaultAnnotationHandlerMapping对象中的handlerMap帮助我们对@RequestMapping注释的资源进行处理,但没有能够对静态资源进行处理的请求。
在这里插入图片描述

2-仅配置<mvc:default-servlet-handler>

这种情况下的结论是,仅静态资源可以进行访问

原因是:请求进入DispatcherServlet后,找到了HandlerMappings列表属性,这个属性中没有DefaultAnnotationHandlerMapping对象了,但是又多了一个SimpleUrlHandlerMaping对象,
在这里插入图片描述
这个对象中的handlerMap把所有的请求都交给了tomcat默认的servlet进行处理,所以就是,所有的请求,最后都交给了tomcat服务器进行处理,配置的统统无效。

3-仅配置<mvc:annotation-driven>

这种情况下的结论是,仅动态资源可以进行访问

原因是:请求进入DispatcherServlet后,找到了HandlerMappings列表属性,这个属性中存在RequestMappingHandlerMapping,它使用handlerMethods处理i请求,但SimpleUrlHandlerMaping消失了,把请求无法交给tomcat的,所以静态资源最后没有办法访问。

4-配置了<mvc:default-servlet-handler><mvc:annotation-driven>

这种情况下的结论是,配置的静态与动态资源都可以被访问

原因是:原因是:请求进入DispatcherServlet后,找到了HandlerMappings列表属性,这个属性中,以前的DefaultAnnotationHandlerMapping对象过时了,使用了一个新的RequestMappingHandlerMapping进行代替,
在这里插入图片描述

还有SimpleUrlHandlerMaping对象也出现了,RequestMappingHandlerMapping中的handlerMethods属性中保存了每一个请求的处理方法,
在这里插入图片描述

SimpleUrlHandlerMaping把匹配不到的剩余请求发送给tomcat进行处理,所以可以让动态与静态请求都可以被访问。
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值