我已阅读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
我不明白我是如何解决它的。请帮忙!
答案 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,因为它已经说过了。