下载文件时可以正常下载,但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();%>
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();%>
解决方案 »
- 请帮忙解释下这段代码(关于二维数组的疑问)?
- 关于Html嵌入打成jar包的Applet方法
- 问一个这样的问题,数据库里有很多数据,记录设备的运行情况,怎样计算“有效小时数”和“无故障小时数”,应该怎样计算?
- 关于PushbackInputStream
- java连接数据库access和mysql的问题
- 有没有专门记录程序运行次数的方法?
- JInternalFrame 能不能设置成不被拖动的
- JMF question?
- 献身java的编码员都是受虐待狂
- 如何使java_swing图形程序运行时不出现dos窗口?
- 我崩溃了。紧急求助关于JAVA中中文字符的读取,与写入问题
- jbuilder9生成可执行文件
"out"和"response.getOutputStream()" 实际对象虽然不一样,但他们引用的流却是一样的你先close了他 又对他进行write操作在jsp里你不应该close响应流顶多flush去掉所有close()调用
这个去掉我也试了,结果是一样的
myout.close();
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)
http://topic.csdn.net/u/20080110/13/f3f70bd5-66f5-4d3b-8d58-ccebe70adb2c.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