发布时间: 阅读量

SpringBoot 静态资源映射

springboot静态资源映射

前言,项目需求,有需要从本地盘符上传,下载文件,上传和图片展示的需求,故采用静态资源映射来解决


有两种解决方案1.添加配置类2.配置文件添加相应的配置

第一种添加配置类

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 将/static/**访问映射到classpath:/mystatic/
        registry.addResourceHandler("/epr/**").addResourceLocations("D:/epr/");
    }
}

使用这种方式遇到了一个问题,之前返回的是json格式的数据,加了这个配置类,所以返回的数据格式被改成xml,虽然改成xml,但也有解决办法,如下

@RequestMapping(value="/list", produces={"application/json; charset=UTF-8"})

当然这就比较繁琐了,每个接口都需要加

第二种 配置文件

    spring.mvc.static-path-pattern=/epr/**
spring.resources.static-locations=file:D:/epr/

最后看一下效果
wei-xin-tu-pian-_20190801165036

wei-xin-tu-pian-_20190801165015

配置的映射路径貌似不能为D盘的根目录,试一下不就知道了

默认的映射路径有

  • classpath:/static
  • classpath:/public
  • classpath:/resources
  • classpath:/META-INF/resources

总结一下,大致规则是这样,

  1. 什么配置又不加,默认的映射路径如上
  2. 只加location的配置,访问路径不会被覆盖,配置的路径会追加到默认路径中
  3. 配置parten,并且配置location,则默认的访问路径会被parten覆盖,默认路径和配置路径都可以访问,访问的时候加都加parten

后续,不管是配置类还是配置文件,都是增加了boot默认的映射链