Dawn's Blogs

分享技术 记录成长

0%

SSM学习之SpringMVC (4) 拦截器

Interceptor

Interceptor 是 Spring MVC 框架中的一个组件,用于拦截和处理HTTP请求。在 Java Spring 中,Interceptor 是通过实现 HandlerInterceptor 接口来实现的。Interceptor 可以对请求进行预处理,也可以对响应进行后处理。Interceptor 的主要作用是在请求到达 Controller 之前或响应离开 Controller 之后,对请求和响应进行处理。

使用开发方法

使用方法就是:定义拦截器类,实现 HandlerInterceptor 接口,并重写其中的方法。

  • preHandle:在调用 Handler 之前执行,返回值决定了是否会调用 Handler。如果返回值为 false,不会执行 Handler,也不会执行下面的两个方法。
  • postHandle:在 Handler 执行完成之后执行。
  • afterCompletion:在 DispatcherServlet 进行视图的渲染之后执行,多用于清理资源。

和 Filter 的区别

Interceptor 和 Filter 都可以拦截和处理请求,但是有以下区别:

  1. 实现方式。Filter 是通过实现 javax.servlet.Filter 接口来实现的,而 Interceptor 是通过实现 HandlerInterceptor 接口来实现的。因此,Filter 依赖于 Servlet API,而 Interceptor 依赖于 Spring MVC 框架。
  2. 使用范围。Filter 不仅可以应用于 Web 应用程序,还可以应用于其他基于 Java 的应用程序,如 Java SE、Java EE 等。而 Interceptor 仅适用于基于 Spring MVC 框架的 Web 应用程序。
  3. 生命周期。Filter 的生命周期比 Interceptor 更加灵活。Filter 可以在请求到达 Controller 之前或响应离开 Controller 之后的任何阶段进行拦截和处理。而 Interceptor 的拦截和处理只能在 Controller 方法执行之前或之后进行。