JSP上传图片产生 java.io.IOException: Stream closed异常如何解决方法

什么样的生活也要珍惜。如果现在你正幸福着你的幸福,那好,尽情享受它,不要浪费;如果现在你正痛苦着你的痛苦,那也不要紧,痛苦过后或许就是新生;如果现在你的生活平平淡淡,那么,更应好好珍惜它,因为,这才是生活的真谛。
在做 jsp 上传图片时,把 java 代码直接改成 jsp,上传时产生 如下异常:
2012-12-31 8:59:21 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.io.IOException: Stream closed
...
百思不得其解,翻出 jsp 转成 servlet 后的代码。如下(很很的醒目一下):
 
...
}catch(Exception e){
e.printStackTrace();
}finally{
out.flush(); //
out.close();// 此处为源始代码
DBHelper.freeConnection(connection);
}
out.write('\r'); // 如上我已经关了 out 对象,但此处还在使用,所以便产生了如开始所描述的异常
out.write('\n');
} catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try { out.clearBuffer(); } catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
...

解决办法:把程序中加红加粗的代码改成:
 
out.flush() ;
out = pageContext.pushBody(); // 关于该段程序的解释,doc中已经说的很清楚。

如下:(要特别注意一下flush()和clear()方法的区别,因为需求不同程序是不同的)
abstract void flush()
Flush the stream.

abstract void clear()
Clear the contents of the buffer.


PageContext 实现了抽象类 JspContext ,方法:pushBody(), 保存当前的out对象
BodyContent pushBody()
Return a new BodyContent object, save the current "out" JspWriter, and update the value of the "out" attribute in the page scope attribute namespace of the PageContext.

public abstract class BodyContent
extends JspWriter out 内置对象

到此这篇关于JSP上传图片产生 java.io.IOException: Stream closed异常如何解决方法就介绍到这了。只有依靠你自己和你自己的能力来保卫,才是最可靠的、 有把握的和持久的。更多相关JSP上传图片产生 java.io.IOException: Stream closed异常如何解决方法内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

您可能有感兴趣的文章
如何使用富文本编辑器上传图片实例详解

java中如何实现上传图片即时显示效果功能

Java 实例 - 字符串反转

Java实例--字符串替换

Java实例--删除字符串中最后一个字符