JSP文件下载及出现getOutputStream() has already been called for this response的解决方法
http://iamin.blogdriver.com/iamin/1072546.html
http://iamin.blogdriver.com/iamin/1072546.html
一、采用RequestDispatcher的方式进行
1、web.xml文件中增加
<mime-mapping>
<extension>doc</extension>
<mime-type>application/vnd.ms-word</mime-type>
</mime-mapping>
2、程序如下:
<%@page language="java" import="java.net.*" pageEncoding="gb2312"%>
<%
response.setContentType("application/x-download");//设置为下载application/x-download
String filenamedownload = "/系统解决方案.doc";//即将下载的文件的相对路径
String filenamedisplay = "系统解决方案.doc";//下载文件时显示的文件保存名称
filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay);
try
{
RequestDispatcher dispatcher = application.getRequestDispatcher(filenamedownload);
if(dispatcher != null)
{
dispatcher.forward(request,response);
}
response.flushBuffer();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
}
%>
二、采用文件流输出的方式下载
1、web.xml文件中增加
<mime-mapping>
<extension>doc</extension>
<mime-type>application/vnd.ms-word</mime-type>
</mime-mapping>
2、程序如下:
<%@page language="java" contentType="application/x-msdownload" import="java.io.*,java.net.*" pageEncoding="gb2312"%><%
//关于文件下载时采用文件流输出的方式处理:
//加上response.reset(),并且所有的%>后面不要换行,包括最后一个;
//因为Application Server在处理编译jsp时对于%>和<%之间的内容一般是原样输出,而且默认是PrintWriter,
//而你却要进行流输出:ServletOutputStream,这样做相当于试图在Servlet中使用两种输出机制,
//就会发生:getOutputStream() has already been called for this response的错误
//详细请见《More Java Pitfill》一书的第二部分 Web层Item 33:试图在Servlet中使用两种输出机制 270
//而且如果有换行,对于文本文件没有什么问题,但是对于其它格式,比如AutoCAD、Word、Excel等文件
//下载下来的文件中就会多出一些换行符0x0d和0x0a,这样可能导致某些格式的文件无法打开,有些也可以正常打开。
response.reset();//可以加也可以不加
response.setContentType("application/x-download");//设置为下载application/x-download
// /../../退WEB-INF/classes两级到应用的根目录下去,注意Tomcat与WebLogic下面这一句得到的路径不同,WebLogic中路径最后没有/
System.out.println(this.getClass().getClassLoader().getResource("/").getPath());
String filenamedownload = this.getClass().getClassLoader().getResource("/").getPath() + "/../../系统解决方案.doc";
String filenamedisplay = "系统解决方案.doc";//系统解决方案.txt
filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay);
OutputStream output = null;
FileInputStream fis = null;
try
{
output = response.getOutputStream();
fis = new FileInputStream(filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b)) > 0)
{
output.write(b, 0, i);
}
output.flush();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(fis != null)
{
fis.close();
fis = null;
}
if(output != null)
{
output.close();
output = null;
}
}
%>
相关附件下载:
评论
CoderDream
2008-10-07
回复
你的代码有问题,还是会抛出错误。
解决办法:
在使用完输出流以后调用以下两行代码即可:
out.clear();
out = pageContext.pushBody();
参考:
tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法
http://blog.csdn.net/alexwan/archive/2007/02/13/1508871.aspx
解决办法:
在使用完输出流以后调用以下两行代码即可:
out.clear();
out = pageContext.pushBody();
参考:
tomcat5下jsp出现getOutputStream() has already been called for this response异常的原因和解决方法
http://blog.csdn.net/alexwan/archive/2007/02/13/1508871.aspx
发表评论
我的相册
IBM_Jam2008_YuLimin
共 169 张
共 169 张
最近加入圈子
链接
- 超越黎明
- CJSDN
- CSDN
- JavaWorld@TW
- JavaEye
- Spring中文论坛
- Matrix
- BEA dev2dev
- Agile Tao Forum
- Flickr
- developerWorks
- TheServerSide
- Sun Java Forum
- JavaRanch
- 满江红开源
- del.icio.us
- Sun中国技术社区
- 希赛网中国软考
- AJAX Design Patterns
- CSS: The Missing Manual
- Java Persistence with Hibernate
- Script in Java
- Building Spring 2 Enterprise Applications
- Tuscany中文社区
- 我爱人开的购物店,欢迎光临
- Beginning Spring 2: From Novice to Professional
- Effective Java Second Edition
- JAVA世纪网
最新评论
-
请删除你的NPP吧,可以用 ...
引用引用 NotePad ++ 的作者没有什么可以非议的,人家只是公开表达了自己 ...
-- by JJiaoWzk -
2008年JavaEyer广州周末篮 ...
有没有活动照片可以秀啊
-- by fins -
2008年JavaEyer广州周末篮 ...
有没打成? 太可惜了,我国庆昏睡四天,再打了两天球,一天K歌.
-- by yidwo -
JSP文件下载及getOutputS ...
你的代码有问题,还是会抛出错误。解决办法:在使用完输出流以后调用以下两行代码即可 ...
-- by CoderDream -
多普达Dopod德版D900刷机 ...
我买多普达后,在坛子上泡了三天就开刷前一个星期刷了N次(N>=15),然后就烦了 ...
-- by Eastsun







评论排行榜