HandlerInterceptorAdapter 拦截Controller响应返回值 实现
HandlerInterceptorAdapter是Spring MVC框架中的一个拦截器适配器,可以拦截Controller的请求和响应,用于处理请求前、请求后和请求完成后的逻辑。在拦截器中可以实现对请求参数的验证、日志记录、权限控制等功能。
在HandlerInterceptorAdapter中,可以重写以下方法:
-
preHandle(HttpServletRequest request, HttpServletResponse response, Object handler): 在Controller方法执行前调用,可以进行一些前置处理,如果返回false,则请求不会进入Controller方法。
-
postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView): 在Controller方法执行后,视图渲染前调用,可以对ModelAndView进行修改。
-
afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex): 在请求完成后调用,可以进行一些后置处理,例如清理资源等。
在拦截器中拦截Controller响应返回值,可以在postHandle方法中对返回值进行处理。可以根据返回值的类型进行判断,对不同类型的返回值进行不同的处理。例如,对于返回值为JSON格式的数据,可以进行统一的格式化处理。
以下是一个示例:
public class MyInterceptor extends HandlerInterceptorAdapter {
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
if (modelAndView != null && modelAndView.getViewName() == null) {
Object returnValue = modelAndView.getModel().get("result");
if (returnValue != null && returnValue instanceof Result) {
Result result = (Result) returnValue;
// 对返回值进行统一的格式化处理
// ...
modelAndView.getModel().put("result", result);
}
}
}
}
在此示例中,拦截器会判断返回值是否为Result类型,如果是,则对其进行格式化处理,并将其放回到ModelAndView中。这样就可以实现对Controller响应返回值的拦截处理
原文地址: https://www.cveoy.top/t/topic/fgAJ 著作权归作者所有。请勿转载和采集!