Spring mvc 如何在spring中添加到HttpServletResponse

Spring mvc 如何在spring中添加到HttpServletResponse,spring-mvc,controller,interceptor,Spring Mvc,Controller,Interceptor,我有返回Json响应的rest控制器。我添加了拦截器,它将向响应中添加一些元素,如下所示 @Override public void postHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler, final ModelAndView modelAndView) throws Exception { final long end = System.

我有返回Json响应的rest控制器。我添加了拦截器,它将向响应中添加一些元素,如下所示

@Override
public void postHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler, final ModelAndView modelAndView) throws Exception {
    final long end = System.currentTimeMillis();
    final long start = (Long) request.getAttribute("_start_time");
    // how do I append to response by the difference of end - start?
    super.postHandle(request, response, handler, modelAndView);
}
如果我简单地向响应中添加任何内容,我会得到以下异常:


出现异常java.lang.IllegalStateException:getOutputStream()已被HttpServletResponse调用,您只能使用或中的一个,如文档中所示。您遇到的异常情况是,getOutputStream()已被调用,因此不允许您调用getWriter()。

在HttpServletResponse上,您只能使用或中的一个,如文档中所示。您遇到的异常情况是,getOutputStream()已被调用,因此不允许您调用getWriter()。

将“结束-开始”时间添加到响应中不是正确的位置。实际上,您可能会中断正在返回的JSON响应

你需要做的是-

选项1-添加响应标题。像这样的

httpServletResponse.addHeader("total-time", "100ms");
这样,您就拥有了数据,而不必修改响应。您可以在Firebug中看到标题

选项2-在日志文件中添加上述信息,这样就不必更改servlet响应。

在响应中添加“结束-开始”时间不是正确的位置。实际上,您可能会中断正在返回的JSON响应

你需要做的是-

选项1-添加响应标题。像这样的

httpServletResponse.addHeader("total-time", "100ms");
这样,您就拥有了数据,而不必修改响应。您可以在Firebug中看到标题

选项2-在日志文件中添加上述信息,这样就不必更改servlet响应