小D课堂 - 零基础入门SpringBoot2.X到实战_第6节 SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener_27、SpringBoot2.X拦截器实战及新旧配置对比

笔记

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

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

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

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

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

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

开始

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

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

旧版本的,继承WebMvcConfigurerAdapter



可以去重写里面的方法



新的方式

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

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




定义login的拦截器


有三个方法需要重写





例如可以在进入controller之前验证token的值


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

controller的测试方法

启动测试


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

重新启动测试

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



输出的方法名改一下



输出的requestDestoryed是我们之前定义的监听器


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

不拦截的配置

两个拦截器的情况

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

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


启动应用

请求接口

Filter和拦截器的区别


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

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

posted @ 2019-08-27 23:02  高山-景行  阅读(240)  评论(0编辑  收藏  举报