HandlerInterceptorAdapter是Spring MVC框架中的一个拦截器适配器,可以拦截Controller的请求和响应,用于处理请求前、请求后和请求完成后的逻辑。在拦截器中可以实现对请求参数的验证、日志记录、权限控制等功能。

在HandlerInterceptorAdapter中,可以重写以下方法:

  1. preHandle(HttpServletRequest request, HttpServletResponse response, Object handler): 在Controller方法执行前调用,可以进行一些前置处理,如果返回false,则请求不会进入Controller方法。

  2. postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView): 在Controller方法执行后,视图渲染前调用,可以对ModelAndView进行修改。

  3. 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响应返回值的拦截处理

HandlerInterceptorAdapter 拦截Controller响应返回值 实现

原文地址: https://www.cveoy.top/t/topic/fgAJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录