Spring boot 靜態資源訪問

0. 兩個配置

spring.mvc.static-path-pattern

spring.resources.static-locations

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

1.1 spring.mvc.static-path-patterncss

這個配置項是告訴springboot,應該以什麼樣的方式去尋找資源。默認配置爲 /* 。換句話說,只有靜態資源知足什麼樣的匹配條件,Spring Boot纔會處理靜態資源請求html

好比下面這個配置spring

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

若是原先訪問首頁的地址是:http://localhost:8888/index.html
那麼在你配置這個配置後,上面的訪問就失效了,如今訪問一樣的頁面須要這樣訪問:http://localhost:8888/soul/index.htmlspringboot

  • 問題1:配置這個配置後本來http://localhost:8888能夠直接訪問首頁,可是如今http://localhost:8888/soul訪問不了首頁。
    • 後記:屢次使用後發現只要配置了這個配置,無論配成什麼,http://localhost:8888都訪問不了首頁。
  • 問題2:配置訪問路徑爲/soul/後本來能夠訪問resources下其餘文件夾的目錄下的靜態資源,如今不能夠了。好比下面截圖中test/test.html不能訪問了,在沒有配置爲/soul/能夠經過http://localhost:8888/test/test.html訪問

1.2 spring.resources.static-locations

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

# 默認值爲
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

根據先後關係肯定優先級,也就是說若是/META-INF/resources/目錄和/resources都有一個index.html,那麼根據默認的優先級,會去訪問/META-INF/resources/下的資源。app

2. 一個配置的實例

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

因爲如今創建的springboot項目,通常會將js、css等靜態文件放在static下,而將頁面放在templates下,因此配置上只配置了資源目錄,第一個配置使用默認的*/ **,具體以下。spa

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

配置完了啓動項目在8888端口,訪問http://localhost:8888/,根據上面理論應該會訪問到static下的index.html上,結果如圖:code

訪問:http://localhost:8888/test.html,目測會訪問到templates下的test.html上,由於配置中templates的優先級高於static,結果如圖htm

一樣的,若是有建文件夾的需求在對應目錄下建文件夾,並把靜態資源放進去便可訪問。

 

參考:https://www.jianshu.com/p/a9e6edd46e98

相關文章
相關標籤/搜索