2011-02-14 39 views
0

我读过Servlet Exception - getOutputStream() has already been called for this response但我没有找到任何解决方案,我的问题。问题OutputStream

在我main.jsp中我有这样的说法:

<img src="ImageElaborator.jsp" style="float: left" alt="" height="70" width="70"/> 

,并在我的ImageElaborator.jsp:

byte[] photo = getPhoto(); 
response.getOutputStream().write(photo, 0, photo.length); 

该片段显示了我的形象,但我这个错误:

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

我不明白我该如何解决它。请帮忙!

回答

1

不要在JSP中执行此操作。在一个servlet中执行。

1

您不应该将这些代码放在JSP中,因为在执行代码时,JSP开头的一些空格,换行符等可能已经发送到JSP的输出流。

JSP应该用于输出文本或标记,但不能执行业务逻辑并将原始字节发送到输出流。你应该把这种代码放在一个servlet中,或者你最喜欢的MVC框架(Struts,Stripes,Spring MVC等)的动作中。

1

在JSP中你不应该调用OutputStream,因为它是定义为隐变量 看到隐含的会话和对象: http://www.exforsys.com/tutorials/jsp/jsp-implicit-and-session-objects.html

我觉得这样的事情应该是OK:

byte[] photo = getPhoto(); 
out.write(photo, 0, photo.length); 

但使用一个Servlet,因为它已经被说做的最好办法。

+0

out是JspWriter,我想。所以这不是一个流 – Bozho 2011-02-14 16:56:02