引言:
SpringBoot web專案開發中往往會涉及到一些靜態資源的使用,比如說圖片,css樣式,js等等,今天我們來講講這些常見的靜態資源應該放在哪個位置,怎么放在自己想放的位置,
1、 專案創建
我們先創建一個空的專案,專案的依賴配置為starter-web依賴,創建好的專案下面有一個resources檔案夾,里面有一些空的默認的檔案夾,然后有一個組態檔,

templates檔案下面一般是放置模板頁面的,比如html,jsp之類的,static檔案一般是是放置靜態資源,比如說,圖片,檔案等等,
我們放置了檔案或者是圖片就需要訪問這個檔案,看看怎么才能有效的實作訪問這些靜態資源檔案,以及自己訪問自己定義好的資源訪問路徑,
2、資源檔案訪問與配置
一般來說,我們是做前后端分離的,Springboot就作為后端,但是Springboot依然支持有html檔案等,實作前后端在一個專案里面,也就是Springboot web專案,
首先,我們在templates檔案夾下面創建一個名為index的html5頁面,然后隨便寫一點東西,然后在組態檔中,配置一個專案啟動埠,
html5檔案

組態檔埠配置不再講解,前一期里面有組態檔詳解,不會的可以回去看看,
啟動專案,瀏覽器輸入:localhost:8088/index.html
你會發現頁面是404,這時候我們是訪問不了這個頁面的,然后你可能會說localhost:8088/templates/index.html,你會發現都不行都不行!
因為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的學習資料,或者需要其他方面的Java學習資料的,可以點擊進入,暗號:cshh,免費提供!

到這里,我們就可以利用自定義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方式訪問靜態資源,
這還有大量的就Java學習資料以及面試資料,有需要的可以點擊進入,暗號:cshh,都可以免費領取!

祝大家都能作業順利哦!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/184856.html
標籤:其他
上一篇:c語言static關鍵字引數
下一篇:初識Java類和物件
