SpringBoot中自定義首頁(yè)(默認(rèn)頁(yè))及favicon的方法
一、前言
之前就有小伙伴問我,SpringBoot項(xiàng)目如何自定義首頁(yè),因?yàn)榭吹絼e人項(xiàng)目首頁(yè)都挺漂亮的,今天剛剛說一下這個(gè)首頁(yè),順帶也說一下favicon。
二、自定義首頁(yè)
在了解如何自定義首頁(yè)之前,還是需要先了解一下SpringBoot中默認(rèn)情況下訪問靜態(tài)資源的解決方案,可以參考我之前的博客,http://www.dbjr.com.cn/program/293798lcn.htm。
上面的博客中提到了共有5個(gè)路徑,這5個(gè)路徑下放首頁(yè)都可生效。下面我將一探究竟。
首先,在classpath:/static/
和classpath:/templates/
下,分別放入index.html
,至于里面顯示的內(nèi)容可以區(qū)分一下,如下:
【classpath:/static/
-> index.html】
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>hello static !</h1> </body> </html>
【classpath:/templates/
-> index.html】
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>hello thymeleaf !</h1> </body> </html>
至于為什么在classpath:/templates/
下放index.html
,是因?yàn)槲倚枰?yàn)證一下,如果classpath:/static/
下沒有index.html
文件時(shí),是否會(huì)訪問classpath:/templates/
下的index.html
文件?
因?yàn)?code>classpath:/templates/下的模板,一般情況下,需要使用Controller
來(lái)訪問,所以,這里我們還需要定義一個(gè)HelloController
,如下:
@Controller public class HelloController { @GetMapping("/index") public String hello(){ return "index"; } }
啟動(dòng)項(xiàng)目,在瀏覽器地址欄輸入http://localhost:8080/
,看到底訪問的是哪個(gè)index.html
文件,如下:
可以看到,默認(rèn)情況下,是訪問classpath:/static/
下的index.html
,那么接下來(lái),我們把classpath:/static/
下的index.html
文件刪除,然后重啟項(xiàng)目,在瀏覽器使用Ctrl+F5
刷新一下,再看看,如下:
這個(gè)結(jié)果正好驗(yàn)證了我上面的假設(shè)是成立的,所以我們學(xué)習(xí)知識(shí),不能靠假設(shè),還需要通過源碼來(lái)驗(yàn)證你的假設(shè),下面我將對(duì)上面兩種情況用源碼進(jìn)行驗(yàn)證。
三、源碼剖析
首先,我們找到WebMvcAutoConfiguration
類中的getWelcomePage
方法,如下:
該方法中的第一行,其實(shí)就很熟悉了,我上面給的那篇博客中有詳細(xì)的介紹,這里我只說明第一行,共返回了5個(gè)目錄,分別是:classpath:/META-INF/resources/
、classpath:/resources/
、classpath:/static/
、classpath:/public/
、/
,所以你的index.html
放在上面的哪個(gè)目錄下都行。第二行就是在這5個(gè)目錄下依次去尋找index.html
,有一個(gè)getIndexHtml
方法,就是它的功勞,如下:
接下來(lái),我們?cè)倏纯礊槭裁?code>classpath:/static/下沒有index.html
文件時(shí),默認(rèn)會(huì)訪問classpath:/templates/
下的index.html
,因?yàn)閯?chuàng)建項(xiàng)目時(shí),我添加了thymeleaf
依賴,如下:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
如果沒有上面這個(gè)依賴,上面的假設(shè)將不會(huì)成立,那為什么添加了這個(gè)依賴后,這個(gè)假設(shè)就成立呢?
因?yàn)镾pringBoot默認(rèn)已經(jīng)集成了4種類型的模板,如下:
所以,只要添加了模板依賴,classpath:/templates/
下的模板文件便可以訪問。
四、自定義favicon
給大家推薦一個(gè)制作favicon
的網(wǎng)站,如:https://tool.lu/favicon/。
先在上面的網(wǎng)站中,制作好自己想要的favicon
,然后將該favicon
放在項(xiàng)目的classpath:/static/
下,其他favicon
可以放的目錄和靜態(tài)資源可放目錄基本相同,至于為什么放classpath:/static/
下呢?因?yàn)閯?chuàng)建項(xiàng)目時(shí),該目錄默認(rèn)被創(chuàng)建好了,所以就放在它下面即可,如下:
運(yùn)行結(jié)果如下:
五、源碼地址
https://github.com/java22/welcome
到此這篇關(guān)于SpringBoot中如何自定義首頁(yè)(默認(rèn)頁(yè))及favicon的文章就介紹到這了,更多相關(guān)springboot自定義首頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot實(shí)現(xiàn)文件上傳和下載功能
這篇文章主要為大家詳細(xì)介紹了springboot實(shí)現(xiàn)文件上傳和下載功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Java使用Poi導(dǎo)出Excel表格方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Java使用Poi導(dǎo)出Excel表格的相關(guān)資料,Java POI是一個(gè)用于操作Microsoft Office格式的Java API庫(kù),可以使用它來(lái)導(dǎo)出Excel文件,需要的朋友可以參考下2023-10-10關(guān)于重寫equals()方法和hashCode()方法及其簡(jiǎn)單的應(yīng)用
這篇文章主要介紹了關(guān)于重寫equals()方法和hashCode()方法及其簡(jiǎn)單的應(yīng)用,網(wǎng)上的知識(shí)有些可能是錯(cuò)誤的,關(guān)于?equals()?方法的理解,大家討論不一樣,需要的朋友可以參考下2023-04-04springmvc使用REST出現(xiàn):Request?method?'PUT'?not?sup
這篇文章主要介紹了springmvc使用REST出現(xiàn):Request?method?'PUT'?not?supported問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02Java 實(shí)戰(zhàn)項(xiàng)目之精品養(yǎng)老院管理系統(tǒng)的實(shí)現(xiàn)流程
讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Springboot+Maven+mybatis+Vue+Mysql實(shí)現(xiàn)一個(gè)精品養(yǎng)老院管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11