JSP upload images to generate java. io. IOException: Stream closed exception resolution
- 2020-06-03 08:02:53
- OfStack
When uploading images from jsp, change the java code directly to jsp, and the following exceptions occur:
2012-12-31 8:59:21 org.apache.catalina.core.StandardWrapperValve invoke
Severe: Servlet. () for servlet threw exception
java.io.IOException: Stream closed
...
Scratching their heads, jsp to servlet after the code. The following (very striking 1 below) :
Solution: Change the program's bold and red code to:
Here's how :(pay special attention to the differences between flush() and clear() methods under 1, because different programs have different requirements)
Flush the stream.
PageContext implements the abstract class JspContext with the method pushBody (), saving the current out object
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 built-in objects
2012-12-31 8:59:21 org.apache.catalina.core.StandardWrapperValve invoke
Severe: Servlet. () for servlet threw exception
java.io.IOException: Stream closed
...
Scratching their heads, jsp to servlet after the code. The following (very striking 1 below) :
...
}catch(Exception e){
e.printStackTrace();
}finally{
out.flush(); //
out.close();// Here is the source-beginning code
DBHelper.freeConnection(connection);
}
out.write('\r'); // As above I have already closed out Object, but still in use here, so as to produce the exception described at the beginning
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);
}
...
Solution: Change the program's bold and red code to:
out.flush() ;
out = pageContext.pushBody(); // An explanation of the procedure ,doc That's pretty clear.
Here's how :(pay special attention to the differences between flush() and clear() methods under 1, because different programs have different requirements)
abstract void
flush()
Flush the stream.
abstract void
clear()
Clear the contents of the buffer.
PageContext implements the abstract class JspContext with the method pushBody (), saving the current out object
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 built-in objects