0

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

我正在使用以下代码发送响应

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

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

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

4

1 回答 1

0

一旦某些 HTML 离开服务器并正在前往浏览器的途中,您就无法将其带回并将响应更改为 JSON。

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

  • 延迟输出 HTML(延迟输出任何东西),直到您确定这是正确/最终的响应。
  • 使用响应包装器(例如在此答案中- Capture and log the response body)。即缓冲/保存所有响应,过滤器可以选择是不使用它、使用其中的一些、全部使用,还是返回 JSON。
于 2013-04-25T06:31:22.800 回答