mq2275
2015-12-05 12:13
采纳率: 0%
浏览 1.4k

Struts2 Action 向jsp传图片

Struts2 getOutputStream() has already been called for this response

public String execute() throws Exception{
HttpServletResponse response = ServletActionContext.getResponse();
FileInputStream in = new FileInputStream(filePath);
sout = response.getOutputStream();

byte b[] = new byte[1024];
int len = 0;
while ((len = in.read(b)) > 0) {
sout.write(b,0,len);
}
sout.flush();
sout.close();
in.close();

    return SUCCESS;
}
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 毕小宝 2015-12-05 12:53
     在jsp向页面输出图片的时候,使用response.getOutputStream()会有这样的提示:java.lang.IllegalStateException:getOutputStream() has already been called for this response,会抛出Exception
       原因一:
    

      JSP默认的输出流为PrintWriter ,即<% %>以外的东西所默认的输出方式,如果你尝试在JSP中使用ServletOutputStream就会引起错误.要么直接改用Servlet输出(复写service方法),要么删除除%><%中的任何东西(包括HTML标签,空格,回车等东西)应该就可以。对于这样的情况应该这样来解决,删除%><%之间的所有内容包括空格和换行符,最后也要消除空格和换行符,最好再加上一句response.reset()。
      原因二:

      在J2EE的API参考里有这么个:ServletResponse的getWriter()方法里会抛出这个异常
    详情参考:http://www.cnblogs.com/jorton/archive/2012/05/04/2482609.html

    打赏 评论
  • Royal_lr 2015-12-06 04:22

    貌似不是这么传的吧,,,,,

    打赏 评论

相关推荐 更多相似问题