您好,匿名用户
随意问技术百科期待您的加入

java.lang.IllegalStateException:getOutputStream() has already been called for this response

+2 投票
  1. 系统使用的是spring3.1
  2. tomcat6
  3. 页面无 out 等输出,问题是随机出现

下面是错误提示信息,网上找了很多方法都没解决。

严重: Servlet.service() for servlet spring-mvc threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response
严重: 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)
用户头像 提问 2013年 1月8日 @ dongxldante 上等兵 (386 威望)
分享到:

1个回答

+1 投票
 
最佳答案

下面的代码是在实现HTTP协议封装Response时的部分代码 
SimpleHttpResponse.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;
	}

W和O表示已经定义流的模式。 
为什么getWriter()之后不能getOutputStream()?或者getOutputStream()之后不能getWriter()呢?
很简单writer是写入字符的,一行写完之后还可能会插入换行回车。显然是不能和outputStream重叠使用。 
原理已经给出了,请楼主自己根据实际情况理解错误的原因。

用户头像 回复 2013年 1月9日 @ Wukong 上等兵 (475 威望)
选中 2013年 1月9日 @Saber
提一个问题:

相关问题

+1 投票
1 回复 53 阅读
用户头像 提问 2012年 12月1日 @ Berserker 上等兵 (157 威望)
+1 投票
1 回复 104 阅读
用户头像 提问 2013年 1月29日 @ Zeus 上等兵 (193 威望)
+1 投票
1 回复 249 阅读
用户头像 提问 2013年 1月14日 @ Hera 上等兵 (249 威望)
0 投票
1 回复 80 阅读
用户头像 提问 2012年 12月1日 @ Sagittarius 上等兵 (289 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...