Spring mvc 如何在spring中添加到HttpServletResponse
我有返回Json响应的rest控制器。我添加了拦截器,它将向响应中添加一些元素,如下所示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.
@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响应