SpringMVC的拦截器

    xiaoxiao2021-03-25  108

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

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

      

      2.配置web.xml

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <!--中央调度器-->      <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

    1 2 3 4 5 6 7 8 9 <!-- 包扫描器 --> <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,进行客户端的响应。


    多个拦截器的配置:

    1 2 3 4 5 6 7 8 <!-- 定义多个拦截器 -->   <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,两道通道全部打开,查看请求流程:


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

    转载请注明原文地址: https://ju.6miu.com/read-12697.html

    最新回复(0)