AbstractInterceptor
是 Spring AOP(面向切面编程)中的一个核心接口,用于定义拦截器的基本行为。要拦截请求,你需要实现这个接口并重写其中的方法。以下是一个简单的示例,展示了如何使用 AbstractInterceptor
拦截请求:
- 首先,创建一个类实现
AbstractInterceptor
接口:
import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前执行,返回 true 则继续处理,返回 false 则中断请求 System.out.println("preHandle: 请求拦截成功"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 请求处理之后执行,但在视图渲染之前 System.out.println("postHandle: 请求处理之后,视图渲染之前"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 视图渲染之后执行,通常用于资源清理操作 System.out.println("afterCompletion: 请求处理完成"); } }
- 接下来,需要将自定义的拦截器注册到 Spring MVC 中。创建一个配置类,继承
WebMvcConfigurer
接口,并重写addInterceptors
方法:
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { // 注册拦截器,并指定拦截路径 registry.addInterceptor(new MyInterceptor()) .addPathPatterns("/**"); // 拦截所有请求 } }
现在,每当有请求进入 Spring MVC 应用时,MyInterceptor
中的 preHandle
方法会被执行,从而实现请求拦截。你可以根据实际需求修改 preHandle
、postHandle
和 afterCompletion
方法中的逻辑。