您的位置:首页 > 汽车 > 新车 > Springboot中的静态资源配置

Springboot中的静态资源配置

2024/7/2 22:20:27 来源:https://blog.csdn.net/weixin_44065196/article/details/139993482  浏览:    关键词:Springboot中的静态资源配置

目录

静态资源目录

静态资源和 RequestMapping 冲突

静态资源访问前缀

自定义静态资源目录

1.在配置文件中配置静态资源目录

2. 通过 WebMvcConfigurer 配置静态资源目录

欢迎页支持

自定义 Favicon


静态资源目录

Spring Boot 对静态资源提供了支持。默认情况下,以下目录为默认的静态资源目录。其中的静态资源可以被直接访问:

  • classpath:/META-INF/resources/
  • classpath:/resources/
  • classpath:/static/
  • classpath:/public/
  • ${user.dir}/public/ (程序运行目录下的 public 目录)

优先级从上往下,当多个静态资源目录中出现同名文件时,越靠上的目录权重越高。 

静态资源和 RequestMapping 冲突

如果静态资源路径和 @RequestMapping 路径冲突,则 @RequestMapping 优先。

例如:

有如下 Controller,且在 src/main/resources/public 目录下有一个名为 foo 的文本文件;

启动应用,访问 http://localhost:8080/foo,这时静态资源路径和 @RequestMapping 路径冲突,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面。

@RestController
@RequestMapping
public class DemoController {@GetMapping("/foo")public ResponseEntity<String> foo () {// 返回字符串 “controller”return ResponseEntity.ok("controller");}
}

静态资源访问前缀

默认无前缀

spring:mvc:static-path-pattern: /res/**

当前项目 + static-path-pattern + 静态资源名 = 静态资源文件夹下找

自定义静态资源目录

1.在配置文件中配置静态资源目录
spring:resources:static-locations: classpath:/haha/

静态资源目录不仅可以是 classpath 下的目录,也可以是本地磁盘目录,使用 file: 前缀进行配置,如: 

spring.web.resources.static-locations[0]=file:D:\\upload\\

还可以配合 ${} 语法,从环境变量、系统属性中读取目录信息,例如,设置应用启动目录下的 public 目录为静态资源目录: 

# ${user.dir} 的值也就是 System.getProperty("user.dir")
spring.web.resources.static-locations[0]=file:${user.dir}\\upload\\
2. 通过 WebMvcConfigurer 配置静态资源目录

通过 WebMvcConfigurer 配置接口的 addResourceHandlers 方法,可以编程式地配置静态资源访问路径和静态资源目录。

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 WebMvcConfiguration implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {// 静态资源访问路径registry.addResourceHandler("/**")// classpath下的静态资源目录.addResourceLocations("classpath:/public/")// 本地磁盘下的静态资源目录.addResourceLocations("file:D:\\upload\\");}
}

这种方式不支持使用 ${} 表达式。 

欢迎页支持

  • 静态资源路径下 index.html
    • 可以配置静态资源路径
    • 但是不可以配置静态资源的访问前缀。否则导致 index.html不能被默认访问
spring:
#  mvc:
#    static-path-pattern: /res/**   这个会导致welcome page功能失效resources:static-locations: [classpath:/haha/]

自定义 Favicon

 favicon.ico 放在静态资源目录下即可。

spring:
#  mvc:
#    static-path-pattern: /res/**   这个会导致 Favicon 功能失效

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com