【Java】过滤器和拦截器的位置

发布时间 2023-12-28 13:48:24作者: 陆陆无为而治者
过滤器(Fliter)和拦截器(Intercetor)区别
  过滤器(Fliter) 拦截器(Interceptor) 总结
定义位置 Fliter定义在java.servlet包下  接口HandlerInterceptor定义在org.springframework.web.servlet包下  
配置位置 配置在web.xml中  配置在springmvc.xml中  
作用位置 Fliter在值Servlet前后起作用,Fliter通常不考虑servlet的实现  拦截器能够深入到方法前后、异常抛出前后等,因此拦截器的使用具体方法具有更大的弹性,允许用户接入(hook into)请求的生命周期。  在Spring构架的程序中,要优先使用拦截器,几乎所有Fliter能够做的事情,interceptor都能够轻松实现
使用范围  接口服务端  拦截器既可以用于Web程序,也可以用于Application、Swing程序中  
遵循规范 Fliter是Servlet规范规定的  拦截器在Spring容器内,是Spring框架支持的。  
与Spring关系 Fliter不能使用Spring容器资源 Interceptor是被Spring调用。  Spring中使用Interceptor更容易
调用方 Fliter是被Server(例如Tomcat)调用 Interceptor是被Spring调用。  Fliter总是优先于Interceptor执行
实现方式 Fliter基于回调函数  Interceptor基于java反射