拦截器和过滤器的区别
- 位置不同 :
-
- 过滤器是在Servlet容器中的请求处理链中起作用的,位于Servlet容器内部。
- 拦截器是在Web框架(如Spring MVC)层面上起作用的,与Servlet容器无关。
- 触发时机不同 :
-
- 过滤器在请求进入Servlet容器之前进行拦截,即在请求到达Servlet之前进行预处理。
- 拦截器在请求到达Web框架之后,进入具体的Controller或处理器之前进行拦截。
- 配置方式不同 :
-
- 过滤器的配置是在web.xml文件中进行的,可以配置多个过滤器,并指定它们的顺序。
- 拦截器的配置是在Web框架的配置文件中进行的,通常通过注解或配置类来指定拦截器的使用。
- 对象范围不同 :
-
- 过滤器是基于Servlet规范的,对所有请求和资源有效,包括静态资源。
- 拦截器是基于Web框架的,只对特定的Controller或处理器有效。
- 功能扩展不同:
-
- 过滤器可以直接访问请求和响应对象,并对它们进行修改。
- 拦截器具有更丰富的功能扩展,可以访问和修改方法参数、返回值等更细粒度的内容。