当使用SpringBoot开发web应用时,我们可以把静态资源文件放在项目中的“/static”或“/public”或“/resources”或“/META-INF/resources”目录下,在应用运行时就可以通过相应的URL来访问静态资源。然而,有时候我们会遇到这样的问题:通过URL访问静态资源时,却发现无法获取到资源,出现404错误,这通常是因为SpringBoot默认配置了不允许访问静态资源的映射规则。针对这个问题,我们可以通过以下两种方法解决:
我们可以实现WebMvcConfigurer接口并重写addResourceHandlers方法来配置我们需要访问的静态资源路径。例如,在项目的src/main/java目录下创建一个WebConfigurer类,代码如下:
@Configuration
public class WebConfigurer implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}
}
在addResourceHandlers方法中,我们通过addResourceHandler来指定需要映射的URL路径,通过addResourceLocations来指定对应的本地文件路径。在上面的代码中,我们将所有以“/static/”开头的URL请求映射到classpath:/static/目录下,这样我们就可以通过访问“/static/xxx”来获取到对应的静态资源文件。
我们可以通过在application.properties或application.yml文件中配置spring.resources.static-locations属性来指定我们需要访问的静态资源路径。例如,在项目的resources目录下创建一个application.yml文件,代码如下:
spring:
resources:
static-locations: classpath:/static/
在上面的配置中,我们通过spring.resources.static-locations属性来指定对应的静态资源文件路径,这样当我们访问“/static/xxx”时,SpringBoot就会从classpath:/static/目录下获取对应的静态资源文件。
以上两种方法都可以解决SpringBoot无法访问静态资源的问题,具体选择哪一种方法,可以根据实际项目需求来进行选择。
本文链接:http://task.lmcjl.com/news/15821.html