【问题标题】:Cause of Servlet's 'Response Already Committed' [duplicate]Servlet“响应已提交”的原因 [重复]
【发布时间】:2012-07-03 13:39:39
【问题描述】:

在 servlet 中遇到此异常的常见可能性有哪些 - 响应已提交?

【问题讨论】:

    标签: exception servlets response


    【解决方案1】:

    响应被提交的原因如下:

    • 因为响应缓冲区已达到最大缓冲区大小。可能是因为以下原因:

        > the bufferSize in JSP page has reached.You can increase the JSP buffer size 
          in page directive. See here, 
      
         <%@ page buffer="5kb" autoFlush="false" %>
      
        > the server default response max buffer size has reached.You can increase    
          the server default max buffer size.
      
          ServletRespnse.setBufferSize()
      
    • 部分代码在响应中调用了flushed,即调用了HttpServletResponse.flushBuffer()方法。

    • 部分代码已刷新OutputStreamWriter,即调用方法HttpServletResponse.getOutputStream().flush()或`HttpServletResponse.getWriter().flush()

    • 如果您已转发到另一个页面,该页面的响应既已提交又已关闭。例如,当 response.sendRedirect() 被调用时,响应被提交。

    【讨论】:

    • 感谢您的回复。我们故意从不调用这些中的任何一个。但是,flush="true" 会导致这种情况吗?那么,有哪些措施可以避免这种情况呢?
    • 增加jsp的缓冲区大小
    • 怎么做?你能举个例子解释一下吗?
    • 你的意思是什么响应既已提交又已关闭
    • 提交意味着只写标题。关闭意味着写入标头 + 写入响应 + 关闭流。这样你就不能再写任何内容了。
    猜你喜欢
    • 2011-12-18
    • 2014-05-09
    • 2016-03-08
    • 1970-01-01
    • 2013-06-21
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多