拦截器原理:
1. 调用目标方法前,会顺序执行拦截器链的preHandle()
2. 调用完目标方法后,在视图渲染前,会逆序执行调用拦截器链的postHandle()
3. 视图渲染完毕后,会调用逆序执行调用拦截器链的afterCompletion()
4. 拦截器链的postHandle()只有在所有的preHandle()执行都返回true的情况下才会被执行
5. 当拦截器链的preHandle()准备返回false、或在dispatch()中任何一步程序出现异常、或视图成功渲染完毕请求准备返回浏览器时,都会逆序执行调用拦截器链的afterCompletion()。尤其注意,能被调用afterCompletion()的,只有那些preHandle()返回true的拦截器。