Spring MVC攔截器可以通過實現HandlerInterceptor接口來實現。具體步驟如下:
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在請求處理之前進行攔截操作
return true; // 返回true表示繼續執行請求,返回false表示攔截請求
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 在請求處理之后進行攔截操作
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 請求完成之后進行攔截操作
}
}
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/> <!-- 攔截所有請求 -->
<bean class="com.example.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
需要注意的是,攔截器只能攔截到Spring MVC的請求,不能攔截到靜態資源文件,如css、js、圖片等。如果需要攔截靜態資源文件,可以通過配置WebMvcConfigurer來實現。
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");
}
}
通過以上步驟,即可實現Spring MVC攔截器的配置和使用。