往期精彩css
引言:
SpringBoot web項目開發中每每會涉及到一些靜態資源的使用,好比說圖片,css樣式,js等等,今天咱們來說講這些常見的靜態資源應該放在哪一個位置,怎麼放在本身想放的位置。html
目錄html5
1. 項目建立
咱們先建立一個空的項目,項目的依賴配置爲starter-web依賴,建立好的項目下面有一個resources文件夾,裏面有一些空的默認的文件夾,而後有一個配置文件。java
templates文件下面通常是放置模板頁面的,好比html,jsp之類的,static文件通常是是放置靜態資源,好比說,圖片,文件等等。web
咱們放置了文件或者是圖片就須要訪問這個文件,看看怎麼纔能有效的實現訪問這些靜態資源文件,以及本身訪問本身定義好的資源訪問路徑。spring
2. 資源文件訪問與配置
通常來講,咱們是作先後端分離的,Springboot就做爲後端,可是Springboot依然支持有html文件等,實現先後端在一個項目裏面。也就是Springboot web項目。後端
首先,咱們在templates文件夾下面建立一個名爲index的html5頁面,而後隨便寫一點東西,而後在配置文件中,配置一個項目啓動端口。瀏覽器
html5文件springboot
配置文件端口配置再也不講解,前一期裏面有配置文件詳解,不會的能夠回去看看。
啓動項目,瀏覽器輸入:localhost:8088/index.html
你會發現頁面是404,這時候咱們是訪問不了這個頁面的。而後你可能會說localhost:8088/templates/index.html,你會發現都不行都不行!mvc
由於Springboot的默認資源配置裏面沒有這個templates路徑,可是有static路徑。
1.Springboot中默認的靜態資源路徑:
- classpath:/static,
- classpath:/public,
- classpath:/resources,
- classpath:/META-INF/resources,
classpath 在項目中就至關於src/main/resources文件夾.
就是說若是你把html文件直接放在static路徑下面是能夠直接訪問的,有兩種訪問方式。
當你添加了start-web的依賴,resources下面是會默認生成一個static文件夾以及templates文件夾。
2.自定義靜態資源路徑。
spring.resources.static-locations=classpath:templates/
咱們配置了靜態資源路徑映射以後,咱們只能訪問這個路徑下面的資源,也就是至關於自定義了靜態資源路徑,就是說默認的靜態資源路徑都會失效。
3.兩種訪問靜態資源的方式
一種是直接經過特定的URL訪問:咱們配置好後,啓動項目,瀏覽器輸入:localhost:8088/index.html 就能夠正常訪問咱們的靜態資源了。
效果圖以下
而後還有一種訪問資源的方法。是使用代碼是實現的。
咱們在和啓動文件同級目錄下面建立一個controller文件夾,而後建立一個Testcontroller,代碼以下:
/** * @author 全棧學習筆記 * @date 2020/4/12 12:20 * @description */ @Controller public class TestController { @RequestMapping("/getHtml") public String getHtml(){ return "index.html"; } }
說明:這個@Controller ,意思標記這個類爲控制類,或者說他是一個Springmvc controller對象,標記以後,默認這個類的全部方法返回的是一個頁面。而後這個@RequestMapping的註解是一個用來處理請求地址映射的註解,可用於類或方法上。用於方法之上時,你能夠經過URL直接訪問這個方法。它還有一些其餘的參數,這裏就不講解了。後面會出一期Springboot經常使用註解的說明。有興趣的能夠 wx 搜索 全棧學習筆記。
到這裏,咱們就能夠利用自定義URL訪問靜態資源了。在瀏覽器裏面輸入:localhost:8088/getHtml 也能正常訪問靜態資源。圖片也是同樣的。
3. 其餘靜態資源路徑配置方式
1. 繼承WebMvcConfigurerAdapter
咱們經過重寫這個類的addResourceHandlers方法,定義資源路徑
/** * @author 全棧學習筆記 * @date 2020/4/12 15:46 * @description */ @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("/","classpath:templates/"); super.addResourceHandlers(registry); } }
2. 優化配置
你會看到以前的那種利用代碼的URL路徑訪問靜態資源文件的寫法,咱們須要在返回的地方寫上文件的名稱以及文件的後綴名,當咱們要返回某一類型的文件時,這樣寫就相對比較麻煩,因此咱們能夠經過如下配置來解決這個問題。
#加前綴 spring.mvc.view.prefix=/ #加後綴 spring.mvc.view.suffix=.html
經過以上的配置,咱們以前的controller裏面的方法返回就能夠寫成這樣。
@RequestMapping("/getHtml") public String getHtml(){ return "index"; }
總結:
靜態資源配置路徑的兩種經常使用方式: 一種是默認配置,一種是自定義配置,自定義配置能夠是代碼配置,能夠是配置文件裏面配置。這兩種配置方式都會使原來默認的配置方式失效。
靜態資源的訪問方式有兩種:一種是本身用代碼定義路徑,而後訪問,一種是直接利用特定的URL方式訪問靜態資源。