HandlerInterceptor 中怎么获取controller返回的应答信息
时间: 2023-08-04 14:38:17 浏览: 104
在 HandlerInterceptor 中获取 Controller 返回的应答信息,可以通过重写 `postHandle` 方法来实现。`postHandle` 方法会在 Controller 执行完毕并且视图渲染之前被调用,可以获取到 ModelAndView 对象,从而获取到 Controller 返回的应答信息。
以下是示例代码:
```java
public class MyInterceptor implements HandlerInterceptor {
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 判断是否存在 ModelAndView 对象
if (modelAndView != null) {
// 获取 Controller 返回的数据模型
Map<String, Object> model = modelAndView.getModel();
// 获取视图名称
String viewName = modelAndView.getViewName();
// 获取状态码
int status = response.getStatus();
// 获取响应头信息
Collection<String> headers = response.getHeaderNames();
// 可以根据需要进行处理
// ...
}
}
//...
}
```
需要注意的是,如果 Controller 方法返回的是一个 JSON 字符串或者其他非视图类型的数据,那么在 `postHandle` 方法中是无法获取到这些数据的。此时可以考虑使用 AOP 切面来处理这些数据。
阅读全文