OutputStream有问题

时间:2011-02-14 14:53:29

标签: java jsp stream

我已阅读Servlet Exception - getOutputStream() has already been called for this response,但我找不到解决问题的方法。

在我的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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

我认为这样的事情应该没问题:

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

但最好的方法是使用Servlet,因为它已经说过了。