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 内置对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值