Gemasoft Asked: 2020-03-31 14:34:31 +0800 CST 2020-03-31 14:34:31 +0800 CST 2020-03-31 14:34:31 +0800 CST Spring中Filter和Interceptor的区别 772 我真的不明白每个人的目的是什么,因为他们执行非常相似的任务。 有人可以向我解释一下 Spring 中的拦截器和过滤器有什么区别吗? java 1 Answers Voted Best Answer user17875 2020-04-29T01:38:33+08:002020-04-29T01:38:33+08:00 以下解释可以从 Spring自己的文档中提取: HandlerInterceptor 基本上类似于 Servlet 2.3 过滤器,但与后者相比,它只允许自定义预处理和禁止处理程序本身执行的选项,以及自定义后处理。过滤器更强大,例如它们允许交换传递到链上的请求和响应对象。请注意,过滤器在 web.xml 中配置,它是应用程序上下文中的 HandlerInterceptor。 作为基本准则,与处理程序相关的细粒度预处理任务是 HandlerInterceptor 实现的候选,尤其是分解出的通用处理程序代码和授权检查。另一方面,过滤器非常适合请求内容和视图内容处理,例如多部分表单和 GZIP 压缩。这通常显示何时需要将过滤器映射到某些内容类型(例如图像)或所有请求。 这意味着过滤器更适合处理与视图相关的请求和内容,而拦截器更适合预处理任务,例如身份验证检查。 拦截器相对于过滤器的一个优势是它们能够在控制器和视图的渲染之间进行拦截。另一方面,拦截器Beans来自 Spring,因此您可以从它们访问整个上下文。
以下解释可以从 Spring自己的文档中提取:
这意味着过滤器更适合处理与视图相关的请求和内容,而拦截器更适合预处理任务,例如身份验证检查。
拦截器相对于过滤器的一个优势是它们能够在控制器和视图的渲染之间进行拦截。另一方面,拦截器
Beans
来自 Spring,因此您可以从它们访问整个上下文。