SpringBoot web靜態(tài)資源配置詳解
引言:
SpringBoot web項(xiàng)目開發(fā)中往往會(huì)涉及到一些靜態(tài)資源的使用,比如說(shuō)圖片,css樣式,js等等,今天我們來(lái)講講這些常見的靜態(tài)資源應(yīng)該放在哪個(gè)位置,怎么放在自己想放的位置。
1、 項(xiàng)目創(chuàng)建
我們先創(chuàng)建一個(gè)空的項(xiàng)目,項(xiàng)目的依賴配置為starter-web依賴,創(chuàng)建好的項(xiàng)目下面有一個(gè)resources文件夾,里面有一些空的默認(rèn)的文件夾,然后有一個(gè)配置文件。
templates文件下面一般是放置模板頁(yè)面的,比如html,jsp之類的,static文件一般是是放置靜態(tài)資源,比如說(shuō),圖片,文件等等。
我們放置了文件或者是圖片就需要訪問(wèn)這個(gè)文件,看看怎么才能有效的實(shí)現(xiàn)訪問(wèn)這些靜態(tài)資源文件,以及自己訪問(wèn)自己定義好的資源訪問(wèn)路徑。
2、資源文件訪問(wèn)與配置
一般來(lái)說(shuō),我們是做前后端分離的,Springboot就作為后端,但是Springboot依然支持有html文件等,實(shí)現(xiàn)前后端在一個(gè)項(xiàng)目里面。也就是Springboot web項(xiàng)目。
首先,我們?cè)趖emplates文件夾下面創(chuàng)建一個(gè)名為index的html5頁(yè)面,然后隨便寫一點(diǎn)東西,然后在配置文件中,配置一個(gè)項(xiàng)目啟動(dòng)端口。
配置文件端口配置不再講解,前一期里面有配置文件詳解,不會(huì)的可以回去看看。
啟動(dòng)項(xiàng)目,瀏覽器輸入:localhost:8088/index.html
你會(huì)發(fā)現(xiàn)頁(yè)面是404,這時(shí)候我們是訪問(wèn)不了這個(gè)頁(yè)面的。然后你可能會(huì)說(shuō)localhost:8088/templates/index.html,你會(huì)發(fā)現(xiàn)都不行都不行!
因?yàn)镾pringboot的默認(rèn)資源配置里面沒有這個(gè)templates路徑,但是有static路徑。
(1)Springboot中默認(rèn)的靜態(tài)資源路徑:
- classpath:/static;
- classpath:/public;
- classpath:/resources;
- classpath:/META-INF/resources
classpath 在項(xiàng)目中就相當(dāng)于src/main/resources文件夾.
就是說(shuō)如果你把html文件直接放在static路徑下面是可以直接訪問(wèn)的,有兩種訪問(wèn)方式。
當(dāng)你添加了start-web的依賴,resources下面是會(huì)默認(rèn)生成一個(gè)static文件夾以及templates文件夾。
(2)自定義靜態(tài)資源路徑。
spring.resources.static-locations=classpath:templates/
我們配置了靜態(tài)資源路徑映射之后,我們只能訪問(wèn)這個(gè)路徑下面的資源,也就是相當(dāng)于自定義了靜態(tài)資源路徑,就是說(shuō)默認(rèn)的靜態(tài)資源路徑都會(huì)失效。
(3)兩種訪問(wèn)靜態(tài)資源的方式
一種是直接通過(guò)特定的URL訪問(wèn):我們配置好后,啟動(dòng)項(xiàng)目,瀏覽器輸入:localhost:8088/index.html 就可以正常訪問(wèn)我們的靜態(tài)資源了。
效果圖如下:
然后還有一種訪問(wèn)資源的方法。是使用代碼是實(shí)現(xiàn)的。
我們?cè)诤蛦?dòng)文件同級(jí)目錄下面創(chuàng)建一個(gè)controller文件夾,然后創(chuàng)建一個(gè)Testcontroller,代碼如下:
/** * @author 全棧學(xué)習(xí)筆記 * @date 2020/4/12 12:20 * @description */ @Controller public class TestController { @RequestMapping("/getHtml") public String getHtml(){ return "index.html"; } }
說(shuō)明:這個(gè)@Controller ,意思標(biāo)記這個(gè)類為控制類,或者說(shuō)他是一個(gè)Springmvc controller對(duì)象,標(biāo)記之后,默認(rèn)這個(gè)類的所有方法返回的是一個(gè)頁(yè)面。然后這個(gè)@RequestMapping的注解是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解,可用于類或方法上。用于方法之上時(shí),你可以通過(guò)URL直接訪問(wèn)這個(gè)方法。
到這里,我們就可以利用自定義URL訪問(wèn)靜態(tài)資源了。在瀏覽器里面輸入:localhost:8088/getHtml 也能正常訪問(wèn)靜態(tài)資源。圖片也是一樣的。
3、其他靜態(tài)資源路徑配置方式
(1)繼承WebMvcConfigurerAdapter
我們通過(guò)重寫這個(gè)類的addResourceHandlers方法,定義資源路徑
/** * @author 全棧學(xué)習(xí)筆記 * @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)優(yōu)化配置
你會(huì)看到之前的那種利用代碼的URL路徑訪問(wèn)靜態(tài)資源文件的寫法,我們需要在返回的地方寫上文件的名稱以及文件的后綴名,當(dāng)我們要返回某一類型的文件時(shí),這樣寫就相對(duì)比較麻煩,所以我們可以通過(guò)以下配置來(lái)解決這個(gè)問(wèn)題。
#加前綴 spring.mvc.view.prefix=/ #加后綴 spring.mvc.view.suffix=.html
通過(guò)以上的配置,我們之前的controller里面的方法返回就可以寫成這樣。
@RequestMapping("/getHtml") public String getHtml(){ return "index"; }
總結(jié):
靜態(tài)資源配置路徑的兩種常用方式: 一種是默認(rèn)配置,一種是自定義配置,自定義配置可以是代碼配置,可以是配置文件里面配置。這兩種配置方式都會(huì)使原來(lái)默認(rèn)的配置方式失效。
靜態(tài)資源的訪問(wèn)方式有兩種:一種是自己用代碼定義路徑,然后訪問(wèn),一種是直接利用特定的URL方式訪問(wèn)靜態(tài)資源。
到此這篇關(guān)于SpringBoot web靜態(tài)資源配置詳解的文章就介紹到這了,更多相關(guān)SpringBoot web靜態(tài)資源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Java中實(shí)現(xiàn)線程安全的單例模式的常見方式
單例模式是一種常用的軟件設(shè)計(jì)模式,它確保一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)點(diǎn),在多線程環(huán)境下,確保單例模式的線程安全性是非常重要的,因?yàn)槎鄠€(gè)線程可能會(huì)同時(shí)嘗試創(chuàng)建實(shí)例,導(dǎo)致實(shí)例不唯一的問(wèn)題,本文介紹了在Java中實(shí)現(xiàn)線程安全的單例模式有幾種常見的方式2024-09-09idea設(shè)置JVM運(yùn)行參數(shù)的幾種方式
對(duì)JVM運(yùn)行參數(shù)進(jìn)行修改是JVM性能調(diào)優(yōu)的重要手段,本文主要介紹了idea設(shè)置JVM運(yùn)行參數(shù)的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04JVM調(diào)優(yōu)參數(shù)的設(shè)置
Java虛擬機(jī)的調(diào)優(yōu)是一個(gè)復(fù)雜而關(guān)鍵的任務(wù),可以通過(guò)多種參數(shù)來(lái)實(shí)現(xiàn),本文就來(lái)介紹一下JVM調(diào)優(yōu)參數(shù)的設(shè)置,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03Java各種鎖在工作中使用場(chǎng)景和細(xì)節(jié)經(jīng)驗(yàn)總結(jié)
本章主要說(shuō)一說(shuō)鎖在工作中的使用場(chǎng)景,主要以 synchronized 和 CountDownLatch 為例,會(huì)分別描述一下這兩種鎖的使用場(chǎng)景和姿勢(shì)2022-03-03java連接數(shù)據(jù)庫(kù)知識(shí)點(diǎn)總結(jié)以及操作應(yīng)用
這篇文章主要給大家介紹了關(guān)于java連接數(shù)據(jù)庫(kù)知識(shí)點(diǎn)總結(jié)以及操作應(yīng)用的相關(guān)資料, 當(dāng)涉及到Java中數(shù)據(jù)庫(kù)數(shù)據(jù)處理時(shí),我們可以利用強(qiáng)大的Java數(shù)據(jù)庫(kù)連接技術(shù)與各種數(shù)據(jù)庫(kù)進(jìn)行交互,需要的朋友可以參考下2023-12-12淺析如何在Java應(yīng)用中優(yōu)雅的發(fā)送短信
很多業(yè)務(wù)場(chǎng)景里,我們都需要發(fā)送短信,比如登陸驗(yàn)證碼、告警、營(yíng)銷通知、節(jié)日祝福等等,這篇文章,我們聊聊 Java 應(yīng)用中如何優(yōu)雅的發(fā)送短信,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-11-11詳解springboot整合ueditor踩過(guò)的坑
這篇文章主要介紹了詳解springboot整合ueditor踩過(guò)的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06