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】

  • 相关阅读:
    ZooKeeper详解
    数据结构与算法2——数组
    jquery复习笔记
    关于水平居中
    回顾这些日子
    阻止事件冒泡
    css导航栏
    js正则
    js事件绑定
    操作iframe
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/8489879.html
Copyright © 2011-2022 走看看