文章目錄
- 一、什么是HandlerInterceptor
- 二、應用示例
一、什么是HandlerInterceptor
HandlerInterceptor 是 Spring 框架中的一個接口,用于攔截處理程序執行。在 Spring MVC 中,你可以使用 HandlerInterceptor 來在處理程序執行前、執行后或渲染視圖之前進行一些自定義的處理。
通常情況下,你可以通過實現 HandlerInterceptor 接口來創建自定義的攔截器,并在 Spring MVC 配置中注冊這些攔截器,以便在請求處理過程中執行相應的邏輯。
二、應用示例
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;public class CustomInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 在處理程序執行前調用,返回true表示繼續執行,false表示中斷后續操作System.out.println("Pre-handle logic here");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {// 在處理程序執行后調用,視圖渲染之前被調用System.out.println("Post-handle logic here");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {// 在整個請求處理完成后調用,用于資源清理等操作System.out.println("After-completion logic here");}
}
在上面的示例中,我們創建了一個名為 CustomInterceptor 的自定義攔截器,實現了 HandlerInterceptor 接口并重寫了其三個方法:preHandle、postHandle 和 afterCompletion。你可以在這些方法中編寫你希望在請求處理過程中執行的邏輯。
要在 Spring MVC 中注冊這個自定義攔截器,你可以在配置類中進行配置,例如:
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 WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new CustomInterceptor());}
}
通過以上配置,CustomInterceptor 將會攔截請求并在相應的時機執行定義的邏輯。