小D课堂 - 零基础入门SpringBoot2.X到实战_第6节 SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener_2七、SpringBoot2.X拦截器实战

笔记

、SpringBoot2.X自定义拦截器实战及新旧配置对比(核心知识)
    简介: 讲解拦截器使用,Spingboot2.x新版本配置拦截拦截器和旧版本SpringBoot配置拦截器区别讲解
    
    一、@Configuration
        继承WebMvcConfigurationAdapter(SpringBoot2.X以前旧版本)

        SpringBoot2.X 新版本配置拦截器 implements WebMvcConfigurer

    二、自定义拦截器 HandlerInterceptor
        preHandle:调用Controller某个方法以前
        postHandle:Controller以后调用,视图渲染以前,若是控制器Controller出现了异常,则不会执行此方法
        afterCompletion:无论有没有异常,这个afterCompletion都会被调用,用于资源清理
    
    三、按照注册顺序进行拦截,先注册,先被拦截

    拦截器不生效常见问题:
        1)是否有加@Configuration
        2)拦截路径是否有问题 **  和 * 
        3)拦截器最后路径必定要 “/**”, 若是是目录的话则是 /*/

    Filter
        是基于函数回调 doFilter(),而Interceptor则是基于AOP思想
        Filter在只在Servlet先后起做用,而Interceptor够深刻到方法先后、异常抛出先后等

        依赖于Servlet容器即web应用中,而Interceptor不依赖于Servlet容器因此能够运行在多种环境。
    
        在接口调用的生命周期里,Interceptor能够被屡次调用,而Filter只能在容器初始化时调用一次。
        
        Filter和Interceptor的执行顺序
         
        过滤前->拦截前->action执行->拦截后->过滤后java

开始

自定义一个拦截器 新旧版本的区别

以前的代码测试会对当前的测试 有干扰,因此先注释掉。

旧版本的,继承WebMvcConfigurerAdapter



能够去重写里面的方法



web

新的方式

java8支持接口里面有默认方法的实现

实现接口WebMvcConfigurer。重写里面的方法,addInterceptors




定义login的拦截器


有三个方法须要重写





例如能够在进入controller以前验证token的值


注册刚才加的LoginInterceptor。并制定拦截的路径
拦截的路径

controller的测试方法

启动测试


旧的拦截器先注释掉。注解去掉就不会被Spring扫描了

从新启动测试

访问返回一个json格式的数据



输出的方法名改一下



输出的requestDestoryed是咱们以前定义的监听器


注解拦截器注意的地方。要么是类上面没加注解,要么就是拦截的路径设置的有问题
拦截的路径通常子在结尾的时候加** 表示全部的。/*是匹配子文件夹
拦截全部能够配置为/**
能够链式调用排除的拦截路径exclude

不拦截的配置
json

两个拦截器的状况

两个拦截器怎么去注册呢?
写另一个拦截器

注册拦截器,这样就会先执行第一个拦截器,再执行第二个拦截器


启动应用

请求接口

函数

Filter和拦截器的区别


    Filter
        是基于函数回调 doFilter(),而Interceptor则是基于AOP思想
        Filter在只在Servlet先后起做用,而Interceptor够深刻到方法先后、异常抛出先后等

        依赖于Servlet容器即web应用中,而Interceptor不依赖于Servlet容器因此能够运行在多种环境。
    
        在接口调用的生命周期里,Interceptor能够被屡次调用,而Filter只能在容器初始化时调用一次。
        
        Filter和Interceptor的执行顺序
         
        过滤前->拦截前->action执行->拦截后->过滤后
 post

相关文章
相关标签/搜索