1. Spring Boot 的默认资源映射
- 默认配置的 /** 映射到 /static (或/public、/resources、/META-INF/resources)
- 默认配置的 /webjars/** 映射到 classpath:/META-INF/resources/webjars/
- static、public、resources 等目录都在 classpath: 下面(如 src/main/resources/static)
2.自定义资源映射(推荐)
继承 WebMvcConfigurerAdapter 并重写方法 addResourceHandlers,例如:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import java.io.File;
@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
String basePath = System.getProperty("user.home")+File.separator+"voice/";
//将classpath:/voice/ 映射到系统用户目录中voice文件夹
registry.addResourceHandler("/voice/**").addResourceLocations("file:"+basePath);
//将classpath:/image/ 映射到D:/image/文件夹
registry.addResourceHandler("/image/**").addResourceLocations("file:D:/image/");
//将classpath:/image1/ 映射到classpath:/img1/文件夹
registry.addResourceHandler("/image1/**").addResourceLocations("classpath:/img1/");
super.addResourceHandlers(registry);
}
}
将classpath:/voice/ 映射到系统用户目录中voice文件夹
将classpath:/image/ 映射到D:/image/文件夹
将classpath:/image1/ 映射到classpath:/img1/文件夹
在static文件夹中加入 football.jpg 图片,在 resources文件夹中 新建 image文件夹,然后将 timg.jpg 图片放进去。
在访问浏览器中 访问 http://127.0.0.1:8080/image/football.jpg,出现图片,正常!
在访问浏览器中 访问 http://127.0.0.1:8080/timg.jpg,出现图片
3.通过配置文件映射(不推荐),application.properties
使用 spring.mvc.static-path-pattern 可以重新定义pattern,如修改为 /image/**
使用 spring.resources.static-locations 可以重新定义 pattern 所指向的路径,支持 classpath: 和 file: 注意 spring.mvc.static-path-pattern 只可以定义一个,目前不支持多个逗号分割的方式。
例如:
默认值为 /**
spring.mvc.static-path-pattern= /image/**
默认值为 classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
spring.resources.static-locations=classpath:/image/