Servlet的"响应已经承诺"的原因

Sri*_*ram 20 servlets exception response

在servlet中遇到此异常的常见可能性是什么 - 响应已经提交?

Ram*_*PVK 34

由于以下原因,响应得到了响应:

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

      > 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()
    
    Run Code Online (Sandbox Code Playgroud)
  • 代码的某些部分在响应上调用了刷新,即e,调用了该方法HttpServletResponse.flushBuffer().

  • 代码的某些部分刷新了OutputStream或者Writer,我调用了方法HttpServletResponse.getOutputStream().flush()或`HttpServletResponse.getWriter().flush()

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

  • 承诺意味着只编写标题.关闭意味着编写标题+写入响应+关闭流.这样你就不能再写任何内容了. (9认同)
  • 增加jsp的缓冲区大小. (2认同)