要配置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 MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
// 在請求處理之前進行調用(Controller方法調用之前)
return true; // 返回true才會繼續向下執行,返回false取消當前請求
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// 請求處理之后進行調用,但是在視圖被渲染之前(Controller方法調用之后)
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// 在整個請求結束之后被調用,也就是在DispatcherServlet渲染了對應的視圖之后執行(主要是用于進行資源清理工作)
}
}
通過XML配置:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/> <!-- 攔截所有請求 -->
<bean class="com.example.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
通過Java配置:
@Configuration
@EnableWebMvc
public class AppConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**"); // 攔截所有請求
}
}
請注意,如果您使用的是Java配置方式,需要將@EnableWebMvc注解添加到配置類上。
這樣配置后,Spring MVC會在每個請求到達Controller之前調用攔截器的preHandle方法,在Controller方法調用之后調用postHandle方法,在視圖渲染之后調用afterCompletion方法。