Spring 过滤器和拦截器的区别
# 1. 什么是过滤器 (Filter) 和 拦截器 (Interceptor)?
都是Aop思想的一种体现,用来解决项目中 某一类 问题的两种接口(工具),都可以对请求做一些增强
# 2. 区别是什么、应用场景是什么?
过滤器 (Filter) | 拦截器 (Interceptor) | |
---|---|---|
出身不同 | 来自 servlet | 来自 Spring |
使用范围不同 | 过滤器Filter实现了javax.servlet.Filter接口,也就是说过滤器的使用要依赖于Tomcat等容器,所以它只能在web程序中使用。 | 拦截器Interceptor实现了org.springframework.web.servlet接口,它是由Spring容器进行管理,并不依赖Tomcat等容器,既可以应用在web程序中,也可以应用在非web程序中(Application、Swing)。 |
实现原理不同 | 基于过滤器链 ApplicationFilterChain实现 | 基于反射 |
使用场景不同 | 字符编码设置、响应数据压缩(通用功能) | 是否登录判断、权限判断、日志等等(偏重业务功能) |
触发时机不同 |
上次更新: 2023/01/16, 18:12:53