SpringBoot添加过滤器Filter

1. 拦截器和过滤器

先说一下,过滤器和拦截器的区别和联系。

1.1 相同点

首先过滤器和拦截器都能实现请求的筛选(过滤或者拦截),然后根据自己的业务需求,添加自己的逻辑,保证请求往后走的时候数据能满足自己的需求。同时呢,他们又都能终止请求流(过滤器只要不在过滤链中往后传request就形;拦截器返回false)。

1.2 不同点
1.2.1 实现原理不同

过滤器和拦截器 底层实现方式大不相同,过滤器 是基于函数回调的,拦截器 则是基于Java的反射机制(动态代理)实现的

1.2.2 使用范围不同

过滤器 实现的是 javax.servlet.Filter 接口,而这个接口是在Servlet规范中定义的,也就是说过滤器Filter 的使用要依赖于Servlet的,生存与Tomcat等服务器容器中,导致它只能在web程序中使用
拦截器(Interceptor) 它是一个Spring组件,并由Spring容器管理,并不依赖Tomcat等容器,是可以单独使用的。不仅能应用在web程序中,也可以用于Application、Swing等程序中。

1.2.3 触发时机不同

由于过滤器和拦截器基于不同的容器,所以他们的触发时机和请求中经过容器的顺序有关,Filter作用于Servlet,Interceptor作用于Springmvc。

1.2.4 处理范围不同

过滤器处理逻辑都在doFilter方法中,拦截器区分pre、post和after,划分粒度更细了,使用起来更灵活

 

 

1.2.5 拦截器可以注入业务

拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

2. Springboot添加拦截器

项目当中使用过滤器还是拦截器,根据需求来定,一般用哪种都可以,我是要处理requestbody 中的数据(处理特殊字符,加密等)。由于数据还要往下继续传,所以选用filter。
过滤器添加有2种方法:

2.1 通过@WebFilter注解添加
  • 1.写过滤器类,并实现Filter接口
  • 2.添加@WebFilter注解,属性filterName设置过滤器名称,urlPatterns匹配要过滤的url
  • <
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot添加IP过滤器有多种配置方式。一种常见的方式是使用注解@WebFilter配合@ServletComponentScan注解来配置过滤器。首先,在过滤器类上添加@WebFilter注解,并通过urlPatterns属性指定需要过滤的路径。然后,在启动类上添加@ServletComponentScan注解,并通过basePackages属性指定扫描的包路径。这样就可以实现IP过滤器的配置。\[1\]\[2\] 另一种方式是使用JavaConfig的方式创建过滤器。首先创建一个配置类,使用@Configuration注解标记,并在该类中使用@Bean注解创建FilterRegistrationBean对象。在该对象的filter属性中设置过滤器实例,通过setOrder方法设置执行顺序,通过addUrlPatterns方法设置过滤的请求路径。最后将FilterRegistrationBean对象返回。这样就可以实现IP过滤器的配置。\[3\] 需要注意的是,如果使用外部Tomcat启动,需要重写init()和destroy()方法,否则可能会启动失败。另外,如果在外部Tomcat启动时需要注入对象,需要进行特殊处理。使用@WebFilter无法使用@Order或Ordered进行执行顺序控制,使用@Component无法控制请求过滤路径。\[3\] 综上所述,以上是SpringBoot添加IP过滤器的几种配置方式。您可以根据具体需求选择适合的方式进行配置。 #### 引用[.reference_title] - *1* *3* [SpringBoot | SpringBoot多种 Filter过滤器 配置方式](https://blog.csdn.net/qq825478739/article/details/125421560)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [springBoot添加自定义过滤器Filter](https://blog.csdn.net/weixin_41996632/article/details/88562757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值