Springboot中如何訪問靜態資源

germo發表於2021-09-09

1. application中需要先行的兩個配置項

1.1 spring.mvc.static-path-pattern

這個配置項是告訴springboot,應該以什麼樣的方式去尋找資源。預設配置為 /* 。換句話說,只有靜態資源滿足什麼樣的匹配條件,Spring Boot才會處理靜態資源請求
比如下面這個配置

spring.mvc.static-path-pattern=/soul/*

如果原先訪問首頁的地址是:
那麼在你配置這個配置後,上面的訪問就失效了,現在訪問同樣的頁面需要這樣訪問:

  • 問題1:配置這個配置後原本可以直接訪問首頁,但是現在訪問不了首頁。

    • 後記:多次使用後發現只要配置了這個配置,不管配成什麼,都訪問不了首頁。

  • 問題2:配置訪問路徑為/soul/後原本可以訪問resources下其他資料夾的目錄下的靜態資源,現在不可以了。比如下面截圖中test/test.html不能訪問了,在沒有配置為/soul/可以透過訪問

    圖片描述

    1.png

1.2 spring.resources.static-locations

這個配置項是告訴springboot去哪找資源。

# 預設值為spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

根據前後關係確定優先順序,也就是說如果/META-INF/resources/目錄和/resources都有一個index.html,那麼根據預設的優先順序,會去訪問/META-INF/resources/下的資源。

2. 一個配置的例項

首先專案目錄是這個樣子的:static和tempaltes各有幾個頁面,其中有一個重名的test頁面用來測試優先順序

圖片描述

2.png


由於現在建立的springboot專案,一般會將js、css等靜態檔案放在static下,而將頁面放在templates下,所以配置上只配置了資源目錄,第一個配置使用預設的*/ **,具體如下。

spring.resources.static-locations=classpath:/templates/,classpath:/static/

配置完了啟動專案在8888埠,訪問,根據上面理論應該會訪問到static下的index.html上,結果如圖:

圖片描述

3.png


訪問:,目測會訪問到templates下的test.html上,因為配置中templates的優先順序高於static,結果如圖

圖片描述

4.png


同樣的,如果有建資料夾的需求在對應目錄下建資料夾,並把靜態資源放進去即可訪問。



作者:每天都懶得減肥
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1868/viewspace-2818368/,如需轉載,請註明出處,否則將追究法律責任。

相關文章