SpringBoot默认把静态资源文件放在resource/static/,默认的静态资源路径匹配为/**

如果我们在resource/static/下放一张图片,启动SpringBoot后去访问它的话。访问路径为**http://localhost:8080/1.png**

我们可以放置的文件目录有:

  • resources/static
  • resources/public
  • resources/resources
  • resources/META-INF/resources

更改静态资源访问路径

前面我们提到,默认的静态资源访问路径是/**

我们可以通过配置文件来更改静态资源访问路径

例如:

1
2
3
spring:
mvc:
static-path-pattern: /res/**
资源放置目录 更改之前访问路径 更改之后访问路径
resource/static/login.html localhost:8080/login.html localhost:8080/res/login.html
resource/static/page/index.html localhost:8080/page/index.html localhost:8080/res/page/index.html

相当于多了一个前缀/res/

修改静态资源存放目录

前面我们提到,静态资源只能存在以下目录。

  • resources/static
  • resources/public
  • resources/resources
  • resources/META-INF/resources

当我们在resources/,创建了一个目录data【只要不是staticpublicresourcesMETA_INF就行】

把静态资源放在/resouces/data/目录下,启动SpringBoot是无法访问到的。

那我们想访问到怎么办?

修改配置文件

1
2
3
4
5
spring:
resources:
static-locations:
- classpath:/data/
- classpath:/page/

我们可以添加多个存放目录

配置之前,SpringBoot它只知道staticpublicresourcesMETA-INF/resources这些目录下存放着静态文件。

配置之后,SpringBoot就知道了 除了staticpublicresourcesMETA-INF/resources这些目录下存放着静态文件。datapage这些目录也存放着静态文件。

当我们访问 /data/1.png文件时,访问路径是:http://localhost:8080/1.png

静态资源映射

当我们进行如下配置

1
2
3
4
5
6
7
spring:
mvc:
static-path-pattern: /res/**
resources:
static-locations:
- classpath:/data/
- classpath:/page/
访问目录 访问路径
/data/1.png localhost:8080/res/1.png
/page/2.png localhost:8080/res/2.png

但,如果我们想实现如下效果

访问目录 访问路径
/data/1.png localhost:8080/data/1.png
/page/2.png localhost:8080/page/2.png

那我们可以经过配置类进行配置

1
2
3
4
5
6
7
8
9
@Configuration
public class MvcConfig extends WebMvcConfigurationSupport {

@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/data/**").addResourceLocations("classpath:/data/");
registry.addResourceHandler("/page/**").addResourceLocations("classpath:/page/");
}
}

__END__