Spring Boot之静态内容
小弟刚接触spring boot不久,仅想通过写网志的形式来加深记忆和方便以后查阅。如内容有不正确之处,还望各位大佬海量汪涵,并给小弟指出,共同进步。
1. 默认静态资源映射
Spring Boot为我们提供了静态资源处理,默认情况下Spring Boot将所有访问映射到以下几个路径:
classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources
如:在resources目录下新建 public、resources、static 三个目录,并分别放入Aa.jpg、Bb.jpg、Cc.jpg 图片
则浏览器可以分别通过以下地址访问:
http://localhost:9091/Aa.jpg
http://localhost:9091/Bb.jpg
http://localhost:9091/Cc.jpg
注:默认静态资源路径的优先级:META-INF/resources>resources> static> public。
2. 自定义静态资源映射
在实际开发的过程中往往会有自定的情况出现,所以我们可以通过继承WebMvcConfigurerAdapter来自定义静态资源访问路径。
如:
@Configuration
publicclass WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public voidaddResourceHandlers(ResourceHandlerRegistry registry) {
//将所有/static/** 访问都映射到classpath:/static/ 目录下
registry.addResourceHandler("/mystatis/**").addResourceLocations("classpath:/mystatis /");
}
}
http://localhost:9091/ mystatis/Cc.jpg 可以访问mystatis目录下的c.jpg图片。
3. 通过application.properties配置
在配置文件中可以通过spring.mvc.static-path-pattern和spring.resources.static-locations来配置映射。
如:
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,\classpath:/static/,classpath:/public/,file:
spring.mvc.static-path-pattern=/**表示所有的访问都经过静态资源路径;
spring.resources.static-locations在这里配置静态资源路径,这里的配置是覆盖默认配置,所以需要将默认的也加上否则static、public等这些路径将不能被当作静态资源路径,在这里末尾的file是指定一个具体的硬盘路径,其他的使用classpath指的是系统环境变量。