简单功能分析

1.简单功能分析

1.1静态资源访问

1.静态资源目录:

只要静态资源放在类路径下: called /static (or /public or /resources or /META-INF/resources
在这里插入图片描述
就可以通过当前项目根路径/ + 静态资源名,例如在static目录下有一文件hello.jpg,便可以在运行之后,通过localhost:8080/hello.jpg访问到(前提是确保你设置的端口是本地的)。注意:上图中的public,resources目录是自己创建的,当然你也可以不用,用自带的static。另一种情况例如下图,new.png存在于public目录中,通过localhost:8080/new.png访问到的却不是这张图,而是start这个字符串。
以上原理为:静态映射/**。请求进来,先去找Controller看能不能处理,如果不能处理的所有请求,由于静态资源映射到双星,即会拦截所有请求,则又都交给静态资源处理器。如果还是不能处理,则响应404页面。下图的例子就是这样,由于先去找controller可以处理得到start,就不会交给静态资源处理出这张图。
在这里插入图片描述

2.静态资源访问前缀:

用application.yml配置文件设置为:

spring:
  mvc:
    static-path-pattern: /res/**

表示以前通过localhost:8080/文件名访问的方式行不通了,之后访问要用localhost:8080/res/静态资源名。即访问时,在当前项目 + static-path-pattern + 静态资源名 = 静态资源文件夹下找。

3.静态资源访问路径:

用application.yml配置文件设置为:

spring:
  mvc:
    static-locations: [classpath:/hello/](括号说明这是一个数组,可以同时设置多个路径)

表示类路劲下之前的static等目录都无效了,只认你在类路劲下新创建的这个hello目录。

1.2 欢迎页面支持

默认静态资源路径下的index.html为欢迎页面。
注意点:

  • 可以配置静态资源路径;
  • 不可以配置静态资源的访问前缀。否则导致 index.html不能被默认访问

1.3 自定义favicon

这是给网页添加小图标,只需把favicon.ico 放在静态资源目录下即可,此文件可将.png,.jpg等格式的文件通过在线favicon工具转换再下载。注意:设置静态资源路径前缀可能导致该功能不能实现。

1.4 静态资源配置原理

分析过程:

  1. SpringBoot启动默认加载 xxxAutoConfiguration 类(自动配置类);
  2. SpringMVC功能的 WebMvcAutoConfiguration(自动配置类)生效;
  3. 分析原理在这里插入图片描述
    根据以上流程图,须知在第二步开始,有@EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class }),说明配置文件的相关属性和xxx进行了绑定。WebMvcProperties=spring.mvc、ResourceProperties=spring.resources(你可以点进这两个类进行查看)。而且可以知道对于配置类来说,如果只有一个有参构造,那这个构造方法的参数值全部来自容器中

1.资源处理的默认规则:

最关键的第三步,可以从它的方法体看到

if (!this.resourceProperties.isAddMappings()) {
                logger.debug("Default resource handling disabled");
                return;
            }

先是取得整个WebMvcAutoConfigurationAdapter类的属性resourceProperties,这是在利用绑定结果ResourceProperties=spring.resources,再取得这个类中的isAddMappings(),用来设定判断条件。虽然这看没什么,但当你再看这段代码下面,就明白下面才是关键,它们才是在对静态资源进行操作,而以上的判断条件则可以决定是否执行以下代码。回到此时的绑定,使得你只需在application.properties配置文件中修改一下这个绑定信息,便可决定执行程序后能否访问到静态资源。同时你分析上面我说的静态资源操作代码(篇幅问题,请自行源码查看)可以看出,同样是用到了绑定作用,使得我们最终只需在配置文件中修改静态资源相关属性,例如路径,前缀等。演示配置静态资源操作之一代码如下(用的yaml形式):

spring:
  resources:
    add-mappings: false   禁用所有静态资源规则

2.欢迎页的处理规则:

探究路径:

  1. welcomePageHandlerMapping方法( WebMvcAutoConfiguration类中);
  2. 点进1方法中的new即可分析。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值