spring-webmvc版本:5.2.2.RELEASE,javax.servlet-api版本:3.1.0中的spring-mvc中完整的拦截器(多个)的代码
时间: 2024-04-12 12:32:22 浏览: 134
下面是一个完整的示例,展示了在Spring MVC中配置多个拦截器的代码:
```java
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册拦截器1
registry.addInterceptor(new Interceptor1())
.addPathPatterns("/path1/**")
.excludePathPatterns("/path1/exclude");
// 注册拦截器2
registry.addInterceptor(new Interceptor2())
.addPathPatterns("/path2/**")
.excludePathPatterns("/path2/exclude");
// 注册拦截器3
registry.addInterceptor(new Interceptor3())
.addPathPatterns("/path3/**")
.excludePathPatterns("/path3/exclude");
}
}
public class Interceptor1 implements HandlerInterceptor {
// 在请求处理之前调用
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 拦截处理逻辑
return true;
}
// 在请求处理之后调用,但是在视图被渲染之前调用
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 后处理逻辑
}
// 在整个请求结束之后调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 完成处理逻辑
}
}
// 类似地,定义其他的拦截器类,如Interceptor2、Interceptor3
```
在上述示例中,我们创建了一个名为WebConfig的配置类,并实现了WebMvcConfigurer接口。通过重写`addInterceptors`方法,我们可以注册多个拦截器。
每个拦截器类都需要实现HandlerInterceptor接口,并根据实际需求实现其中的方法。在示例中,我们创建了三个拦截器:Interceptor1、Interceptor2和Interceptor3,并在`addInterceptors`方法中进行了注册。
在每个拦截器类中,你可以根据需要实现`preHandle`、`postHandle`和`afterCompletion`等方法来处理请求前、请求后和请求完成时的逻辑。
希望这个示例能帮助你配置多个拦截器。如果你有更多的问题,请随时提问。
阅读全文