我使用 Spring MVC 和 webflow。有时我不得不直接写入响应对象。具体来说,我有一个 keep-alive 类,它在服务器执行一些运行缓慢的操作时不断向浏览器发送空响应,我直接写入响应。此类用于我的应用程序的一部分,该部分基于 webflow 构建,也用于我们网站的仅使用 spring MVC 的部分。当我们引入 webflow 时,我们的 keep-alive 类崩溃了。显然,当 webflow 向它调用的浏览器发送响应时:
response.getWriter().print(stuff)
但是当我们应用程序的 spring MVC 部分向浏览器发送响应时,它使用
response.getOutputStream().print(stuff)
Response 是一个 HttpServletResponse 对象。您不能对同一响应调用 getWriter 和 getOutputStream。将抛出非法状态异常。
如何在 webflow 或 spring mvc 中覆盖此行为,以便它们以相同的方式处理响应?
最佳答案
您可以使用 servlet 过滤器。过滤器可以拦截所有输出并以另一种方式重写。 一个很好的例子是 jsonp 过滤器: http://jpgmr.wordpress.com/2010/07/28/tutorial-implementing-a-servlet-filter-for-jsonp-callback-with-springs-delegatingfilterproxy/
关于java - Spring MVC 如何处理响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16308312/