关于拦截器的理解
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中配置如下: