【问题标题】:How to intercept Spring MVC serialized response?如何拦截 Spring MVC 序列化响应?
【发布时间】:2015-08-10 02:08:57
【问题描述】:

我想在请求结束时拦截 Spring servlet 响应。我的意思是,我想做的是记录服务响应、服务返回的 json 和 statusCode。这就是我想要记录的全部内容。

为此,我已经尝试过像这样使用 HandlerInterceptorAdapter

public class ResponseLoggerInterceptor
    extends HandlerInterceptorAdapter {

    private static final Logger LOGGER = LoggerFactory.getLogger(ResponseLoggerInterceptor.class);

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
        ModelAndView modelAndView) throws Exception {
        LOGGER.info("Intercepted");
        super.postHandle(request, response, handler, modelAndView);
    }

}

那个“处理程序”对象是对象响应,但它没有被序列化。你知道我必须在哪里以及如何拦截最后一个 servlet 响应吗?提前致谢

【问题讨论】:

    标签: java spring spring-mvc servlets interceptor


    【解决方案1】:

    您将需要一个“HttpResponse”对象 并会建议你在 'afterCompletion' 方法中进行操作

    【讨论】:

    • 需要 HattpResponse 是什么意思?它出现在哪里?感谢您的回答
    • 重写 afterCompletion 方法
    • public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception
    • 你是想说我有回应吗?对,我有。是 ResponseEntity 对象,我知道我拥有它,但尚未序列化。我想要的是序列化的对象(我认为自己不适合序列化它)
    • 好的,然后重写 afterCompletion 方法,如果你想在这里记录一个 json 响应是 SO
    猜你喜欢
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    相关资源
    最近更新 更多