我們在做web應用的時候,請求處理過程中發生錯誤是非常常見的情況。spring boot提供了乙個預設的對映:/error
,當處理中丟擲異常之後,會轉到該請求中處理,並且該請求有乙個全域性的錯誤頁面用來展示異常內容。springboot預設的錯誤頁面效果如下:
雖然,spring boot中實現了預設的error對映,但是在實際應用中,上面你的錯誤頁面對使用者來說並不夠友好,我們通常需要去實現我們自己的異常提示。
我們可以通過使用@controlleradvice
定義統一的異常處理類,而不是在每個controller中逐個定義。@exceptionhandler
用來定義函式針對的異常型別,最後將exception物件和請求url對映到error.html
中
@controlleradvice實現public
class
globalexceptionhandler
}
error.html
頁面展示:在templates
目錄下建立error.html
,將請求的url和exception物件的message輸出。
"$啟動該應用,訪問:">"$
">
http://localhost:8080/hello
,可以看到如下錯誤提示頁面。
通過實現上述內容之後,我們只需要在controller
中丟擲exception
,當然我們可能會有多種不同的exception
。然後在@controlleradvice
類中,根據丟擲的具體exception
型別匹配@exceptionhandler
中配置的異常型別來匹配錯誤對映和處理。
在上述例子中,通過@controlleradvice
統一定義不同exception對映到不同錯誤處理頁面。而當我們要實現restful api時,返回的錯誤是json格式的資料,而不是html頁面,這時候我們也能輕鬆支援。
本質上,只需在@exceptionhandler
之後加入@responsebody
,就能讓處理函式return的內容轉換為json格式。
建立統一的json返回物件,code:訊息型別,message:訊息內容,url:請求的url,data:請求返回的資料
public建立異常處理類class errorinfo
@controlleradvicepublic
class
globalexceptionhandler
}
SpringBoot中的響應式web應用
在spring 5中,spring mvc引入了webflux的概念,webflux的底層是基於reactor netty來的,而reactor netty又使用了reactor庫。本文將會介紹在spring boot中reactive在webflux中的使用。前面我們講到了,webflux的基礎是...
springboot(二) 在Web中開發應用
springboot中靜態資源訪問 在開發web應用的時候,需要引用大量的js css 等靜態資源。spring boot預設提供靜態資源目錄位置需置於classpath下,目錄名需符合如下規則 static public resources meta inf resources 啟動程式後訪問路徑...
springboot 渲染web頁面
spring boot提供了預設配置的模板引擎主要有以下幾種 注意 避免使用jsp,jsp無法實現spring boot的多種特性 org.springframework.bootgroupid spring boot starter webartifactid dependency org.spr...