1、拦截器
SpringMVC提供了拦截器功能(HandlerInterceptor);允许运行目标方法之前进行一些拦截工作,或者运行之后的一些操作。
和Filter一样的功能,区别,Filter是JavaWeb定制的,HandlerInterceptor是SpringMVC定制的
三个方法:
1、preHandle:目标方法运行之前调用;返回值是Boolean类型。
true:相当于调用了chain.doFilter()放行。
false:不放行。
2、postHandle:目标方法运行之后,来到页面显示之前调用;目标方法调用之后。
3、aferCompletion:在请求整个完成之后,来到目标页面之后;资源响应之后。
2、使用流程
1、拦截器是一个接口
2、实现HandlerInterceptor接口
3、在SpringMVC配置文件中配置拦截器
4、测试使用
3、其他流程
1、只要preHandle不放行就不会有其他流程;
2、只要放行了,afterCompletion都会执行;
4、多个拦截器
1、运行后正常如下:先进后出顺序
MyFirstInterceptor..preHandle...
MySecondInterceptor..preHandle...
handle01处理方法...
MySecondInterceptor..postHandle...
MyFirstInterceptor..postHandle...
jsp页面.......
MySecondInterceptor..afterCompletion...
MyFirstInterceptor..afterCompletion...
2、不放行
无论哪个preHandle不放行都不会继续执行,注意:如果MyFirstInterceptor放行,MySecondInterceptor不放行,还是会执行MyFirstInterceptor的afterCompletion方法。所以,不放行的拦截器之前已经放行的拦截器都会执行afterCompletion方法。
3、执行顺序
preHandle:顺序执行;
postHandle:逆序执行;
afterCompletion:逆序执行;
5、拦截器工作顺序
单个拦截器顺序
多个拦截器顺序