Filter 和 Interceptor 分别对应 过滤器和拦截器

应用场景:拦截器 做令牌检查、参数校验等等

实现方法:1、通过实现 WebMvcConfigurer 接口 重写其中空的  addInterceptors(InterceptorRegistry registry)方法

2、调用 registry.addInterceptor(HandlerInterceptor对象)..addPathPatterns("/url")

执行顺序:先过滤后拦截

自定义类实现WebMvcConfigurer重写其中的addInterceptors 方法

package com.example.ribi.interceptor;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Component
public class Interceptor implements WebMvcConfigurer {//自定义@AutowiredTokenInterceptor tokenInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(tokenInterceptor).addPathPatterns("/**");}
}

自定义的TokenInterceptor

package com.example.ribi.interceptor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Component
public class TokenInterceptor extends HandlerInterceptorAdapter {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {System.out.println("进入拦截器");//检查if(request.getRequestURI().equalsIgnoreCase("/user/testInterceptor")){System.out.println(request.getRequestURI()+" : 通过检查");return true;}else {System.out.println(request.getRequestURI()+" : 未能通过检查");return false;}}}

Controller

@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {@AutowiredHttpServletRequest httpServletRequest;@GetMapping("/testInterceptor")@ResponseBodypublic int testInterceptor(){System.out.println("进入testInterceptor");return 1;}@GetMapping("/return")@ResponseBodypublic String testReturn(){System.out.println("进入testReturn");return "return";}}

Postman测试

1、localhost:8080/user/testInterceptor 通过 打印进入testInterceptor

进入过滤器
进入拦截器
/user/testInterceptor : 通过检查
进入testInterceptor

2、localhost:8080/user/testReturn 未通过 未打印进入testReturn

进入过滤器
进入拦截器
/user/testReturn : 未能通过检查

1-6 Springboot拦截器 Interceptor 通过重写addInterceptors方法添加一个HandlerInterceptor对象相关推荐

  1. springboot拦截器Interceptor

    1.创建一个拦截器类并实现HandlerInterceptor接口,重写preHandle.postHandle.afterCompletion这3个方法 @Slf4j @Component publ ...

  2. Springboot 拦截器,拦截所有请求,判断是否登录,验证权限

    Java的三大器 拦截器的作用 Java里的拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发者在一个Action执行的前后执行一段代码,也可以在一个Action执行前阻止其执行,同时 ...

  3. spring 两次进入拦截器_4.SpringBoot 拦截器Fliter,Interceptor,Controller……

    在项目的开发中,在某些情况下,我们需要对客户端发出的请求进行拦截,常用的API拦截方式有Fliter,Interceptor,ControllerAdvice以及Aspect. 上面的图是Spring ...

  4. springboot中的拦截器interceptor和过滤器filter,多次获取request参数

    大家好,我是烤鸭:     这是一篇关于springboot的拦截器(interceptor)和过滤器(Filter). 先说一下过滤器和拦截器. 区别: 1. servlet请求,顺序:Filter ...

  5. springboot 拦截器_Spring Boot入门系列(十)如何使用拦截器,一学就会!

    前面介绍了Spring Boot 如何整合定时任务已经Spring Boot 如何创建异步任务,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhon ...

  6. 从零开始SpringCloud Alibaba实战(59)——过滤器filter、拦截器interceptor、和AOP的区别与联系及应用

    文章目录 前言 过滤器 拦截器 过滤器与拦截器的区别 AOP(面向切面) 三者使用场景 Filter过滤器 Interceptor拦截器 Spring AOP拦截器 Filter与Intercepto ...

  7. 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener

    =================6.SpringBoot拦截器实战和 Servlet3.0自定义Filter.Listener ============ 1.深入SpringBoot2.x过滤器Fi ...

  8. struts2学习笔记--拦截器(Interceptor)和登录权限验证Demo

    理解 Interceptor拦截器类似于我们学过的过滤器,是可以在action执行前后执行的代码.是我们做web开发是经常使用的技术,比如权限控制,日志.我们也可以把多个interceptor连在一起 ...

  9. Springmvc中的拦截器interceptor及与过滤器filter的区别

    一.Springmvc中的拦截器概述及与过滤器filter的区别 1).Springmvc中的拦截器interceptor用于对控制器controller进行预处理和后处理的技术; 2).可以定义拦截 ...

最新文章

  1. Linux 防火墙开放特定端口 (iptables)
  2. 带你一起学kivy第一天
  3. Hadoop学习之Hadoop集群的定制配置(一)
  4. Swagger 2——@ApiOperation注解、@ApiModel注解、@ApiImplicitParams注解、@ApiImplicitParam注解无效解决方案
  5. JVM系列之:String.intern的性能
  6. 使用Chrome开发者工具研究JavaScript里函数的原生实现
  7. iOS13后添加SceneDelegate初始化window
  8. Git中的pull request真正比较的是什么?
  9. ZeroForums论坛正式开始测试运行
  10. python参数类型定义_Python的参数类型
  11. pandas知识点(汇总和计算描述统计)
  12. oracle恢复删除的表
  13. android 广告库sdk,秒针移动广告投放Android SDK集成指南
  14. 微信小程序开发--习题
  15. 冠希哥的英文还是diao 说的真好 瑞斯白
  16. Angularjs1 [$rootScope:inprog] inprogress error
  17. java获取异常信息
  18. python爬虫能当副业吗?有哪些平台能接单?
  19. 排序——使每位学生都有座位的最少移动次数
  20. python函数返回值可以有多个吗_Python函数中如何返回多个值?(代码示例)

热门文章

  1. mmpose----AnimalKingdom数据集使用mmpose训练
  2. abbyy finereader2023泰比文字识别PDF编辑软件
  3. 51学工坊整理|2020年IT行业学习前景分析
  4. 2013福建高职单招计算机类专业,2013福建高职单招 计算机类专业 知识试题
  5. Stata:定制论文中表1-table1
  6. 学生毕业设计选题管理系统(JSP+MySQL+Eclipse)
  7. 如何设置列表的项目符号(li的点)与文字之间的距离
  8. GetAsyncKeyState() 0x8000 是什么意思
  9. 1089 狼人杀-简单版(超详细注释)
  10. linux系统安装serv u,用Serv-U实现Linux与windows文件互传