SpringBoot靜態(tài)資源映射規(guī)則淺析
1. 靜態(tài)資源映射規(guī)則
在項目中雙擊shift或ctrl+N搜索WebMvcAutoConfiguration.class文件,文件中的addResourceHandlers方法如下:
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
} else {
this.addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
this.addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
registration.addResourceLocations(this.resourceProperties.getStaticLocations());
if (this.servletContext != null) {
ServletContextResource resource = new ServletContextResource(this.servletContext, "/");
registration.addResourceLocations(new Resource[]{resource});
}
});
}
}
隨后進(jìn)入到getStaticLocations()方法可以發(fā)現(xiàn)變量 staticLocations 的取值如下:
"classpath:/META-INF/resources/"
"classpath:/resources/"
"classpath:/static/"
"classpath:/public/"
即項目運行時會到上述路徑下尋找靜態(tài)資源,也可以自定義靜態(tài)資源路徑,需在 application.properties 中配置:
spring.resources.static-locations=classpath:/folder1/,classpath:/folder2/
注:一旦自定義了靜態(tài)文件夾的路徑,則默認(rèn)的靜態(tài)資源路徑就會失效。
2. 歡迎頁
靜態(tài)資源路徑下的 index.html 文件會被/**所映射,當(dāng)訪問http://localhost:8080/時 ,會默認(rèn)映射到靜態(tài)資源文件夾下的 index.html。
遇到的問題
新建 index.html 文件后運行項目,訪問http://localhost:8080/時會頁面錯誤:

控制臺報如下錯誤:

Spring Boot 的版本是 2.7.8,tomcat 的版本是 9.0.71。Spring Boot 通過內(nèi)嵌的 tomcat 來運行項目,但需要依靠本地的 java 環(huán)境,我本地的 java 版本是 Java 1.8.0_261(即 java 8 版本),一般 java 8 和 tomcat 8.x.x 配套使用,這里可能是版本沖突導(dǎo)致的問題。將項目的 SDK 改為jbr-11 JetBrains Runtime version 11.0.10即可解決問題:

JetBrains Runtime 可以認(rèn)為是 IDEA 自帶的 java 運行環(huán)境。
到此這篇關(guān)于SpringBoot靜態(tài)資源映射規(guī)則淺析的文章就介紹到這了,更多相關(guān)SpringBoot靜態(tài)資源映射內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot服務(wù)上實現(xiàn)接口限流的方法
這篇文章主要介紹了SpringBoot服務(wù)上實現(xiàn)接口限流的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
java中Integer包裝類裝箱的一個細(xì)節(jié)詳解
Java中的Integer是int的包裝類型,下面這篇文章主要給大家介紹了關(guān)于java中Integer包裝類裝箱的一個細(xì)節(jié)的相關(guān)資料,文中介紹的這個細(xì)節(jié)挺重要的,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起看看吧2018-07-07
SpringBoot+MyBatis實現(xiàn)MD5加密數(shù)據(jù)庫用戶密碼的方法
MD5技術(shù)主要用于對用戶密碼加密,增加賬戶的安全性,他具有不可逆的特性,不會被輕易解密,這篇文章給大家介紹SpringBoot+MyBatis實現(xiàn)MD5加密數(shù)據(jù)庫用戶密碼的方法,感興趣的朋友跟隨小編一起看看吧2024-03-03
java 根據(jù)前端返回的字段名進(jìn)行查詢數(shù)據(jù)
本文介紹了如何在Java中使用SpringDataJPA實現(xiàn)動態(tài)查詢功能,以便根據(jù)前端傳遞的字段名動態(tài)構(gòu)建查詢語句,通過創(chuàng)建實體類、Repository接口、構(gòu)建動態(tài)查詢、在Service層和Controller中使用動態(tài)查詢,實現(xiàn)了前后端分離架構(gòu)中的靈活查詢需求2024-11-11
java Socket實現(xiàn)網(wǎng)頁版在線聊天
這篇文章主要為大家詳細(xì)介紹了java Socket實現(xiàn)網(wǎng)頁版在線聊天具體代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05
springboot遠(yuǎn)程執(zhí)行服務(wù)器指令
這篇文章主要介紹了springboot遠(yuǎn)程執(zhí)行服務(wù)器指令,本例是java遠(yuǎn)程連接到服務(wù)器,去抓取查詢kubesphere中的etcd日志,并返回,需要的朋友可以參考下2023-09-09

