首页 > 其他分享 >九、Spring Boot 静态资源访问配置

九、Spring Boot 静态资源访问配置

时间:2022-09-05 19:35:12浏览次数:106  
标签:静态 Spring 配置 classpath static Boot 目录 resources

使用场景:有一些文件需要让用户直接访问的静态资源,例如导入excel的模板或者小的图标

当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,springboot是帮我们处理了,默认配置了五个地址,将文件放在这个五个地址下,可以直接访问,那么优先级按照列出的顺序:

五个路径分别是如下5个:

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

前四个目录好理解,分别对应了resources目录下不同的目录,系统默认创建了 classpath:/static/
第五个"/":使用JSP的时候有一个webapp目录,使用springboot默认是没有,但是可以手动新建一个,这第五个目录指的就是webapp目录下

使用

常用的地址是classpath:/static/,将文件放在改目录下时,访问的地址为 http://localhost:8080/1.png,地址中并不包含static
因为springboot的配置(在springMVC中也有这样的配置 <mvc:resources mapping="/**" location="/static/"/>):
查看源码,WebMvcAutoConfiguration 类中看到了 SpringMVC 自动化配置的相关的内容,找到了静态资源拦截的配置,如下:

this.mvcProperties.getStaticPathPattern() 方法对应的值是 “/**”,this.resourceProperties.getStaticLocations()方法返回了四个位置,分别是:”classpath:/META-INF/resources/”, “classpath:/resources/”,”classpath:/static/”, “classpath:/public/”,然后在getResourceLocations方法中,又添加了“/”,因此这里返回值一共有5个。其中,/表示webapp目录,即webapp中的静态文件也可以直接访问。静态资源的匹配路径按照定义路径优先级依次降低。因此这里的配置和我们前面提到的如出一辙。这样大伙就知道了为什么Spring Boot 中支持5个静态资源位置,同时也明白了为什么静态资源请求路径中不需要/static,因为在路径映射中已经自动的添加上了/static了。

自定义配置

方式一:application.properties

# 定义资源位置,该配置表示可以将静态资源放在 resources目录下的任意地方
spring.resources.static-locations=classpath:/  
# 定义请求 URL 规则
spring.mvc.static-path-pattern=/**

Java 代码定义

@Configuration
public class WebMVCConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**").addResourceLocations("classpath:/aaa/");
    }
}

标签:静态,Spring,配置,classpath,static,Boot,目录,resources
From: https://www.cnblogs.com/zhaoyuan72/p/16659267.html

相关文章

  • 八、Spring Boot 实现一个自定义start
    http://springboot.javaboy.org/2019/0520/springboot-starterstarter的作用用来做依赖导入、自动配置Starter的核心就是条件注解@Conditional当classpath下存在......
  • Spring Boot集成Dubbo
    SpringBoot集成Dubbo分布式框架项目结构接口工程:存放实体bean和业务接口服务提供者:业务接口的实现类并将服务暴露且注册到注册中心,调用数据持久层添加依赖(dubbo、注册......
  • 八、Spring Boot 中自定义 SpringMVC 配置
    转发:https://www.javaboy.org/2019/0816/spring-boot-springmvc.html先说结论,使用Java8的,自定义配置使用实现WebMvcConfigurer接口,Java8之前使用WebMvcConfigurerAdapte......
  • 【博学谷学习记录】超强总结,用心分享|狂野架构师SpringCloud-Gateway
    目录SpringCloudGateway的工作流程Gateway动态路由配置中基于Path的路由方式过滤器分类常见默认过滤器添加响应头前缀处理增加前缀自定义过滤器1、实现GatewayFilter接口2......
  • (Spring)文件上传和下载
    文件上传的时候,浏览器将图片以MultipartFile的形式传到服务器,服务器将保存完的图片名响应给浏览器。文件下载的时候,浏览器收到图片名,再向服务器请求图片资源,服务器以流的......
  • SpringBoot-整合Druid
    1.添加jar包<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency>......
  • 14.Springboot多环境配置2
    1.主配置文件application.ymlspring:profiles:active:@profile.active@#需要在pom文件中指定变量#active:pro#include:mvcgroup:"pro......
  • ubuntu 20.02 配置静态IP地址
    配置方式#cat/etc/netplan/00-installer-config.yaml#Thisisthenetworkconfigwrittenby'subiquity'network:ethernets:ens160:dhcp4:false......
  • Spring Cloud Security OAuth2.0学习
    一、OAuth2授权机制1.1为什么需要OAuth2授权参考OAuth2.0的一个简单解释-阮一峰的网络日志(ruanyifeng.com)1.2OAuth2四种授权方式参考OAuth2.0的四种方式-......
  • Spring事务
    1.事务的四大特性(ACID)●原子性(Atomicity)共生死,要么全部成功,要么全部失败!●一致性(Consistency)事务在执行前后,数据库中数据要保持一致性状态。(如转账的过程账户......