springmvc登录检查 springmvc自定义拦截器

版权声明:本文由博主原创,转载请注明出处. https://blog.csdn.net/wzc1991520/article/details/81129206
  • 先说登录检查,上图

可以选择实现HandlerInterceptor接口,也可以继承HandlerInterceptorAdapter

在springmvc中配置

拦截器:实现HandlerInterceptor中的几个方法介绍

自定义配置多个

单个拦截器中和多个拦截器并存时三个方法的执行顺序的规律:

若该方法返回的false,则不会继续执行,为true才会继续执行下一个方法

  1. 单个拦截器的执行顺序:

先定义一个拦截器:Interceptor1.java测试它里面三个方法的拦截顺序

       ======Interceptor1=============preHandle======

       ======Interceptor1=============postHandle======

       ======Interceptor1=============afterCompletion======

  1. 多个拦截器的执行顺序:
    1. 两个拦截器中preHandle方法都返回true时:在配置文件中配置顺序是先1后2

    preHandle:(配置的正序)

        ======Interceptor1=============preHandle======

        ======Interceptor2=============preHandle======

    postHandle:(配置的反序)

        ======Interceptor2=============postHandle======

        ======Interceptor1=============postHandle======

    afterCompletion:(配置的反序)

        ======Interceptor2=============afterCompletion======

       ======Interceptor1=============afterCompletion======

    1. 两个拦截器中preHandle方法都返回true时:在配置文件中配置顺序是先2后1

preHandle:(配置的正序)

        ======Interceptor2=============preHandle======

        ======Interceptor1=============preHandle======

    postHandle:(配置的反序)

        ======Interceptor1=============postHandle======

        ======Interceptor2=============postHandle======

    afterCompletion:(配置的反序)

        ======Interceptor1=============afterCompletion======

        ======Interceptor2=============afterCompletion======

当都所有拦截器都返回true时,此时总的规律:先开始的后结束。

 

    1. 中断流程测试
  1. 让Interceptor2的preHandle方法返回false时:(配置顺序中不是第一个的拦截器

======Interceptor1=============preHandle======

======Interceptor2=============preHandle======

======Interceptor1=============afterCompletion======

    说明:

首先拦截器2的preHandle返回false,它自己的后续方法全部中断。

其次拦截器1的preHandle返回true,但是它的postHandle也没有执行,说明postHandle受到所有拦截器的preHandle方法返回值的影响

再次拦截器1的afterCompletion方法却执行了,说明afterCompletion不受其他拦截器的preHandle方法返回值的影响。

结论:

postHandle受所有拦截器的preHandle执行结果的影响,只有全部preHandle都返回true时才执行

       afterCompletion只受它自己所属拦截器中preHandle的影响,preHandle返回true时执行。

  1. 让Interceptor1的preHandle方法返回false时:(配置顺序中的第一个拦截器

======Interceptor1=============preHandle======

结论:

配置顺序第一个拦截器的preHandle返回了false,则中断所有后续处理。

猜你喜欢

转载自blog.csdn.net/wzc1991520/article/details/81129206