过滤器(Filter):
- 定义:过滤器是Servlet技术的一部分,用于处理Servlet请求和响应。
- 使用范围:不仅限于Spring MVC应用程序,可以用于任何Java EE Web应用程序。
- 实现方式:实现javax.servlet.Filter接口。
- 执行顺序:在请求进入Spring MVC之前就已经执行。
-
主要用途:
- 设置请求/响应属性。
- 验证请求(如检查用户是否登录)。
- 记录日志。
- 转换请求和响应内容。
- 配置:通过web.xml或通过@WebFilter注解配置。
拦截器(Interceptor):
- 定义:拦截器是Spring MVC框架的一部分,用于拦截和处理Spring MVC的请求和响应。
- 使用范围:仅限于Spring MVC应用程序。
- 实现方式:实现HandlerInterceptor接口。
- 执行顺序:在请求进入Spring MVC的DispatcherServlet之后执行。
-
主要用途:
- 在Controller之前或之后添加逻辑。
- 验证请求(如权限校验)。
- 处理请求参数。
- 性能监控。
- 配置:通过实现WebMvcConfigurer接口的addInterceptors方法。
主要区别:
- 技术范围:过滤器适用于任何Java EE Web应用程序,而拦截器仅适用于Spring MVC应用程序。
- 执行顺序:过滤器在请求到达Spring MVC之前执行,拦截器在请求到达Spring MVC的Controller之后执行。
- 配置方式:过滤器通常在web.xml中配置,拦截器则通过Spring的配置。
- 集成级别:拦截器更紧密地集成在Spring MVC的请求处理流程中,可以访问和操作Spring的上下文和Bean。