Spring Boot如何加载静态文件

Javaweb中获取文件的方式大致可以分为两种
  • 通过nginx等反向代理的方式获取到静态文件资源
  • 在web项目中配置文件映射
 
第一种方式有时间去整理,本文介绍第二种方式,通过在项目中共配置文件映射完成静态文件的获取。
 
Spring Boot项目中存放文件的方式通常有三种
  • resources/static:Spring Boot中默认的文件存放路径,不需要做额外配置。
  • resouces/自定义的文件夹:这种需要在properties或者yml文件中配置spring.resources.static-locations,或者实现WebMvcConfigurer类重写addResourceHandlers实现。
  • 存放在硬盘的其他空间,比如F:\opt\data\files,也同样的,需要在properties或者yml文件中配置spring.resources.static-locations,或者实现WebMvcConfigurer类重写addResourceHandlers实现。
 
结合实例去讲解可能会更加的清楚,现有a、b、c、d四个文件,分别存放在不同的地方,如图
 
文件内容示例为
F:\opt\data\files\d.txt -> Spring Boot Demo
技术交流QQ群:579949017
微信公众号:IT咸鱼圈

  

我想要访问这四个文件,可以通过下面两种方式配置
  • 通过properties文件配置
    server.port=8081
    server.servlet.context-path=/spring-boot-demo
    
    spring.application.name=spring-boot-demo
    
    spring.resources.static-locations=classpath:static/,classpath:files/,file:F:/opt/data/files
    

     

  • 通过实现WebMvcConfigurer重写addResourceHandlers实现
package com.demo.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                .addResourceLocations("classpath:static/")
                .addResourceLocations("classpath:files/")
                .addResourceLocations( "file:F:\\opt\\data\\files\\");
    }
}

  

上面任意的方式都可以将文件加载进来,访问结果如下图

如果会出现源文件乱码的问题,可以通过File | Settings | Editor | File Encodings将几个编码设置为utf-8编码格式,如果访问页面还是乱码,则将源文件使用文编编辑工具转为utf-8,一般这样都会解决文件中中文乱码的问题。

posted @ 2020-05-30 12:41  IT咸鱼圈  阅读(1357)  评论(0编辑  收藏  举报