SpringBoot配置静态资源访问办法
Posted luffy5459
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot配置静态资源访问办法相关的知识,希望对你有一定的参考价值。
SpringBoot如果是web项目,其实默认静态资源是放在resources/static/目录下的。这个静态资源其实隐含了一个配置就是spring.mvc.static-path-pattern: /**,如下所示,我们在application.yml中进行配置,还在敲spring.mvc.static的时候,yml自动提示就已经出来了,而且给了默认值:/**。
这种方式适合传统的前后端不分离的时候的java web项目,里面的静态资源比如图片,样式,脚本等等可以放在这里,页面加载的时候直接挂在页面上。
还有一种也是通过配置静态资源的方式,就是设置resources.static-locations,这个根据springboot版本不同,有的叫spring.resources.static-locations,有的叫spring.web.resources.static-locations。需要注意一下。
这个配置也有一个地方需要注意,位置指定的是文件系统的一个路径,这个路径后面需要带上文件分隔符。
spring:
web:
resources:
static-locations:
- file:e:/tmp/
我们系统路径下的文件:
启动项目,我们通过浏览器访问 http://localhost:8090/luffy03.webp
这种配置方式,需要注意的是,static-locations配置的是一个file:e:/tmp/值,表示文件系统下的e:/tmp/目录,这个目录路径一定要跟上一个文件分隔符"/"。
这种方式也 有一定的风险,就是相当于把文件系统上的这个目录暴露出去了,只要用户知道路径,就可以套出这个目录下的其他文件。
这个配置的实现方式,还可以通过代码来实现,就是做一个配置,实现WebMvcConfigure接口。
package com.xxx.hello.config;
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 SpringMvcConfigurer implements WebMvcConfigurer
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry)
registry.addResourceHandler("/file/**")
.addResourceLocations("file:e:/tmp/");
这里配置就多了一个路径前缀,我们通过/file/luffy03.webp就能访问e:/tmp/luffy3.webp文件:
这里,通过动态图,我们访问http://localhost:8090/luffy03.webp是访问不了的,这里配置了file前缀,所以,加上file前缀,我们就访问成功了。
今天其实讲了两种配置方式来让浏览器访问系统上的静态资源,都是通过浏览器以文件路径的形式访问了文件,第一种无需任何配置,直接把静态资源放在resources/static目录下即可。后面两种方式其实是一样的,就是配置一个文件目录作为静态资源访问的位置,后面可以拼接路径的方式访问系统资源。
以上是关于SpringBoot配置静态资源访问办法的主要内容,如果未能解决你的问题,请参考以下文章
spring boot整合security 4,怎么设置忽略的静态资源?