java 拦截器HandlerInterceptor 自定义返回结果
时间: 2023-01-11 21:55:36 浏览: 163
Java的拦截器HandlerInterceptor允许你在请求处理之前或之后自定义返回结果。你可以通过实现HandlerInterceptor接口并重写其中的三个方法来实现自定义拦截器:
```
public interface HandlerInterceptor {
// 请求处理之前调用
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception;
// 请求处理之后调用,但是在视图被渲染之前(Controller方法调用之后)
void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception;
// 在整个请求结束之后调用,也就是在DispatcherServlet渲染了对应的视图之后执行(主要是用于进行资源清理工作)
void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception;
}
```
你可以在这些方法中自定义返回结果。例如,你可以在`preHandle`方法中设置响应头,或者在`postHandle`方法中设置响应正文。你也可以在`afterCompletion`方法中执行资源清理操作。
要使用自定义拦截器,你需要将其配置到Spring MVC的DispatcherServlet中。你可以通过实现WebMvcConfigurer接口并重写`addInterceptors`方法来完成此操作。
```
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/login");
}
}
```
在上面的例子中,我们将
阅读全文