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

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?