SpringBoot过滤器/拦截器

不同点

过滤器拦截器
使用场景对请求/响应进行修改、判断等。一般用于过滤参数、登录权限验证、资源访问权限控制、敏感词汇过滤、字符编码转换。在service或者一个方法前/后调用一个方法,或者在方法后调用一个方法。
能力

可以拿到原始的http请求与响应,拿不到请求的控制器和请求控制器中的方法的信息。

可以修改请求、响应、参数:比如:修改字符编码、删除低俗文字、删除危险字符、修改参数

可以拿到你请求的控制器和方法,却拿不到请求与响应。
顺序可指定顺序。可指定顺序。
实现方式回调函数AOP
使用范围只能用于Web可用于Web、Application、Swing
作用范围所有请求。只能是controller请求。静态资源无法控制。
使用位置controller前后、dispaterServlet前后controller前后
规范定义

Servlet 规范定义,Servlet 容器支持。

Filter 接口定义在 javax.servlet 包

Spring容器内,Spring框架支持。

HandlerInterceptor 接口 定义在org.springframework.web.servlet 包

灵活性/粒度

灵活性差(粒度大)。

不能够使用 Spring 容器资源

灵活性好(粒度小)。

能使用Spring里的任何资源、对象,例如 Service对象、数据源、事务管理等,通过IoC注入到拦截器即可。

打断链路打断方法:处理请求和响应对象来引发中断,需要额外的动作,比如将用户重定向到错误页面。打断方法:preHandle方法内返回 false
执行次数

一个controller周期只调用一次:一个过滤器实例只能在容器初始化时调用一次。

一个controller周期可调用多次
posted @ 2023-01-06 10:28  迷糊桃  阅读(30)  评论(0编辑  收藏  举报