AbstractInterceptor
是 Spring AOP(面向切面編程)中的一個(gè)核心接口,用于定義攔截器的基本行為。要攔截請(qǐng)求,你需要實(shí)現(xiàn)這個(gè)接口并重寫(xiě)其中的方法。以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用 AbstractInterceptor
攔截請(qǐng)求:
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 {
// 在請(qǐng)求處理之前執(zhí)行,返回 true 則繼續(xù)處理,返回 false 則中斷請(qǐng)求
System.out.println("preHandle: 請(qǐng)求攔截成功");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 請(qǐng)求處理之后執(zhí)行,但在視圖渲染之前
System.out.println("postHandle: 請(qǐng)求處理之后,視圖渲染之前");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 視圖渲染之后執(zhí)行,通常用于資源清理操作
System.out.println("afterCompletion: 請(qǐng)求處理完成");
}
}
WebMvcConfigurer
接口,并重寫(xiě) 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) {
// 注冊(cè)攔截器,并指定攔截路徑
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/**"); // 攔截所有請(qǐng)求
}
}
現(xiàn)在,每當(dāng)有請(qǐng)求進(jìn)入 Spring MVC 應(yīng)用時(shí),MyInterceptor
中的 preHandle
方法會(huì)被執(zhí)行,從而實(shí)現(xiàn)請(qǐng)求攔截。你可以根據(jù)實(shí)際需求修改 preHandle
、postHandle
和 afterCompletion
方法中的邏輯。