下载文件时可以正常下载,但TOMCAT的日志中报:
2008-01-10 09:31:38 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
java.io.IOException: Stream closed
at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:202)
at org.apache.jasper.runtime.JspWriterImpl.clearBuffer(JspWriterImpl.java:157)
错误,请问怎么能不出现这个错误?
下载页面代码如下:
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="java.net.*"%>
<%
String pathname = request.getParameter("path");
String filename=request.getParameter("filename");
out.print(pathname+filename);response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition","attachment; filename="+filename);FileInputStream fileInputStream =new FileInputStream(pathname+filename);
out.print(pathname+filename);
out.clear();
out.close();
ServletOutputStream myout=response.getOutputStream();
int i;
while ((i=fileInputStream.read()) != -1)
{myout.write(i);}
fileInputStream.close();
myout.close();%>

解决方案 »

  1.   

    你要知道
    "out"和"response.getOutputStream()" 实际对象虽然不一样,但他们引用的流却是一样的你先close了他 又对他进行write操作在jsp里你不应该close响应流顶多flush去掉所有close()调用
      

  2.   

    out.close(); 
    这个去掉我也试了,结果是一样的
      

  3.   

    and 
    myout.close(); 
      

  4.   

    这样也不行,报的错误变为:
    2008-01-10 12:51:47 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
    java.lang.IllegalStateException: getOutputStream() has already been called for this response
    at org.apache.coyote.tomcat5.CoyoteResponse.getWriter(CoyoteResponse.java:599)
    at org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter(CoyoteResponseFacade.java:163)
    at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:122)
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:190)
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:115)
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:75)
      

  5.   

    请参考这里
    http://topic.csdn.net/u/20080110/13/f3f70bd5-66f5-4d3b-8d58-ccebe70adb2c.html
      

  6.   

    你要下载文件的话,不要再使用out输出内容,你的JSP中也不能包含任何的HTML内容,回车都不行!
    <%@page   import="java.util.*"%> 
    <%@page   import="java.io.*"%> 
    <%@page   import="java.net.*"%> 
    <% 
    都必须改成<%@page   import="java.util.*"%><%@page
    import="java.io.*"%><%@page
    import="java.net.*"%><% 
    下载文件最好使用Servlet,而不要使用JSP