springboot访问webapp下静态资源

在SpringBoot 1.5及以下版本中,开发者可能遇到无法加载静态资源的问题,无论使用相对路径还是绝对路径。本文解释了这一现象,并指出在SpringBoot 1.5以上版本中,此问题已得到解决,相对路径即可正常加载静态资源。

在springboot版本1.5以下是获取不到静态资源的,无论是相对路径还是绝对路径就是获取不到,在springboot版本1.5及以上就可以获取到,用相对路径就可以,这是个坑,忙了一天看一大哥和我遇到同样的问题

 

转载:https://www.oschina.net/question/2379721_2280432

在 Spring Boot 项目中,默认的静态资源目录包括 `classpath:/META-INF/resources/`、`classpath:/resources/`、`classpath:/static/` 和 `classpath:/public/`,这些目录下的静态资源可以直接通过 HTTP 访问。然而,`src/main/webapp` 目录并不是 Spring Boot 默认的静态资源目录,因此如果希望访问 `resources` 目录下的 `webapp` 中的静态资源,需要进行一些配置或调整。 ### 方法一:将静态资源移至默认目录 如果希望静态资源可以直接被访问,建议将资源文件(如 HTML、CSS、JavaScript 文件)放置在以下任意一个目录中: - `src/main/resources/static/` - `src/main/resources/public/` - `src/main/resources/resources/` 这些目录下的资源会自动被 Spring Boot 识别为静态资源,并通过 `/**` 路径进行访问[^4]。 ### 方法二:自定义静态资源映射 如果坚持将静态资源保留在 `src/main/webapp` 目录中,则需要通过配置 `WebMvcConfigurer` 接口来添加自定义的资源映射。 在配置类中重写 `addResourceHandlers` 方法,示例如下: ```java 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 WebConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/webapp/**") .addResourceLocations("classpath:/webapp/"); } } ``` 上述配置会将 `classpath:/webapp/` 目录下的资源映射到 `/webapp/**` 路径下,例如访问 `/webapp/style.css` 时,Spring Boot 会从 `src/main/resources/webapp/style.css` 加载该文件[^4]。 ### 方法三:使用外部资源目录 如果资源文件较大或需要动态更新,可以考虑将静态资源放置在外部目录中,并通过绝对路径引用。例如: ```java @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/external-resources/**") .addResourceLocations("file:/path/to/your/resources/"); } ``` 这种方式适用于需要从文件系统中加载资源的场景。 ### 方法四:使用 `ServletContext` 根目录(仅限 WAR 部署) 如果使用 WAR 包部署 Spring Boot 应用,可以将静态资源放置在 `src/main/webapp` 目录下,此时这些资源将被视为 `ServletContext` 的根目录内容,并可通过 `/项目名/资源路径` 的方式访问。 例如,将 `index.html` 放置在 `src/main/webapp` 下,访问路径为:`http://localhost:8080/your-app/index.html`。 需要注意的是,这种做法仅在使用 WAR 包部署时有效,而使用 JAR 包部署时 `src/main/webapp` 不会被自动识别为静态资源目录[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值