JSP实现下载功能,下载过程中出错,如何将错误信息显示在页面上?

右领军大都督 2012-07-11 07:40:40
我们使用JSP做下载功能时,用response.getOutputStream() 将数据写到客户端。
但我有一个问题,如果写的过程中出了错,譬如服务器待下载的文件突然被其他人删除了,那么就会报FileNotFoundException。我可以捕获这个异常让下载操作结束,但是客户端是看不出来出错的,所以终端用户仍然认为下载成功了,直到打开下载的文件时,才发现根本打不开。
我的问题是,当发生这种错误时,我怎么才能把错误信息带回到原页面中?因为我知道因为已经开始下载操作,只是中间出错了,所以response其实已经被返回了。
那么我想再使用request.getRequestDispatcher("xxx.jsp").forward(request, response);将错误信息带回到页面的操作就失败了,请问大侠们,有没有什么办法既能终止掉已经出错的下载操作,还能将错误信息带回到原页面上显示给用户看的方法啊!?
...全文
339 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightyq 2012-07-20
  • 打赏
  • 举报
回复
建议在服务端控制,不用想那么多在客户端发生的事情。
传输的时候先校验文件是否存在,不存在直接提示。
在客户端下载过程中,控制服务器文件不允许删除。
右领军大都督 2012-07-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

SQLException你即使在Dao层捕获了,也做不出实质性的处理,所以把他抛出去,到servlet这层你就可以利用try...catch做判断了
[/Quote]

关键问题是,我可以捕获到exception,但是因为是下载过程中出的错,那表示response其实已经开始向客户端下载东西了,只是下载过程中出了错。那么这时候response实际上是已经返回了。那我即便在这个时候捕获到了exception,也没办法再将错误信息发回到页面了,会报“Cannot forward after response has been committed!”
想和大家请教一下,这种时候,我们是否有其他本法能将错误信息发回到页面让客户看到的!?
ZhangYongjia_ 2012-07-13
  • 打赏
  • 举报
回复
SQLException你即使在Dao层捕获了,也做不出实质性的处理,所以把他抛出去,到servlet这层你就可以利用try...catch做判断了
ZhangYongjia_ 2012-07-13
  • 打赏
  • 举报
回复
在Dao层:SQLException--->>>RuntimeException
然后抛,service层继续抛,servlet层 try catch
右领军大都督 2012-07-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

为什么一定要自己实现下载呢?
直接给个文件链接,让浏览器去下载啥!!或其他下载工具都行啊...
[/Quote]
就是不愿意暴漏文件链接,所以才手写下载过程的。网上查了半天,貌似没人遇到过这种问题,大家都在说怎么手写下载的问题,但是出了错怎么处理却没地方提到。好神奇啊,期望大家给与指点
Αμπάι. 2012-07-11
  • 打赏
  • 举报
回复
为什么一定要自己实现下载呢?
直接给个文件链接,让浏览器去下载啥!!或其他下载工具都行啊...

81,095

社区成员

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

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