Spring Boot如何加载静态文件
项目demogitee地址:https://gitee.com/dsxiecn/spring-boot-demo.git
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,一般这样都会解决文件中中文乱码的问题。
技术交流QQ群:579949017
或者添加个人微信:xieya0126 加入微信交流群