Spring Boot 項(xiàng)目設(shè)置網(wǎng)站圖標(biāo)的方法
正常情況下,每個(gè)網(wǎng)站都會(huì)有一個(gè)對(duì)應(yīng)的網(wǎng)站圖標(biāo)(Favicon),在瀏覽器訪問網(wǎng)站時(shí),對(duì)應(yīng)的瀏覽器標(biāo)簽上會(huì)出現(xiàn)對(duì)應(yīng)的圖標(biāo)。如下圖百度的圖標(biāo):

對(duì)此Spring Boot項(xiàng)目也提供了支持,但不同版本有所區(qū)別,在最新版本中的使用,網(wǎng)絡(luò)上大多數(shù)文章已經(jīng)失效,本篇文章帶大家看一下Spring Boot 2.x版本中的使用情況。
Spring Boot不同版本對(duì)Favicon的支持
在早些版本中Spring Boot對(duì)Favicon進(jìn)行了默認(rèn)支持,并且通過如下配置進(jìn)行關(guān)閉操作:
spring.mvc.favicon.enabled=false ## 關(guān)閉
默認(rèn)顯示效果如下:

但在Spring Boot項(xiàng)目的issues中提出,如果提供默認(rèn)的Favicon可能會(huì)導(dǎo)致網(wǎng)站信息泄露。如果用戶不進(jìn)行自定義的Favicon的設(shè)置,而Spring Boot項(xiàng)目會(huì)提供默認(rèn)的上圖圖標(biāo),那么勢(shì)必會(huì)導(dǎo)致泄露網(wǎng)站的開發(fā)框架。
因此,在Spring Boot2.2.x中,將默認(rèn)的favicon.ico移除,同時(shí)也不再提供上述application.properties中的屬性配置。更多詳細(xì)信息可查看對(duì)應(yīng)的issues:https://github.com/spring-projects/spring-boot/issues/17925 。
自定義Favicon
既然在當(dāng)前版本中Spring Boot不支持默認(rèn)的Favicon,我們就來(lái)看看如何自定義網(wǎng)站的Favicon。
正常情況下,直接將命名為favicon.ico的網(wǎng)站圖標(biāo)放在resources或static目錄即可顯示,但如果使用的版本無(wú)法顯示。
首先排除瀏覽器緩存的問題。在撰寫本文時(shí)多次遇到瀏覽器緩存導(dǎo)致無(wú)法展示的情況。一般操作步驟,清除瀏覽器緩存,重啟瀏覽器,即可展示。
同時(shí),如果需要在頁(yè)面中通過代碼進(jìn)行引入。下面展示使用Thymeleaf時(shí)的引入方式:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8"/>
<title>Hello Favicon</title>
<link rel="icon" th:href="@{/favicon.ico}" rel="external nofollow" rel="external nofollow" type="image/x-icon"/>
<link rel="bookmark" th:href="@{/favicon.ico}" rel="external nofollow" rel="external nofollow" type="image/x-icon"/>
</head>
<body>
<h1>Hello Favicon!</h1>
</body>
</html>
如果使用其他前端框架,可使用如下方式:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Hello Favicon</title> <link rel="icon" href="/favicon.ico" rel="external nofollow" rel="external nofollow" type="image/x-icon"/> <link rel="bookmark" href="/favicon.ico" rel="external nofollow" rel="external nofollow" type="image/x-icon"/> </head> <body> <h1>Hello Favicon!</h1> </body> </html>
上述方式有一個(gè)弊端,那就是需要在每個(gè)展示的頁(yè)面中都添加對(duì)應(yīng)的代碼。
注意事項(xiàng)
在使用的過程中,遇到最多的問題其實(shí)就是緩存導(dǎo)致的問題,比如Thymeleaf緩存未關(guān)閉、瀏覽器緩存等。
所以,如果在瀏覽器中打開網(wǎng)頁(yè)并沒有展示出效果,并不代表程序沒起效。這時(shí),可采用直接訪問favicoin的形式來(lái)驗(yàn)證。
http://localhost:8080/favicon.ico
在瀏覽器訪問上述鏈接,如果能夠展示圖標(biāo),則說明已經(jīng)可以正常訪問了。
另外,在web項(xiàng)目中,如果自定義了Web相關(guān)組件或攔截器也有可能導(dǎo)致無(wú)法顯示或404,可對(duì)其進(jìn)行有針對(duì)性的排查。
總結(jié)
以上所述是小編給大家介紹的Spring Boot 項(xiàng)目設(shè)置網(wǎng)站圖標(biāo)的方法,希望對(duì)大家有幫助!
- VsCode搭建Spring Boot項(xiàng)目并進(jìn)行創(chuàng)建、運(yùn)行、調(diào)試
- Springboot項(xiàng)目javax.validation使用方法詳解
- SpringBoot項(xiàng)目application.yml文件數(shù)據(jù)庫(kù)配置密碼加密的方法
- 如何運(yùn)行SpringBoot項(xiàng)目的方法
- Springboot項(xiàng)目監(jiān)聽器失效問題解決
- 超個(gè)性修改SpringBoot項(xiàng)目的啟動(dòng)banner的方法
- SpringBoot項(xiàng)目中處理返回json的null值(springboot項(xiàng)目為例)
- 基于SpringBoot構(gòu)建電商秒殺項(xiàng)目代碼實(shí)例
相關(guān)文章
springboot 自定義異常并捕獲異常返給前端的實(shí)現(xiàn)代碼
在開發(fā)中,如果用try catch的方式,每個(gè)方法都需要單獨(dú)實(shí)現(xiàn),為了方便分類異常,返回給前端,采用了@ControllerAdvice注解和繼承了RuntimeException的方式來(lái)實(shí)現(xiàn),具體實(shí)現(xiàn)內(nèi)容跟隨小編一起看看吧2021-11-11
SpringBoot WebSocket實(shí)時(shí)監(jiān)控異常的詳細(xì)流程
最近做了一個(gè)需求,消防的設(shè)備巡檢,如果巡檢發(fā)現(xiàn)異常,通過手機(jī)端提交,后臺(tái)的實(shí)時(shí)監(jiān)控頁(yè)面實(shí)時(shí)獲取到該設(shè)備的信息及位置,然后安排員工去處理。這篇文章主要介紹了SpringBoot WebSocket實(shí)時(shí)監(jiān)控異常的全過程,感興趣的朋友一起看看吧2021-10-10
Spring中@Configuration注解的使用場(chǎng)景
這篇文章主要介紹了Spring中@Configuration注解的使用場(chǎng)景,@Configuration注解是從Spring?3.0版本開始加入的一個(gè)使Spring能夠支持注解驅(qū)動(dòng)開發(fā)的標(biāo)注型注解,主要用于標(biāo)注在類上,需要的朋友可以參考下2023-11-11
詳解Java的Spring框架下bean的自動(dòng)裝載方式
這篇文章主要介紹了Java的Spring框架下bean的自動(dòng)裝載方式,Spring是Java的SSH三大web開發(fā)框架之一,需要的朋友可以參考下2015-12-12
SpringSecurity中內(nèi)置過濾器的使用小結(jié)
SpringSecurity通過其復(fù)雜的過濾器鏈機(jī)制,為Java應(yīng)用提供了全面的安全防護(hù),本文主要介紹了SpringSecurity中內(nèi)置過濾器的使用小結(jié),感性的可以了解一下2025-03-03
Java應(yīng)用多機(jī)器部署解決大量定時(shí)任務(wù)問題
這篇文章主要介紹了Java應(yīng)用多機(jī)器部署解決大量定時(shí)任務(wù)問題,兩臺(tái)服務(wù)器同時(shí)部署了同一套代碼, 代碼中寫有spring自帶的定時(shí)任務(wù),但是每次執(zhí)行定時(shí)任務(wù)時(shí)只需要一臺(tái)機(jī)器去執(zhí)行,需要的朋友可以參考下2019-07-07

