oyj7454103 2012-11-12 10:26
浏览 2230
已采纳

经典的错误,求方案。getOutputStream() has already been called for this response

[code="java"]严重: Servlet.service() for servlet spring-mvc threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response[/code]

[code="java"]
严重: Servlet.service() for servlet spring-mvc threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:611)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:180)[/code]

尝试了网上和多的解决方案 无效!

  • 写回答

7条回答 默认 最新

  • iteye_11593 2012-11-12 17:03
    关注

    下面的代码是在实现HTTP协议封装Response时的部分代码
    SimpleHttpResponse.java
    [code="java"]
    OutputStream ops;
    PrintWriter writer;
    String ce = "utf-8";
    public OutputStream getOutputStream() throws Exception {
    if(dateType==W)throw new Exception("getWriter() has already been called!");
    if(ops==null){
    ops = new ByteArrayOutputStream();
    dateType = O;
    }
    return ops;
    }
    public PrintWriter getWriter() throws Exception {
    if(dateType==O)throw new Exception("getOutputStream() has already been called!");
    if(writer==null){
    ops = new ByteArrayOutputStream();
    writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(ops,ce)),true);
    dateType = W;
    }
    return writer;
    }
    [/code]
    W和O表示已经定义流的模式。
    为什么getWriter()之后不能getOutputStream()?或者getOutputStream()之后不能getWriter()呢?
    很简单writer是写入字符的,一行写完之后还可能会插入换行回车。显然是不能和outputStream重叠使用。
    原理已经给出了,请楼主自己根据实际情况理解错误的原因。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(6条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器