原文地址 :https://blog.csdn.net/amaxiaochen/article/details/77210880
springmvc的攔截器實現HandlerInterceptor接口後,會有三個抽象方法需要實現,分別爲方法前執行preHandle,方法後postHandle,頁面渲染後afterCompletion。
1、當倆個攔截器都實現放行操作時,順序爲preHandle 1,preHandle 2,postHandle 2,postHandle 1,afterCompletion 2,afterCompletion 1
2、當第一個攔截器preHandle返回false,也就是對其進行攔截時,第二個攔截器是完全不執行的,第一個攔截器只執行preHandle部分。
3、當第一個攔截器preHandle返回true,第二個攔截器preHandle返回false,順序爲preHandle 1,preHandle 2 ,afterCompletion 1
總結:
preHandle 按攔截器定義順序調用
postHandler 按攔截器定義逆序調用
afterCompletion 按攔截器定義逆序調用
postHandler 在攔截器鏈內所有攔截器返成功調用
afterCompletion 只有preHandle返回true才調用