錯誤處理
友好頁面
先演示非友好頁面稠曼,修改 FastJsonController 類中的 test 方法:
[圖片上傳失敗...(image-adcc6f-1524637491856)]
[圖片上傳失敗...(image-a605b3-1524637491856)]
當(dāng)系統(tǒng)報錯時,返回到頁面的內(nèi)容通常是一些雜亂的代碼段客年,這種顯示對用戶來說不友好霞幅,因此我們需要自定義一個友好的提示系統(tǒng)異常的頁面。
在 src/main/resources 下創(chuàng)建 /public/error量瓜,在該目錄下再創(chuàng)建一個名為 5xx.html 文件司恳,該頁面的內(nèi)容就是當(dāng)系統(tǒng)報錯時返回給用戶瀏覽的內(nèi)容:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>系統(tǒng)錯誤</title>
<link href="/css/index.css" rel="stylesheet"/>
</head>
<body>
<div>
<h2>系統(tǒng)內(nèi)部錯誤</h2>
</div>
</body>
</html>
路徑時固定的,Spring Boot 會在系統(tǒng)報錯時將返回視圖指向該目錄下的文件榔至。
如下圖:
[圖片上傳失敗...(image-5f24a2-1524637491856)]
上邊處理的 5xx 狀態(tài)碼的問題抵赢,接下來解決 404 狀態(tài)碼的問題欺劳。
當(dāng)出現(xiàn) 404 的情況時唧取,用戶瀏覽的頁面也不夠友好,因此我們也需要自定義一個友好的頁面給用戶展示划提。
在 /public/error 目錄下再創(chuàng)建一個名為 404.html 的文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>訪問異常</title>
<link href="/css/index.css" rel="stylesheet"/>
</head>
<body>
<div>
<h2>找不到頁面</h2>
</div>
</body>
</html>
我們請求一個不存在的資源枫弟,如:http://localhost:8080/fastjson/test2,結(jié)果如下圖:
[圖片上傳失敗...(image-3be006-1524637491856)]
全局異常捕獲
如果項目前后端是通過 JSON 進(jìn)行數(shù)據(jù)通信鹏往,則當(dāng)出現(xiàn)異常時可以常用如下方式處理異常信息淡诗。
編寫一個類充當(dāng)全局異常的處理類,需要使用 @ControllerAdvice 和 @ExceptionHandler 注解:
[圖片上傳失敗...(image-f92646-1524637491856)]
其中伊履,方法名為任意名,入?yún)⒁话闶褂?Exception 異常類,方法返回值可自定義伍纫。
啟動項目噪沙,訪問 http://localhost:8080/fastjson/test,結(jié)果如下圖:
[圖片上傳失敗...(image-b11c78-1524637491856)]
我們還可以自定義異常哄辣,在全局異常的處理類中捕獲和判斷请梢,從而對不同的異常做出不同的處理赠尾。
文件上傳和下載
添加依賴
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
實現(xiàn)
public class FileInfo {
private String path;
public FileInfo(String path) {
this.path = path;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
}
[圖片上傳中...(image-214f96-1524637491856-1)]
基本上都是在學(xué)習(xí) javaweb 時用到的 API。
文件上傳測試結(jié)果如下圖: