• SpringMVC的拦截器



    SpringMVC的拦截器:

      1.首先我们需要引入jar包,这就不用说了,

      定义自己的拦截器实现HandlerInterceptor,进行方法的重写。

      

      2.配置web.xml

    <!--中央调度器-->
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:applicationContext.xml</param-value>
            </init-param>
            <!-- TOmcat启动的时候,Servlet对象就存储到内存 正整数 -->
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
    

      3.配置一个处理器controller

      4.定义大配置applicationContext.xml

    <!-- 包扫描器 -->
    <context:component-scan base-package="cn.hq.controller"></context:component-scan>
    
        <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
                <bean class="cn.hq.interceptor.MyInterceptor"></bean>
            </mvc:interceptor>
        </mvc:interceptors>
    

    注意:现在拦截器的方法里第一个方法的返回值为false

    效果演示:

    请求后我们会发现控制台输出一个字段

    正是因为我们设置了它的返回值类型,故请求打道回府,黯然收场,他需要我们来解封他。

    当把他解封后(true),再次请求:

    再附上一张图:

    方法解析:

      第一个方法preHandle尤其重要,他可以根据返回值

      改变请求往下的流程,起着先导作用,第二个方法posHandle,他可以在

      请求通过处理器后,紧接着做一系列的操作,最后经过最后一个方法

      afterCompletion,进行客户端的响应。


    多个拦截器的配置:

        <!-- 定义多个拦截器 -->
        
        <mvc:interceptors>
        <mvc:interceptor>
        <mvc:mapping path="/**"/>
            <bean class="cn.hq.interceptor.MyInterceptor2"></bean>
        </mvc:interceptor>
        </mvc:interceptors>
    

    测试步骤,多配置一个拦截器

    测试案例1,开启第一道拦截器,改为true,第二道拦截器进行false,查看请求流程:

    多个拦截器请求流程图:

    解释:结合上述图所示,他经过第一道拦截器时,通道开放,往下继续走,当他走到第二道拦截时,发现通道关闭了,

         但还是走了二道通道的第一方法,完了请求在这停止,无法通过处理器,但是第一道拦截器已经开启了其通道,

         故走了最终响应的afterCompletion方法。

    测试案例2,开启第一道拦截器,改为false,第二道拦截器进行true,查看请求流程:

    解释:根据流程图,走完第一个方法后,停止前进。

    测试案例3,两道通道全部打开,查看请求流程:


    生活有时就是如此,它在关上你一扇门之前,定会为你开启另外一扇,只是在这个过程中,我们需要经过重重考验,才能通过通道,实现自己的目标。

                              ----告诫自己

  • 相关阅读:
    DetachedCriteria的使用
    Windows 9立即公布了
    加壳学习笔记(三)-简单的脱壳思路&amp;调试思路
    用异或来交换两个变量能提快速度是错误的
    珍爱生命,举手之劳__怎样优雅的叫优步专车
    【翻译自mos文章】使用aum( Automatic Undo Management) 时遇到 ORA-01555错误--- 原因和解决方式。
    HDU 5311 Hidden String (优美的暴力)
    ChargeSystem——One,Two,Three
    GCC编译uboot出现(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0&#39;错误的解决的方法
    java中commons-beanutils的介绍
  • 原文地址:https://www.cnblogs.com/hq-123/p/6285931.html
Copyright © 2020-2023  润新知