Spring Boot -- 访问静态资源路径规则,包括路径失效解决方法

本文详细介绍了如何在SpringBoot项目中使用WebJars引入jQuery等静态资源,以及如何访问项目自定义的静态资源,如my.js。通过配置,可以轻松在本地运行环境下访问这些资源。

1.访问webjars(以jQuery为例):

首先要引入jQuery的依赖:

webjar网址:https://www.webjars.org/ 可以找到要引入的静态资源依赖

pom.xml:
<!-- 引入jquery的webjars -->
<dependency>
   <groupId>org.webjars</groupId>
   <artifactId>jquery</artifactId>
   <version>3.4.1</version>
</dependency>
引入之后可以看到jQuery的jar包已经导入:

在这里插入图片描述

springboot规定的访问路径: /webjars/

所有/webjars/** 都去classpath:/META-INF/resources/webjars/找资源
这里的classpath指的是引入的jar包类路径,即上图的jquery-3.4.1.jar文件路径下

综上所述:

启动项目后若要访问jquery.js文件,路劲应是:
localhost:8080/webjars/jquery/3.4.1/jquery.js 即可

2.访问我们自己的静态资源(以我们自己的my.js为例):

springboot规定的访问路径: /**
所有的/** 默认都会去以下四个文件夹找:
  1. “classpath:/META-INF/resources/” 需要手动创建
  2. “classpath:/resources/” 需要手动创建
  3. “classpath:/static/”
  4. “classpath:/public/” 需要手动创建
  5. “/” 当前项目的根路径
这里的classpath指的是类路径,在idea中指src/main/java和src/main/resources路径下

在这里插入图片描述

如图要访问my.js文件,路径就应该是:

localhost:8080/my.js(放在以上介绍的五个路径下也是这个访问地址)
在这里插入图片描述

补充一个,在配置了springmvc的视图解析器后可能出现静态资源访问路径失效的情况,解决方法见我的另一篇博客:

https://blog.youkuaiyun.com/weixin_43636289/article/details/90085232

<think>嗯,用户想知道如何检查Spring Boot静态资源路径配置。首先,我需要回忆一下Spring Boot处理静态资源的机制。记得默认情况下,Spring Boot会在几个固定的目录下寻找静态资源,比如classpath下的/static、/public、/resources和/META-INF/resources。用户可能需要确认他们的资源是否放在这些默认位置,或者是否有自定义的配置。 接下来,我应该考虑用户可能会遇到的情况。比如,他们可能配置了自定义的静态资源路径,或者覆盖了默认的设置。这时候,检查application.properties或application.yml文件中的相关配置就很重要了。例如,spring.web.resources.static-locations这个属性,如果设置了,就会覆盖默认的路径。还有spring.mvc.static-path-pattern,这会影响访问静态资源的URL模式。 另外,用户可能需要通过日志来查看实际的资源处理情况。启用调试日志后,可以在启动时看到ResourceHandlerRegistry的详细信息,这样就能确认哪些路径被注册了。同时,访问不存在的资源时,日志里也会有相关的处理记录,帮助排查问题。 还有,直接通过浏览器或工具访问预期的静态资源URL,看看是否能正确加载,这也是一个直观的检查方法。如果返回404,可能路径配置有问题,或者资源没有放在正确的位置。 用户可能还想知道如何验证资源是否被正确添加到类路径中。比如,使用ClassLoader来读取资源文件,确保打包后的JAR或WAR文件中确实包含了这些资源文件。有时候,构建工具如Maven或Gradle的配置可能会导致资源没有被正确打包,这时候检查构建配置也是必要的。 另外,使用Spring Boot Actuator的端点,比如/mappings,可以查看所有注册的处理器映射,包括静态资源的处理路径,这样用户就能清楚地看到当前生效的配置。 最后,可能需要提醒用户常见的错误,比如自定义配置覆盖了默认路径,导致默认路径失效,或者路径拼写错误,资源文件没有正确放置等。这些都是检查时需要重点关注的方面。</think>检查Spring Boot静态资源路径配置可通过以下步骤进行: 1. **默认路径验证** Spring Boot默认扫描以下位置的静态资源(优先级由高到低): - `classpath:/META-INF/resources/` - `classpath:/resources/` - `classpath:/static/` - `classpath:/public/` 示例目录结构: ``` src/main/resources/ ├─ static/ │ └─ logo.png ├─ public/ │ └─ style.css ``` 2. **配置文件检查** 在`application.properties`或`application.yml`中检查自定义配置: ```properties # 自定义静态资源路径(会覆盖默认配置) spring.web.resources.static-locations=classpath:/custom-static/,file:/opt/files # 修改访问路径前缀 spring.mvc.static-path-pattern=/content/** ``` 3. **日志诊断** 启动时添加调试参数: ```bash java -jar your-app.jar --debug ``` 在日志中搜索`ResourceHandlerRegistry`相关记录,可看到实际生效的配置: ``` ... Mapped URL path [/webjars/**] onto handler... ... Mapped URL path [/**] onto ResourceHttpRequestHandler... ``` 4. **运行时验证** 通过接口直接访问资源(假设存在`static/test.txt`文件): ```bash curl http://localhost:8080/test.txt ``` 5. **编程验证(在测试类中使用)** ```java @Autowired private ResourceLoader resourceLoader; public void checkResource() throws IOException { Resource resource = resourceLoader.getResource("classpath:static/test.txt"); System.out.println("资源存在:" + resource.exists()); } ``` 6. **查看最终生效路径** 通过Actuator端点(需先添加依赖): ```bash curl http://localhost:8080/actuator/mappings | grep "ResourceHttpRequestHandler" ``` **常见问题排查:** - 自定义路径配置后默认路径失效 ➔ 需手动包含默认路径 - 访问路径被拦截器拦截 ➔ 检查安全配置 - 资源文件未正确打包 ➔ 检查`pom.xml`/`build.gradle`中的资源包含配置 通过以上方法,可以系统化地验证静态资源配置的有效性。建议优先使用默认路径,非必要不修改默认配置以保证项目规范性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值