關於攔截器的理解
1、 HandlerInterceptorAdapter:
對請求進行攔截,做一些預處理、返回處理、后處理的操作。
SpringMVC中使用攔截器的方法,繼承HandlerInterceptorAdapter類,並根據需求實現其中的preHandle方法(預處理)、postHandle方法(返回處理)、afterCompletion方法(后處理)。
(1)preHandle方法(預處理):
當請求來的時候,先經過applyPreHandle,內部會按照順序獲取所有的攔截器,並依次攔截。當進入攔截器鏈中的某個攔截器,會執行preHandle方法。
當該方法返回值為false的時候,從當前的攔截器往回執行所有攔截器中的afterCompletion方法,再退出攔截器鏈。
當該方法返回值為true時,執行下一個攔截器,直至攔截器全部執行完。然后再執行被攔截的controller,之后再進入攔截器鏈運行所有攔截器的postHandle方法,完成后從最后一個攔截器往回執行所有的afterCompletion方法。
(2)postHandle方法(返回處理)
(3)afterCompletion方法(后處理)
應用:攔截開發者;對加密數據進行解密。
在xml文件中設置:

2、HandlerMethodArgumentResolver:
在supportsParameter方法中判斷請求參數是否HandlerMethodArgumentResolver所支持,方法參數MethodParameter里面包含了請求參數的信息。比如在supportsParameter方法如果請求參數有某個注解,那么該請求可以被HandlerMethodArgumentResolver支持,就會按照resolveArgument中的方法來處理請求參數。

xml中配置如下:

