Servlet完成下载后,如何刷新页面? Cannot call sendRedirect() after the response has been comm

wx198977 2012-08-22 04:35:38

public void downLoad(String filePath, HttpServletResponse response,
boolean isOnLine) throws Exception {
File f = new File(filePath);
if (!f.exists()) {
response.sendError(404, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;

response.reset();
if (isOnLine) {
URL u = new URL("file:///" + filePath);
response.setContentType(u.openConnection().getContentType());
response.setHeader("Content-Disposition",
"inline; filename=" + f.getName());

} else {
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename="
+ f.getName());
}
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);
br.close();
out.close();
}




以上为提交下载的方法,希望在下载后,页面能刷新完成跳转,可是当发起response.sendRedirect();后出现异常
java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
请问如何解决?
...全文
2404 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Thick_eggplant 2013-06-26
  • 打赏
  • 举报
回复
这个问题最后怎么样了??
wx198977 2012-08-22
  • 打赏
  • 举报
回复
简单的说,业务是这样 我使用这个Servlet实际是完成上传Excel,后台对Excel进行业务校验。对校验后的不符合业务的单元格记录,以Excel的形式再返回给用户(也就是我说的下载操作)。

现在这个两个功能都已经完成了,但是当给用户返回Excel时,页面不刷新~ 原来页面的文件路径依旧在,觉得很不美观,而且后面还有一个需求就是过滤数据!!也是要提示的,所以页面必须刷新一次!!求解决方法,我的想法是如果可以实现,希望在此基础上修改。

如果的技术上就无法实现的,那么就异步了……但是异步的话,如果用户点到其他页面也是会返回Excel的,那样就很不和谐……因为我的上万行数据验证需要时间。
  • 打赏
  • 举报
回复
response.sendRedirect("当前jsp");这个不行吗
cscript 2012-08-22
  • 打赏
  • 举报
回复
貌似不可能实现的

(1)下载文件,正常情况Response响应头状态码是200,Response响应的消息体里面是文件的数据
(2)sendRedirect,跳转文件,Response响应头的状态码是302,及响应头Location指定需要调整的页面,响应的消息体为空

可见同一次请求是不可能又下载数据,有进行页面跳转

不是代码问题,而是http协议就不能实现你的要求
shifenghuok 2012-08-22
  • 打赏
  • 举报
回复
你的response的getOutputstream被close的时候,response就会自动提交,也就是说这时候response将不能由你来控制了,所以你重新看看你的设计,是不是有问题,一般你这种写法,此servlet就是英语显示一个文件,不应该有刷新这个过程的。
菖蒲老先生 2012-08-22
  • 打赏
  • 举报
回复
我以前遇到过,不好解决。。。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧