如何通过web.xml刷新响应缓冲区?

时间:2013-04-25 06:05:29

标签: java http servlets

我有一个典型的场景,我在Web应用程序和客户端 - 服务器应用程序中共享一些过滤器类。 如果这些过滤器类中有任何异常,我必须向客户端发送特定的json字符串。但是没有任何Web应用程序(因为我想显示一个通用的jsp)。

我正在使用folloiwng代码发送回复

 response.getWriter().println(responseObject.toString());
 response.flushbuffer();

现在的问题是,我的客户端应用程序工作正常,但jsp在顶部显示responseobj(因为提交了响应)。 但是,如果我删除flushbuffer(),那么jsp工作正常,我无法解析客户端应用程序上的json对象。

我不知道如何解决这种情况。我想知道是否有办法通过web.xml刷新响应缓冲区。这样我就可以更改客户端 - 服务器应用程序的web.xml,并按原样保留Web应用程序的web.xml。

1 个答案:

答案 0 :(得分:0)

一旦某些HTML离开服务器并且正在进入浏览器,您就无法将其恢复并将响应更改为JSON。

我认为你有几个基本选择:

  • 延迟输出HTML(确实延迟输出任何内容),直到您确定这是正确/最终响应。
  • 使用响应包装器(如此答案 - Capture and log the response body)。即缓冲/保存响应的全部,过滤器可以选择是否使用它,部分,全部,或者返回JSON。