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 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算