預設的處理效果:
瀏覽器返回乙個錯誤頁面404
如果是其他客戶端,預設響應乙個json資料
原理:errormvcautoconfiguration錯誤處理的自動配置
給容器新增了一下元件:
//errorattributes,容器中沒有這個元件則自動配置乙個defaulterrorattributes,即我們看見的錯誤處理
@bean
@conditionalo****singbean(
value = ,
search = searchstrategy.current
)public defaulterrorattributes errorattributes()
//errorcontroller
@bean
@conditionalo****singbean(
value = ,
search = searchstrategy.current
)public basicerrorcontroller basicerrorcontroller(errorattributes errorattributes, objectprovidererrorviewresolvers)
//errorpagecustomizer
@bean
public errormvcautoconfiguration.errorpagecustomizer errorpagecustomizer(dispatcherservletpath dispatcherservletpath)
//defaulterrorviewresolver
@bean
@conditionalonbean()
@conditionalo****singbean()
defaulterrorviewresolver conventionerrorviewresolver()
步驟:
一旦系統出現4xx或者5xx之類的錯誤,errorpagecustomizer就會生效(定製錯誤的響應規則),就會被basicerrorcontroller處理
響應頁面:去哪個頁面是由defaulterrorviewresolver解析得到的;通過defaulterrorattributes獲得錯誤頁面可共享的資訊:
status:狀態碼
exception:異常物件
message:異常訊息
error :錯誤提示
timestamp:時間戳
errors:jsr303校驗的錯誤
原始碼如下:
defaulterrorattributes
//幫我們在頁面共享資訊
public mapgeterrorattributes(webrequest webrequest, errorattributeoptions options) );
}if (!options.isincluded(include.exception))
if (!options.isincluded(include.stack_trace))
if (!options.isincluded(include.message) && errorattributes.get("message") != null)
if (!options.isincluded(include.binding_errors))
return errorattributes;
}public mapgeterrorattributes(webrequest webrequest, boolean includestacktrace)
basicerrorcontroller
@controller
public class basicerrorcontroller extends abstracterrorcontroller }如果有配置檔案中配置路徑,也能獲取
//瀏覽器傳送的請求請求頭帶有text/html,會來到這個方法處理
produces = //返回html格式
//其他的裝置請求頭不會有text/html,就來到這個方法
系統出現錯誤以後,來到error請求進行處理;
//呼叫errorviewresolver獲取所有錯誤頁面,取到對應的就返回
this簡單認識
this 在函式中簡單的說,this的指向存在於函式呼叫的時候決定的,誰呼叫了這函式 函式中的this就指向誰 例如 1 普通的呼叫函式的時候 fn window2 物件呼叫 var obj obj.f fn obj.f this obj3 定時器呼叫 因為fn不是我們自己手寫 呼叫的 底層是win...
NSRunloop的簡單認識
最早接觸runloop的概念,是第一次用nstimer的時候。乙個最簡單的例子 void viewdidload 如果我們同時在介面上滾動乙個scrollview,那麼我們會發現在滾動停止之前,控制台是不會有輸出的,就好像scrollview在滾動的時候將timer暫停了一樣。通過了解後發現,其實是...
Socket的簡單認識
socket又稱 套接字 網路上的兩個程式通過乙個 雙向的通訊連線實現資料的交換 這個連線的一端稱為乙個 socket。應用程式通常通過 套接字 向網路發出請求或者應答網路請求 網路通訊的要素 網路上的請求就是通過 socket 來建立連線然後互相通訊 ip位址 網路上主機裝置的 唯一標識 埠號 定...