• SpringMvc拦截器


    SpringMVC提供了拦截器机制;允许运行目标方法之前进行一些拦截工作,或者目标方法运行之后进行一些其他处理;

    Filter;javaWeb

    HandlerInterceptor:SpringMVC

    preHandle:在目标方法运行之前调用;返回boolean;return true;(chain.doFilter())放行; return false;不放行

    postHandle:在目标方法运行之后调用:目标方法调用之后

    afterCompletion:在请求整个完成之后;来到目标页面(或者是报错页面)之后;

    1)、正常写控制器类,拦截器类与控制器类分开写

    2)、拦截器是一个接口,实现HandlerInterceptor接口;

    3)、springmvc.xml配置拦截器

    4)、拦截器的运行流程

    1、单个拦截器

     

    正常运行流程;

     拦截器的preHandle----目标方法---拦截器postHandle---目标页面---拦截器的afterCompletion;

    MyFirstInterceptor...preHandle...

    test01....

    MyFirstInterceptor...postHandle...

    success.jsp....

    MyFirstInterceptor...afterCompletion

    其他流程:

    1、只要preHandle不放行(return false)就没有以后的流程;

    2、只要preHandle放行了,不管目标方法handler炸不炸,afterCompletion总是都会执行;

    2、多个拦截器

    正常流程:

    Af-----------------------Bf-------------------------

    先进后出,后进先出

    MyFirstInterceptor...preHandle...

    MySecondInterceptor...preHandle...

    test01....

    MySecondInterceptor...postHandle...

    MyFirstInterceptor...postHandle...

    success.jsp....

    MySecondInterceptor...afterCompletion...

    MyFirstInterceptor...afterCompletion

    异常流程

    1、不放行;

         1)、哪一块不放行从此以后都没有;

         但是MySecondInterceptor不放行;但是他前面已经放行了的拦截器的afterCompletion总会执行;

     

    MyFirstInterceptor...preHandle...

    MySecondInterceptor...preHandle...

    MyFirstInterceptor...afterCompletion

    3.总结

    拦截器的preHandle:是按照顺序执行(放行)

    拦截器的postHandle:是按照逆序执行

    拦截器的afterCompletion:是按照逆序执行;

    已经放行了的拦截器的afterCompletion总会执行;

  • 相关阅读:
    [NOI2018]归程 kruskal重构树
    [NOIP2017]逛公园 最短路图 拓扑序DP
    [bzoj4398] 福慧双修 最短路 二进制分组
    【HDOJ】【4405】Aeroplane chess飞行棋
    【ZOJ】【3329】One Person Game
    【POJ】【2096】Collecting Bugs
    【BZOJ】【3093】【FDU校赛2012】A Famous Game
    【BZOJ】【3143】【HNOI2013】游走
    【UVA】【10828】随机程序
    【UVA】【11762】Race to 1(得到1)
  • 原文地址:https://www.cnblogs.com/yanl55555/p/11907308.html
Copyright © 2020-2023  润新知