• SpringMVC ---- 拦截器


    1. 拦截器的配置

    SpringMVC 中的拦截器用于拦截控制器方法的执行
    SpringMVC 中的拦截器需要实现 HandlerInterceptor
    SpringMVC 的拦截器必须在 SpringMVC 的配置文件中进行配置:

        
        <mvc:interceptors>
    
    
    
            <mvc:interceptor>
                <mvc:mapping path="/**"/>
                <mvc:exclude-mapping path="/testRequestEntity"/>
                <ref bean="firstInterceptor">ref>
            mvc:interceptor>
        mvc:interceptors>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    2. 拦截器的三个抽象方法

    package com.fickler.mvc.interceptor;
    
    import org.springframework.stereotype.Component;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * @author dell
     * @version 1.0
     */
    
    @Component
    public class FirstInterceptor implements HandlerInterceptor {
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("FirstInterceptor------>preHandle");
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            System.out.println("FirstInterceptor------>postHandle");
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            System.out.println("FirstInterceptor------>afterCompletion");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    SpringMVC 中的拦截器有三个抽象方法:
    preHandle:控制器方法执行之前执行 preHandle(),其 boolean 类型的返回值表示是否拦截或放行,返回 true 为放行,即调用控制器方法;返回 false 表示拦截,即不调用控制器方法
    postHandle:控制器方法执行之后执行 postHandle()
    afterComplation:处理完视图和模型数据,渲染视图完毕之后执行 afterComplation()

    3. 多个拦截器的执行顺序

    a>若每个拦截器的 preHandle() 都返回 true
    此时多个拦截器的执行顺序和拦截器在 SpringMVC 的配置文件的配置顺序有关:
    preHandle() 会按照配置的顺序执行,而 postHandle() 和 afterComplation() 会按照配置的反顺序执行

    b>若某个拦截器的 preHandle() 返回了 false
    preHandle() 返回 false 和它之前的拦截器的 preHandele() 都会执行,postHandle() 都不执行,返回 false 的拦截器之前的拦截器的 afterComplation() 会执行

  • 相关阅读:
    Leetcode-每日一题1106. 解析布尔表达式(DFS模拟栈)
    Django框架
    Spring Cloud之服务熔断与降级(Hystrix)
    面试题总结
    【自然语言处理概述】百度百科数据爬取
    解决方案:反弹shell之后没法通过上下键调出历史命令
    SpringBoot实现多数据源(六)【dynamic-datasource 多数据源组件】
    计算机视觉大作业:EdgeConnect论文阅读
    Go语言 02
    go操作Kfaka
  • 原文地址:https://blog.csdn.net/qq_52354698/article/details/127075456