springboot靜態(tài)資源的配置方式
springboot靜態(tài)資源的配置
1. springboot默認(rèn)的靜態(tài)資源存放路徑
靜態(tài)資源的存放路徑為classpath,也就是resources目錄下的:
- /META-INF/resources
- /resources
- /static
- /public
如下所示的CLASSPATH_RESOURCE_LOCATIONS數(shù)組存放的是靜態(tài)資源的訪問路徑。
public class ResourceProperties {
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
private String[] staticLocations;
private boolean addMappings;
private final ResourceProperties.Chain chain;
private final ResourceProperties.Cache cache;
......2.靜態(tài)資源的訪問順序
默認(rèn)情況下是按照存放靜態(tài)資源路徑的數(shù)組順序訪問的。
也即按照下面的訪問順序:
- /META-INF/resources
- /resources
- /static
- /public

如上圖所示,在這種情況下,訪問index.html。那么訪問的是- /META-INF/resources里面的index.html。
結(jié)論:springboot會(huì)查找優(yōu)先級(jí)高的文件,從高到低,一直找到所需要的靜態(tài)資源為止。
3.配置springboot項(xiàng)目首頁(yè)
靜態(tài)資源文件夾下的所有 index.html 被稱為靜態(tài)首頁(yè)或者歡迎頁(yè),它們會(huì)被 /** 映射,換句話說(shuō)就是,當(dāng)我們?cè)L問"localhost:8080"時(shí),都會(huì)跳轉(zhuǎn)到靜態(tài)首頁(yè)(歡迎頁(yè))。
靜態(tài)首頁(yè)映射的原理是Spring Boot去掃描靜態(tài)資源目錄下的index.html頁(yè)面,同時(shí)遵循靜態(tài)資源優(yōu)先級(jí)原則。
4.springboot 配置
# 默認(rèn)值為 /** spring.mvc.static-path-pattern= # 默認(rèn)值為 classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ spring.resources.static-locations=這里設(shè)置要指向的路徑,多個(gè)使用英文逗號(hào)隔開
- spring.mvc.static-path-pattern指定了訪問項(xiàng)目靜態(tài)資源的url地址,默認(rèn)是/**。
- spring.resources.static-locations指定了靜態(tài)資源的存放位置。
springboot靜態(tài)資源目錄的配置
通過配置文件配置
配置節(jié)點(diǎn):spring.web.resources.static-locations
值為要配置的靜態(tài)資源存放目錄
如:
spring:
web:
resources:
static-locations: classpath:/test/以上配置中,設(shè)置靜態(tài)資源目錄為src/main/resources/test/目錄。
假如在test目錄下存放文件test.txt,程序啟動(dòng)后,便能通過瀏覽器訪問ip:port/test.txt訪問文件。
通過config類配置
新建WebMvcConfig類,繼承WebMvcConfigurationSupport類,并添加注解@Configuration。
重寫WebMvcConfigurationSupport類的addResourceHandlers方法。
通過參數(shù)ResourceHandlerRegistry的addResourceHandler方法和addResourceLocations添加訪問路徑與資源目錄的映射。
如:
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/test/**").addResourceLocations("classpath:/test/");
}
}上述配置代碼中,添加了路徑/test/**對(duì)資源目錄src/main/resources/test/的映射。
假如在test目錄下存放文件test.txt,程序啟動(dòng)后,便能在瀏覽器訪問ip:port/test/test.txt訪問文件內(nèi)容
區(qū)別:
- 通過配置文件配置時(shí),只能覆蓋默認(rèn)配置設(shè)置一個(gè)靜態(tài)資源目錄(默認(rèn)目錄為static),但無(wú)需添加根目錄名即可訪問。如“一”中訪問test.txt時(shí),并沒有/test/路徑,而是直接訪問test.txt。
- 通過代碼配置時(shí),可以配置多對(duì)訪問路徑和資源目錄的映射,但訪問路徑需要包含根目錄名。如“二”中,訪問test.txt時(shí),需要添加/test/路徑。
共同點(diǎn):
- 以上兩種方法,一旦選擇其一進(jìn)行配置,默認(rèn)配置(static)目錄即失效。
- 當(dāng)同時(shí)使用兩種方法時(shí),配置文件方法失效,僅代通過配置類配置的方法生效。
總結(jié)
這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java設(shè)計(jì)模式中的裝飾器模式簡(jiǎn)析
這篇文章主要介紹了Java設(shè)計(jì)模式中的裝飾器模式簡(jiǎn)析,裝飾模式能夠?qū)崿F(xiàn)動(dòng)態(tài)的為對(duì)象添加功能,是從一個(gè)對(duì)象外部來(lái)給對(duì)象添加功能,通常給對(duì)象添加功能,要么直接修改對(duì)象添加相應(yīng)的功能,要么派生對(duì)應(yīng)的子類來(lái)擴(kuò)展,抑或是使用對(duì)象組合的方式,需要的朋友可以參考下2023-12-12
SpringMVC @NotNull校驗(yàn)不生效的解決方案
這篇文章主要介紹了SpringMVC @NotNull校驗(yàn)不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Java中使用ForkJoinPool的實(shí)現(xiàn)示例
ForkJoinPool是一個(gè)功能強(qiáng)大的Java類,用于處理計(jì)算密集型任務(wù),本文主要介紹了Java中使用ForkJoinPool的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Java將不同的List集合復(fù)制到另一個(gè)集合常見的方法
在Java中,有時(shí)候我們需要將一個(gè)List對(duì)象的屬性值復(fù)制到另一個(gè)List對(duì)象中,使得兩個(gè)對(duì)象的屬性值相同,這篇文章主要介紹了Java將不同的List集合復(fù)制到另一個(gè)集合常見的方法,需要的朋友可以參考下2024-09-09

