springboot对于url的处理顺序

as we konw,我们在spring项目里的地址栏写得任何URL都是要通过 路径->资源 或者 路径->controller 的方式去取得资源或者进入controller的方法执行业务代码返回视图,但是在我们配置了WebMvcConfigurer类之后就又多了两种方式了:

@Configuration
public class MyConfig implements WebMvcConfigurer {
    //资源映射的组件
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/img/**").addResourceLocations("classpath:/static/img/");
    }
    //视图解析的组件
    //不想经过controller的在这里配置
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/login").setViewName("mall/login");
    }
}

我们给这4种方式做个记号:
1.springboot默认的访问静态资源的方式
2.addResourceHandlers方法访问
3.通过符合controller的requestmapping进入对应方法
4.addViewControllers方法直接返回视图
任何一个url都会过一遍这4个方法,我们这时就会关心他们执行的顺序是什么,我来整理一下:
通过这篇博客可以看出2最先执行,然后是3,然后是1,由此可以设置访问不到静态资源时通过controller反馈结果的功能。
然后有点印象有人说过4是在3匹配不到之后执行的,具体网站一时间记不起来搜索什么关键词无法给出在这里,但是4和1的先后顺序还无法确定,实验一下就能清楚,有人知道可以告诉我,就这样吧,源码是不可能看的,这辈子都不可能看源码的,再见ε=ε=ε=(~ ̄▽ ̄)~


补充:而且可以看出springboot不像以前的servlet支持相对路径,需要自己配置(因为1的url-patton “/**” 已经匹配上了你写的相对路径),看这篇博客教你配置

展开阅读全文
©️2020 CSDN 皮肤主题: 游动-白 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值