【Spring MVC】Spring MVC拦截器(Interceptor)
Spring MVC 拦截器(Interceptor)是一种可以拦截控制器请求的组件,用于在请求处理之前、之中和之后进行一些处理。
以下是一个简单的Spring MVC拦截器的示例:
- 创建拦截器类实现
HandlerInterceptor
接口:
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SimpleInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 请求处理之前进行的操作
System.out.println("Pre Handle");
return true; // 如果返回false,则停止流程,api不会被调用
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 请求处理之后进行的操作
System.out.println("Post Handle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 请求完全处理完成后进行的操作
System.out.println("After Completion");
}
}
- 在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 {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SimpleInterceptor())
.addPathPatterns("/**"); // 这里可以配置拦截的路径
//.excludePathPatterns("/login"); // 这里可以配置排除的路径
}
}
在上述配置中,addPathPatterns("/**")
表示拦截所有的请求,你可以根据需要配置拦截的路径。excludePathPatterns("/login")
表示排除对登录接口的拦截。
以上代码实现了一个简单的Spring MVC拦截器,并在所有路径下拦截请求,在请求处理的不同阶段执行了自定义的操作。
评论已关闭