使用拦截器_自定义拦截器

使用拦截器_拦截器_02

                                                                                            图:自定义拦截器类

使用拦截器_自定义拦截器_03

                                                                                    图:配置自定义拦截器类

使用拦截器_自定义拦截器_04

                             图:HandlerExecutionChain.java的applyPreHandle方法,调用每个拦截器的preHandle方法

如果某个拦截器的preHandle方法返回了false,那么拦截器链上的之后的拦截器也不会被调用,目标方法也不会被调用;

使用拦截器_拦截器_05

      图:可以在该方法中做权限检查,日志和事务等

使用拦截器_spring mvc_06

        可以在该方法中修改域中的属性或者修改转向的视图

使用拦截器_拦截器_07

使用拦截器_倒序_08

                                                                                          图:注意mvc:interceptor的使用方法

使用拦截器_spring mvc_09

使用拦截器_倒序_10

使用拦截器_自定义拦截器_11

 

使用拦截器_自定义拦截器_12

 

使用拦截器_spring mvc_13

                           图:HandlerExecutionChain类的applyPostHandle方法

从i=getInterceptors().length - 1可以理解为什么postHandle方法的调用是倒序的了。

使用拦截器_拦截器_14

                    图:HandlerExecutionChain类对拦截器的afterCompletion方法的调用

从i>=0可以很清楚的理解,对interceptor的afterCompletion方法的调用也是倒序的;

变量interceptorIndex的含义就是拦截器链中preHandle方法返回true的最大拦截器索引;

 

使用拦截器_拦截器_15

越努力,越幸运,欢迎关注我的个人技术公众号