Springboot系列(四)web靜態(tài)資源配置

Springboot系列(四)web靜態(tài)資源配置

引言:
SpringBoot web項(xiàng)目開(kāi)發(fā)中往往會(huì)涉及到一些靜態(tài)資源的使用吠昭,比如說(shuō)圖片怎诫,css樣式幻妓,js等等劫拢,今天我們來(lái)講講這些常見(jiàn)的靜態(tài)資源應(yīng)該放在哪個(gè)位置,怎么放在自己想放的位置妹沙。

1. 項(xiàng)目創(chuàng)建

我們先創(chuàng)建一個(gè)空的項(xiàng)目距糖,項(xiàng)目的依賴(lài)配置為starter-web依賴(lài)牵寺,創(chuàng)建好的項(xiàng)目下面有一個(gè)resources文件夾,里面有一些空的默認(rèn)的文件夾趣斤,然后有一個(gè)配置文件黎休。

靜態(tài)資源.png

templates文件下面一般是放置模板頁(yè)面的势腮,比如html捎拯,jsp之類(lèi)的,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è)面孙乖,然后隨便寫(xiě)一點(diǎn)東西,然后在配置文件中弯屈,配置一個(gè)項(xiàng)目啟動(dòng)端口资厉。

html5文件

html5.png

配置文件端口配置不再講解宴偿,前一期里面有配置文件詳解窄刘,不會(huì)的可以回去看看娩践。
啟動(dòng)項(xiàng)目欺矫,瀏覽器輸入:http://localhost:8088/index.html
你會(huì)發(fā)現(xiàn)頁(yè)面是404展氓,這時(shí)候我們是訪問(wèn)不了這個(gè)頁(yè)面的。然后你可能會(huì)說(shuō)http://localhost:8088/templates/index.html未妹,你會(huì)發(fā)現(xiàn)都不行都不行络它!

因?yàn)镾pringboot的默認(rèn)資源配置里面沒(méi)有這個(gè)templates路徑化戳,但是有static路徑。
Springboot中默認(rèn)的靜態(tài)資源路徑有一下幾種:

  1. classpath:/static,
  2. classpath:/public,
  3. classpath:/resources,
  4. classpath:/META-INF/resources,

classpath 在項(xiàng)目中就相當(dāng)于src/main/resources文件夾.

就是說(shuō)如果你把html文件直接放在static路徑下面是可以直接訪問(wèn)的掠廓,有兩種訪問(wèn)方式蟀瞧。

當(dāng)你添加了start-web的依賴(lài),resources下面是會(huì)默認(rèn)生成一個(gè)static文件夾以及templates文件夾铸屉。
如果要訪問(wèn)templates下面的靜態(tài)資源是需要自己在配置文件里面配置的抬探。

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

我們配置了靜態(tài)資源路徑映射之后,我們只能訪問(wèn)這個(gè)路徑下面的資源椰于,也就是相當(dāng)于自定義了靜態(tài)資源路徑,就是說(shuō)默認(rèn)的靜態(tài)資源路徑都會(huì)失效仪搔。

兩種訪問(wèn)靜態(tài)資源的方式瘾婿,一種是直接通過(guò)特定的URL訪問(wèn):我們配置好后,啟動(dòng)項(xiàng)目烤咧,瀏覽器輸入:http://localhost:8088/index.html 就可以正常訪問(wèn)我們的靜態(tài)資源了偏陪。
效果圖如下

資源訪問(wèn).png

然后還有一種訪問(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è)類(lèi)為控制類(lèi)昌阿,或者說(shuō)他是一個(gè)Springmvc controller對(duì)象饥脑,標(biāo)記之后,默認(rèn)這個(gè)類(lèi)的所有方法返回的是一個(gè)頁(yè)面懦冰。然后這個(gè)@RequestMapping的注解是一個(gè)用來(lái)處理請(qǐng)求地址映射的注解笋颤,可用于類(lèi)或方法上。用于方法之上時(shí),你可以通過(guò)URL直接訪問(wèn)這個(gè)方法清焕。它還有一些其他的參數(shù),這里就不講解了键畴。后面會(huì)出一期Springboot常用注解的說(shuō)明咏删。有興趣的可以 wx 搜索 全棧學(xué)習(xí)筆記嘀粱。

到這里宛篇,我們就可以利用自定義URL訪問(wèn)靜態(tài)資源了。在瀏覽器里面輸入:http://localhost:8088/getHtml 也能正常訪問(wèn)靜態(tài)資源涯冠。圖片也是一樣的赛糟。

3. 其他靜態(tài)資源路徑配置方式

1. 繼承WebMvcConfigurerAdapter

我們通過(guò)重寫(xiě)這個(gè)類(lèi)的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)資源文件的寫(xiě)法篓像,我們需要在返回的地方寫(xiě)上文件的名稱(chēng)以及文件的后綴名鸵鸥,當(dāng)我們要返回某一類(lèi)型的文件時(shí)宋税,這樣寫(xiě)就相對(duì)比較麻煩,所以我們可以通過(guò)以下配置來(lái)解決這個(gè)問(wèn)題阔墩。

#加前綴
spring.mvc.view.prefix=/
#加后綴
spring.mvc.view.suffix=.html

通過(guò)以上的配置,我們之前的controller里面的方法返回就可以寫(xiě)成這樣。

@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)資源。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末揍愁,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖是钥,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厨相,死亡現(xiàn)場(chǎng)離奇詭異庶骄,居然都是意外死亡府适,警方通過(guò)查閱死者的電腦和手機(jī)喇聊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)虐骑,“玉大人,你說(shuō)我怎么就攤上這事∥呐校” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵股耽,是天一觀的道長(zhǎng)物蝙。 經(jīng)常有香客問(wèn)我钠导,道長(zhǎng)牡属,這世上最難降的妖魔是什么措伐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任短蜕,我火速辦了婚禮窥摄,結(jié)果婚禮上建峭,老公的妹妹穿的比我還像新娘。我一直安慰自己决摧,他們只是感情好亿蒸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著掌桩,像睡著了一般祝懂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拘鞋,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音矢门,去河邊找鬼盆色。 笑死,一個(gè)胖子當(dāng)著我的面吹牛祟剔,可吹牛的內(nèi)容都是我干的隔躲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼物延,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宣旱!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起叛薯,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤浑吟,失蹤者是張志新(化名)和其女友劉穎笙纤,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體组力,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡省容,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了燎字。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腥椒。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖候衍,靈堂內(nèi)的尸體忽然破棺而出笼蛛,到底是詐尸還是另有隱情,我是刑警寧澤蛉鹿,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布滨砍,位于F島的核電站,受9級(jí)特大地震影響榨为,放射性物質(zhì)發(fā)生泄漏惨好。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一随闺、第九天 我趴在偏房一處隱蔽的房頂上張望日川。 院中可真熱鬧,春花似錦矩乐、人聲如沸龄句。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)分歇。三九已至,卻和暖如春欧漱,著一層夾襖步出監(jiān)牢的瞬間职抡,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工误甚, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缚甩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓窑邦,卻偏偏與公主長(zhǎng)得像擅威,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冈钦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容