SpringBoot異常處理之異常顯示的頁(yè)面問(wèn)題
導(dǎo)言
默認(rèn)情況下,SpringBoot 項(xiàng)目錯(cuò)誤頁(yè)面如下:


直接這樣太丑了,我們實(shí)際上線(xiàn)項(xiàng)目時(shí),如果給用戶(hù)顯示這個(gè)頁(yè)面就不是很友好,用戶(hù)直接不用了。
所以當(dāng)系統(tǒng)出現(xiàn)異常時(shí)應(yīng)該給用戶(hù)更加友好的錯(cuò)誤頁(yè)面,下面我們來(lái)看具體是如何實(shí)現(xiàn)的。
實(shí)現(xiàn)步驟
加入thymeleaf依賴(lài)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>在templates/下新建error文件夾

在error中新建:狀態(tài).html的頁(yè)面。例如當(dāng)出現(xiàn)500時(shí)顯示的頁(yè)面為500.html,當(dāng)出現(xiàn)404時(shí)顯示的頁(yè)面為404.html,
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>404</title>
</head>
<body>
<h1>
404!沒(méi)有這個(gè)請(qǐng)求,請(qǐng)檢查!
</h1>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>500</title>
</head>
<body>
<h1>
500!您的代碼出現(xiàn)了內(nèi)部錯(cuò)誤,請(qǐng)檢查!
</h1>
</body>
</html>
然后創(chuàng)建controller
@Controller
public class ErrorController {
@RequestMapping("/test")
public String testError(){
System.out.println(5/0);
// return "500";
return "500.html";
}
}
我們知道,在運(yùn)行上面代碼的時(shí)候發(fā)生算術(shù)異常。錯(cuò)誤碼為500。
測(cè)試如下:

使用X進(jìn)行模糊匹配
- 當(dāng)出現(xiàn)5開(kāi)頭狀態(tài)碼的錯(cuò)誤時(shí),顯示頁(yè)面可以命名為5xx.html
- 如果500.html和5xx.html同時(shí)存在,則會(huì)精確匹配相應(yīng)頁(yè)面。
我們把剛才的500.html改為5xx.html,也是可以的

因?yàn)榘l(fā)生了5開(kāi)頭的異常,會(huì)走5xx.html,測(cè)試如下:

統(tǒng)一錯(cuò)誤頁(yè)面顯示
在templates下新建error.html。如果項(xiàng)目中不存在具體狀態(tài)碼的頁(yè)面或沒(méi)有使用x成功匹配的頁(yè)面時(shí),顯示error.html作為錯(cuò)誤顯示頁(yè)面。
比如我們?cè)趀rror下沒(méi)有設(shè)置4xx相關(guān)的錯(cuò)誤頁(yè)面,當(dāng)發(fā)生狀態(tài)碼為4xx的錯(cuò)誤時(shí),找不到相關(guān)的錯(cuò)誤處理頁(yè)面,這時(shí)會(huì)走一個(gè)統(tǒng)一的錯(cuò)誤處理頁(yè)面。一般會(huì)在templates下創(chuàng)建error.html,作為統(tǒng)一的錯(cuò)誤處理頁(yè)面。
在templates下創(chuàng)建error.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>error</title>
</head>
<body>
<h1>
error?。?!
</h1>
</body>
</html>當(dāng)發(fā)生404錯(cuò)誤時(shí),會(huì)自動(dòng)走error.html

到此這篇關(guān)于SpringBoot異常處理之異常顯示的頁(yè)面問(wèn)題的文章就介紹到這了,更多相關(guān)SpringBoot異常處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot整合Web開(kāi)發(fā)之文件上傳與@ControllerAdvice
- SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理
- 詳解如何在SpringBoot項(xiàng)目中使用全局異常處理
- SpringBoot異常處理器的使用與添加員工功能實(shí)現(xiàn)流程介紹
- SpringBoot優(yōu)雅地實(shí)現(xiàn)全局異常處理的方法詳解
- Springboot項(xiàng)目異常處理及返回結(jié)果統(tǒng)一
- SpringBoot @ExceptionHandler與@ControllerAdvice異常處理詳解
相關(guān)文章
Java日期毫秒值和常見(jiàn)日期時(shí)間格式相互轉(zhuǎn)換方法
這篇文章主要給大家介紹了關(guān)于Java日期毫秒值和常見(jiàn)日期時(shí)間格式相互轉(zhuǎn)換的相關(guān)資料,在Java的日常開(kāi)發(fā)中,會(huì)隨時(shí)遇到需要對(duì)時(shí)間處理的情況,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考下2023-07-07
SpringBoot下獲取resources目錄下文件的常用方法
本文詳細(xì)介紹了SpringBoot獲取resources目錄下文件的常用方法,包括使用this.getClass()方法、ClassPathResource獲取以及hutool工具類(lèi)ResourceUtil獲取,感興趣的可以了解一下2024-10-10
一文詳解java如何實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用
從?Java?8?開(kāi)始,便引入了一種稱(chēng)為“流式?API”的編程風(fēng)格,當(dāng)然也被稱(chēng)為“鏈?zhǔn)皆O(shè)置”或“鏈?zhǔn)秸{(diào)用”,本文主要來(lái)和大家討論一下如何實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用,感興趣的可以了解下2023-12-12
java實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)KFC點(diǎn)餐系統(tǒng),模擬肯德基快餐店的收銀系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
Mybatis 實(shí)現(xiàn)打印sql語(yǔ)句的代碼
這篇文章主要介紹了Mybatis 實(shí)現(xiàn)打印sql語(yǔ)句的代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Spring解決循環(huán)依賴(lài)的方法(三級(jí)緩存)
今天,我們要說(shuō)的是spring是如何解決循環(huán)依賴(lài)的。對(duì)于一個(gè)問(wèn)題說(shuō)解決之前,我們首先要先明確形成問(wèn)題的本因。那么循環(huán)依賴(lài),何為循環(huán)依賴(lài)呢?感興趣的朋友跟隨小編一起看看吧2021-11-11
SpringBoot定制化Starter實(shí)現(xiàn)方法
小伙伴們?cè)?jīng)可能都經(jīng)歷過(guò)整天寫(xiě)著CURD的業(yè)務(wù),都沒(méi)寫(xiě)過(guò)一些組件相關(guān)的東西,這篇文章記錄一下SpringBoot如何自定義一個(gè)Starter。原理和理論就不用多說(shuō)了,可以在網(wǎng)上找到很多關(guān)于該方面的資料,這里主要分享如何自定義2023-01-01

