zoukankan      html  css  js  c++  java
  • SpringMVC拦截器

    ----------------------siwuxie095

       

       

       

       

       

       

       

    SpringMVC 拦截器

       

       

    当用户发送请求到 DispatcherServlet,DispatcherServlet 会

    调用 HandlerMapping 查找 Handler,HandlerMapping 会

    DispatcherServlet 返回 HandlerExecutionChain,其中包

    含了 HandlerHandlerInterceptor[]

       

       

       

    HandlerInterceptor 正是 SpringMVC 中的拦截器,在该接口

    中定义了 三个方法:

       

    1preHandle()

       

    前置方法,在调用 Handler 之前执行,是顺序执行,可以理解

    前置拦截

       

       

    2postHandle()

       

    后置方法,在调用 Handler 之后执行,是逆序执行,可以理解

    后置拦截

       

       

    3afterCompletion()

       

    完成方法,在视图渲染完成之后执行,是逆序执行,可以理解

    最终拦截

       

       

       

    注意:只有 preHandle() 的返回类型 boolean,postHandle()

    afterCompletion() 的返回类型都是 void

       

    preHandle() 返回 true,表示放行,返回 false,表示不放行

       

       

       

    规则:

       

    1)前面的拦截器的 preHandle() 返回 true,即 放行,后面的

    拦截器的 preHandle() 才能执行

       

    2)只要有一个拦截器的 preHandle() 返回 false,即 不放行,

    所有拦截器的 postHandle() 都不会执行

       

    3)只要当前拦截器的 preHandle() 返回 true,即 放行,那么

    当前拦截器的 afterCompletion() 一定会执行

       

       

       

       

       

    关于自定义拦截器

       

    要自定义一个拦截器,只需实现 HandlerInterceptor 接口即可,

    之后在 SpringMVC 的核心配置文件 dispatcher-servlet.xml 中

    配置一下,便可生效

       

       

    <!-- 配置自定义拦截器 -->

    <mvc:interceptors>

    <mvc:interceptor>

     

    <!--

    ** 代表任意多级目录(含 0 个)

     

    /**/*.do 表示拦截以 .do 结尾的请求,/** 表示拦截所有的请求

    -->

    <mvc:mapping path="/**/*.do"/>

    <bean class="com.siwuxie095.interceptor.TestInterceptor"/>

     

    </mvc:interceptor>

    </mvc:interceptors>

       

       

       

       

       

    关于源码:

       

    可以从 DispatcherServletdoDispatch() 方法看起

       

       

       

     参考链接:

       

    参考链接1参考链接2参考链接3参考链接4参考链接5

     

     

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    超参数调试、Batch正则化和程序框架
    优化算法
    深度学习的实用层面
    深层神经网络
    浅层神经网络
    一些实用的JavaScript代码
    mysql练习题1-41
    python 练习题(16-20)
    fiddler抓取https请求
    haproxy监控页面添加及参数简介(转)
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/8489879.html
Copyright © 2011-2022 走看看