1. 程式人生 > >Spring Boot(六):如何配置靜態資源的地址與訪問路徑

Spring Boot(六):如何配置靜態資源的地址與訪問路徑

靜態資源,例如HTML檔案、JS檔案,設計到的Spring Boot配置有兩項,一是“spring.mvc.static-path-pattern”,一是“spring.resources.static-locations”,很多人都難以分辨它們之間的差異,所以經常出現的結果就是404錯誤,無法找到靜態資源。

1. “spring.mvc.static-path-pattern”

spring.mvc.static-path-pattern代表的含義是我們應該以什麼樣的路徑來訪問靜態資源,換句話說,只有靜態資源滿足什麼樣的匹配條件,Spring Boot才會處理靜態資源請求,以官方配置為例:

#   這表示只有靜態資源的訪問路徑為/resources/**時,才會處理請求
spring.mvc.static-path-pattern=/resources/**,

假定採用預設的配置埠,那麼只有請求地址類似於“http://localhost:8080/resources/jquery.js”時,Spring Boot才會處理此請求,處理方式是將根據模式匹配後的檔名查詢本地檔案,那麼應該在什麼地方查詢本地檔案呢?這就是“spring.resources.static-locations”的作用了。

2. “spring.resources.static-locations”

“spring.resources.static-locations”用於告訴Spring Boot應該在何處查詢靜態資原始檔,這是一個列表性的配置,查詢檔案時會依賴於配置的先後順序依次進行,預設的官方配置如下:

spring.resources.static-locations=classpath:/static,classpath:/public,classpath:/resources,classpath:/META-INF/resources

繼續以上面的請求地址為例,“http://localhost:8080/resources/jquery.js”就會在上述的四個路徑中依次查詢是否存在“jquery.js”檔案,如果找到了,則返回此檔案,否則返回404錯誤。

3. 靜態資源的Bean配置

從上面可以看出,“spring.mvc.static-path-pattern”與“spring.resources.static-locations”組合起來演繹了nginx的對映配置,如果熟悉Spring MVC,那麼理解起來更加簡單,它們的作用可以用Bean配置表示,如下:

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/resources/**")
                .addResourceLocations("/public-resources/")
                .setCacheControl(CacheControl.maxAge(1, TimeUnit.HOURS).cachePublic());
    }

}

或者等同與以下的XML。

<mvc:resources mapping="/resources/**" location="/public-resources/">
    <mvc:cache-control max-age="3600" cache-public="true"/>
</mvc:resources>

結論

“spring.mvc.static-path-pattern”用於闡述HTTP請求地址,而“spring.resources.static-locations”則用於描述靜態資源的存放位置。

相關推薦

Spring Boot()如何配置靜態資源地址訪問路徑

靜態資源,例如HTML檔案、JS檔案,設計到的Spring Boot配置有兩項,一是“spring.mvc.static-path-pattern”,一是“spring.resources.static-locations”,很多人都難以分辨它們之間的差異,所以

spring boot.2x 啟用攔截器配置 靜態資源不能訪問

今天在使用SpringBoot時遇到靜態資源無法訪問的問題,啟用攔截器配置就會出現靜態資源無法訪問。發現只要繼承 WebMvcConfigurationSupport 並且將檔案加入配置 發現如果繼承了

Spring-Boot整合freemarker引入靜態資源css、js等(轉)

mark pan 創建 line path main 實現 content -m 一、概述springboot 默認靜態資源訪問的路徑為:/static 或 /public 或 /resources 或 /META-INF/resources 這樣的地址都必須定義在src/

Spring boot基礎配置文件配置變量

logback 引用 boot private prop 問題 測試環境 打包 dev 一、配置   resources下面application.properties 1、普通配置   resources下面application.properties,比如寫上:serv

Spring-Boot整合freemarker引入靜態資源css、js等

一、概述 springboot 預設靜態資源訪問的路徑為:/static 或 /public 或 /resources 或 /META-INF/resources 這樣的地址都必須定義在src/main/resources目錄檔案中,這樣可以達到在專案啟動時候可以自動載入為專案靜態地址目錄到cl

spring boot設定多個靜態資源目錄

@Configuration public class AcbplatformConfigurer extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHa

spring boot()如何優雅的使用mybatis

這兩天啟動了一個新專案因為專案組成員一直都使用的是mybatis,雖然個人比較喜歡jpa這種極簡的模式,但是為了專案保持統一性技術選型還是定了 mybatis。到網上找了一下關於spring boot和mybatis組合的相關資料,各種各樣的形式都有,看的人心累,結合了m

Spring Boot()如何使用mybatis

Spring Boot(六):如何使用mybatis orm框架的本質是簡化程式設計中操作資料庫的編碼,發展到現在基本上就剩兩家了,一個是宣稱可以不用寫一句SQL的hibernate,一個是可以靈活除錯動態sql的mybatis,兩者各有特點,在企業級系統開發中可以根據需求靈活使用。 目前情況:傳統企業大

spring boot + maven專案引用靜態資源404問題

朋友昨天做了一個新的專案,用sring boot+maven聚合專案在web子專案中引用html和.js檔案時前臺一直報404錯誤。用到了thymeleaf模板,專案配置檔案用的是spring boot 支援的.yml為字尾檔案做配置,這裡沒有做對js或者img或者jsp下的

spring-boot 讀取不到靜態資源

作為一名front end, 在使用spring boot 對映靜態資源的時候, 發現無論怎麼寫registry.addResourceHandler("/**").addResourceLocations("file:/home/ubuntu/web/");registry

spring boot配置靜態資源使用

程式碼如下: package com.bobo.shopping.manage.config; import org.springframework.context.annotation.Configuration; import org.springfram

深入Spring Boot (七)靜態資源使用詳解

Web應用經常需要使用大量的靜態資源,如圖片、css、js等,Spring Boot對這些靜態資源的使用提供了預設配置。本篇將詳細介紹如何使用預設配置和如何修改這些預設配置,主要包含以下5部分內容: 1.靜態資源儲存路徑; 2.靜態資源訪問路徑; 3.最佳

springcloud Spring Boot mybatis分散式微服務雲架構()配置中心

下面針對該Controller編寫測試用例驗證正確性,具體如下。當然也可以通過瀏覽器外掛等進行請求提交驗證。 @RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes =

Spring Boot の JSP模板配置+WEB-INF下靜態資源訪問

1-建立一個SpringBoot的MAVEN工程點選【next】點選【next】點選【next】點選【finish】,那麼一個springboot的maven的web工程就建立成功了。2-匯入Maven依賴<properties> <project.

spring boot 系列之深入理解spring boot的自動配置

我們知道,spring boot自動配置功能可以根據不同情況來決定spring配置應該用哪個,不應該用哪個,舉個例子: Spring的JdbcTemplate是不是在Classpath裡面?如果是,並且DataSource也存在,就自動配置一個JdbcTemplate的Bean Thymeleaf是不

Spring Boot(3)加載DataSource過程的源碼分析及yml中DataSource的配置

conf apache JD asi 其中 ase providers ram nconf Spring Boot實現了自動加載DataSource及相關配置。當然,使用時加上@EnableAutoConfiguration註解是必須的。下面就是對這一部分的源碼分析。 (1

Spring Boot入門系列三(資源文件屬性配置

response mage 註意 site spa website 圖片 process ram   Spring Boot 資源文件屬性配置     配置文件是指在resources根目錄下的application.properties或application.yml配置

Spring MVC解決靜態資源無法訪問的問題

解決靜態資源不能訪問的問題,解決方式有三種: 使用defaultServlet開啟tomcat中conf/web.xml,在這個檔案中有一個叫做DefaultServlet的配置,當系統找不到處理某次url請求該交由誰處理的時候,就會交給這個servlet處理。我們可以通過使用這個DefaultSer

SpringBoot | 第九章Spring boot 資料來源未配置,啟動異常

1、問題 在使Springboot自動生成的專案框架時如果選擇了資料來源,比如選擇了mysql依賴,生成專案之後,在沒有任何的配置時啟動會報一下異常,執行程式後,控制檯輸出錯誤日誌: 2018-12-04 14:00:46.890  WARN 6592 --- [ &n

spring boot 2.x 配置繫結

1、在application.properties檔案中填加自己的定義的配置資訊,如 #自定義配置 self.user.name=ldy self.user.age=27 self.user.phones[0]=139000000000 self.user.phones[1