如何举例说明Java中过滤器与拦截器的具体差异?
- 内容介绍
- 相关推荐
本文共计1128个文字,预计阅读时间需要5分钟。
区别 + 1. 使用范围和规范不同:filter是Servlet规范定义的,只能用在Web程序中。拦截器则可以用于Web程序、Application、Swing程序等,是Spring容器内的,也是Spring框架支持的。
区别
1.使用范围和规范不同
filter是servlet规范规定的,只能用在web程序中.
拦截器即可以用在web程序中, 也可以用于application, swing程序中, 是Spring容器内的, 是Spring框架支持的
2.触发时机不同
顺序: Filter-->Servlet-->Interceptor-->Controller
- 过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前过滤器处理。
- 拦截器是方法到达Controller层之前生效的
3.过滤器的实现基于回调函数。而拦截器(代理模式)的实现基于反射,代理分静态代理和动态代理,动态代理是拦截器的简单实现。
何时使用拦截器?何时使用过滤器?
- 如果是非spring项目,那么拦截器不能用,只能使用过滤器。
- 如果是处理controller前后,既可以使用拦截器也可以使用过滤器。
- 如果是处理dispaterServlet前后,只能使用过滤器。
4.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。
本文共计1128个文字,预计阅读时间需要5分钟。
区别 + 1. 使用范围和规范不同:filter是Servlet规范定义的,只能用在Web程序中。拦截器则可以用于Web程序、Application、Swing程序等,是Spring容器内的,也是Spring框架支持的。
区别
1.使用范围和规范不同
filter是servlet规范规定的,只能用在web程序中.
拦截器即可以用在web程序中, 也可以用于application, swing程序中, 是Spring容器内的, 是Spring框架支持的
2.触发时机不同
顺序: Filter-->Servlet-->Interceptor-->Controller
- 过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前过滤器处理。
- 拦截器是方法到达Controller层之前生效的
3.过滤器的实现基于回调函数。而拦截器(代理模式)的实现基于反射,代理分静态代理和动态代理,动态代理是拦截器的简单实现。
何时使用拦截器?何时使用过滤器?
- 如果是非spring项目,那么拦截器不能用,只能使用过滤器。
- 如果是处理controller前后,既可以使用拦截器也可以使用过滤器。
- 如果是处理dispaterServlet前后,只能使用过滤器。
4.在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

