zoukankan      html  css  js  c++  java
  • 小D课堂

    笔记

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

  • 相关阅读:
    JavaScript系列:JavaScript简介
    Fit自适应布局
    JavaScript数值类型及变量
    表格列Column
    JavaScript系列:ECMAScript引用类型
    Absolute绝对定位
    JavaScript系列:ECMAScript运算符
    JavaScript系列:ECMAScript类型转换
    jQuery Uploadify在ASP.NET MVC3中的使用
    JavaScript系列:ECMAScript语句
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11421343.html
Copyright © 2011-2022 走看看