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: 请求处理完成");
}
}
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
方法中的逻辑。