您现在的位置是:网站首页> 编程资料编程资料
JSP上传图片产生 java.io.IOException: Stream closed异常解决方法_JSP编程_
2023-05-25
299人已围观
简介 JSP上传图片产生 java.io.IOException: Stream closed异常解决方法_JSP编程_
在做 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()方法的区别,因为需求不同程序是不同的)
PageContext 实现了抽象类 JspContext ,方法:pushBody(), 保存当前的out对象
public abstract class BodyContent
extends JspWriter
out 内置对象
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页面缓存cache技术--浏览器缓存介绍及实现方法_JSP编程_
- response.setContentType()的作用及MIME参数详解_JSP编程_
- jsp中页面之间的跳转forward与sendRedirect的区别_JSP编程_
- 通用弹出层页面(兼容IE、firefox)可关闭控制宽高及屏蔽背景_JSP编程_
- Struts html:checkbox框初始默认是选中的解决方法_JSP编程_
- 如何解决在jsp页面上导入.xls文件报错问题_JSP编程_
- jsp内置对象及方法详细介绍_JSP编程_
- jdbc连接数据库步骤深刻分析_JSP编程_
- freemarker 数字格式化深入理解_JSP编程_
- struts2 action跳转调用另一个程序_JSP编程_
