首页 > 编程语言 > 详细

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

时间:2019-08-27 23:13:22      阅读:77      评论:0      收藏:0      [点我收藏+]

笔记

、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执行->拦截后->过滤后
 

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

原文:https://www.cnblogs.com/wangjunwei/p/11421343.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!