SpringMVCInterceptor

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、拦截器工作顺序

单个拦截器顺序

多个拦截器顺序

 

发布了19 篇原创文章 · 获赞 6 · 访问量 9937

猜你喜欢

转载自blog.csdn.net/wx774891/article/details/100150189
今日推荐