SpringBoot靜態資源的訪問

2022-09-14 09:00:13 字數 2395 閱讀 3665

注:請求位址中並不需要目錄字首,如果加上了反而多此一舉會報 404 錯誤。因為 spring.mvc.static-path-pattern= ,預設值為 /**,在路徑對映中已經自動的新增上了目錄字首。

如果這四個目錄中存在相同名稱的靜態資源檔案,那麼優先訪問哪個目錄下面的資源啊?

靜態資源的預設訪問優先順序:/meta-inf/resources/>/resources/>/static/>/public/

注:只能按優先順序訪問,無法指定訪問某個目錄下的重名檔案。(在實際開發中,一般只會建立乙個目錄);檔名沒有衝突的話,就會去挨個掃瞄目錄去查詢要訪問的靜態資源檔案。

# 預設值為 /**

spring.mvc.static-path-pattern= #這裡設定靜態資源匹配的url-pattern

# 預設值為 classpath:/meta-inf/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

spring.resources.static-locations= #這裡設定要指向的路徑,多個使用英文逗號隔開,在前面的優先順序高

此時,我們知道預設情況下靜態資源為什麼放在/meta-inf/resources//resources//static//public/這四個目錄了,還有這四個目錄訪問的優先順序是怎麼來的了。

修改靜態資源對映的方法:

# 如設定為 /mystatic/* 的話只能匹配到第一層路徑,是無法訪問/mystatic/pages/目錄下的資源;應改為 /mystatic/** 表示可以匹配任意層級的路徑

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

spring.resources.static-locations= classpath:mystatic/

配置了指定的資源目錄後,預設的資源目錄則失效 (約定大於配置的思想,給他破壞掉)

@configuration

public class webmvcconfig implements webmvcconfigurer

}

注:上述兩種方法同時配置的話,配置類會覆蓋配置檔案的配置。

springboot訪問templates目錄下的html靜態頁面:

實際開發中,html頁面不建議放在static目錄下,而是放在templates目錄中。 一般使用spring boot預設為我們建立的static目錄來放置css、、js等靜態資源即可。但templates目錄的資源預設是受保護的,沒有開放訪問許可權。這是因為templates資料夾,是放置模板檔案的,因此需要視**析器來解析它。所以必須通過伺服器內部進行訪問,也就是要走控制器 → 服務 → 視**析器這個流程才行。

要訪問templates目錄下的html頁面,還需要引入下面這個模板引擎,然後才能通過controller來進行訪問。

org.springframework.boot

spring-boot-starter-thymeleaf

注:在使用模板引擎的時候,控制器不要用@restcontroller,因為它返回的是json資料格式,而我們要的是html頁面。

thymeleaf 模板配置:

spring:

#thymeleaf模板配置

thymeleaf:

cache: false # 這個開發配置為false,避免改了模板還要重啟伺服器

prefix: classpath:/templates/ #模板檔案檢視字首,預設是classpath:/templates/,可不用配置

suffix: .html #模板檔案檢視字尾,預設是.html,可不用配置

check-template-location: true #檢查模板位置,可不用配置

encoding: utf-8 #編碼字符集,預設為utf-8,可不用配置

mode: html #模板的模式,預設為html,可不用配置

servlet:

content-type: text/html #模板的內容型別,預設為text/html,可不用配置

spring boot 靜態資源

springboot中,預設的靜態資源路徑有 配置在resourceproperties類中 private static final string classpath resource locations 優先順序 靜態資源路徑 例如 webmvcautoconfiguration自動裝配類中,可...

SpringBoot靜態資源的處理

靜態資源的處理過程原本是在adapter的,但是由於版本的更新,現在靜態資源的處理移動到了enablewebmvcconfiguration這個類下面去,而且不再像以前那樣直接判斷,然後對映,現在變成了執行方法執行這兩個路徑的對映,本質上還是一樣的。其中staticpathpattern的 其實就是...

SpringBoot靜態資源的對映

一,webjars 所有的webjars被匯入後,目錄結構都是這樣的 springboot的底層告訴我們 如果要引用webjars 我們只需要在引用的位置使用 webjars springboot就會去 classpath mata inf resources webjars 下找資源檔案 因此 若...