相信小伙伴们都发现了在springboot项目中导入web依赖之后并没有出现spring框架编写时出现的web框架包webapp,那么我们的html或是img、css等静态资源文件该如何配置与访问呢?

前几次的测试验证了springboot的自动装配功能,即围绕注解与java代码的编程结合配置yml文件实现代码的减少与解耦。其实我们创建springboot项目时resources包下会自带两个文件夹:static与template这两个文件夹,这里springboot官方文档对于静态资源的配置有相应的叙述:Spring Boot

我们来开始测试欢迎页的配置测试:

配置自动访问静态欢迎页面

  1. yml文件配置静态文件夹的指定
  2. 在指定的静态文件夹加入index.html
  3. 启动访问端口

1、yml文件配置

#配置静态资源访问路径,这个用来指定静态资源文件夹
spring:
  resources:
    static-locations: [classpath:/static]

2、加入index.html文件

Spring Boot 整合 FreeMarker静态化 springboot如何引入静态资源_spring boot

3、访问端口

 

Spring Boot 整合 FreeMarker静态化 springboot如何引入静态资源_spring boot_02

 这里的自动查找顺序应是先查找同名的动态资源再去静态资源文件夹寻找是否有?没有就报出404错误。

配置静态资源访问路径

只需要在yml文件加入以下代码

#配置静态资源访问前缀,方便拦截器,所有的静态资源访问路由必须加上这个前缀
#注意在访问需要访问的静态资源时,一定要将完整的路径写在路由下,否则按照
#先动态再静态的访问顺序来,会找不到映射。
spring:
  mvc:
    static-path-pattern: /res/**

查看访问测试

Spring Boot 整合 FreeMarker静态化 springboot如何引入静态资源_spring_03

 测试资源访问顺序

测试动态与静态资源同名的情况下,springboot是先去找静态还是先去找动态资源?

首先编写controller方法指向页面

@RequestMapping("/index.html")
    public void h(){
        System.out.println("这里是动态资源访问提示");
    }

如果是先通过动态则会在控制台报出我们的输出语句,否则则不会报出这个输出

Spring Boot 整合 FreeMarker静态化 springboot如何引入静态资源_静态资源_04

 这里说明boot默认先找动态,再找静态的资源访问顺序,如果动态没有同名资源或者方法就会直接寻找静态资源。