拦截器获取controller返回值
时间: 2023-08-07 21:35:18 浏览: 102
在拦截器中获取 Controller 的返回值可以通过实现 postHandle 方法来实现。postHandle 方法会在请求处理完成后被调用,可以获取到请求处理的结果 ModelAndView 对象。以下是示例代码:
```java
public class MyInterceptor 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 {
// 在请求处理完成后执行拦截逻辑
if (modelAndView != null) {
Object result = modelAndView.getModel().get("result");
// 处理获取到的返回值
// ...
}
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在请求完成后执行拦截逻辑
}
}
```
需要注意的是,如果 Controller 返回的是 JSON 数据等非 ModelAndView 对象,可以在拦截器中通过 HttpServletResponse 对象获取到响应内容,再进行解析。同时,如果存在多级拦截器,需要在 postHandle 方法中进行判断和处理。