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

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

    评论

报告相同问题?