编程开发 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
移动开发 架构设计 编程语言 互联网 开发经验 Web前端 开发总结
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
  编程开发知识库 -> Web前端 -> 利用Ajax向Servlet发送请求下载统计后的Excel文件 -> 正文阅读
 

[Web前端]利用Ajax向Servlet发送请求下载统计后的Excel文件[第1页]

在统计业务需求中,需要去实时的统计并下载Excel文件。当数据量特别大的时候,就需要给予用户提示。点击下载时界面禁止用户操作,当弹出下载窗口时允许操作。
由于后台业务逻辑,在获取数据和统计数据的过程中 耗时比较长,所以在excel文件导出的过程中加了一个 提示用户正在导出数据的等待页面 ,现在用的是jquery的插件jquery.blockUI.js 。
这个插件的主要用法就是在发送异步请求之前先 调用一下锁屏的方法:
$.blockUI({ message: '<img src="././images/WaitProcess.gif" /> 数据导出中...' });,使用户不能进行其他操作,同时还能提示用户正在导出数据;  在success回调方法中解锁: $.unblockUI(); 
原本现在文件直接通过超链接可以完成下载,但现在要在success回调方法中解锁: $.unblockUI(); 在url中附带几个参数,并且这些参数要是点击事件触发时的最新值,所以这里使用ajax的方式进行下载。
然而:
1.使用ajax,ajax的返回值类型是json,text,html,xml类型,或者可以说ajax的发送,接受都只能是string字符串,不能流类型,所以无法实现文件下载,强用会出现response冲突。
如果非要使用ajax的话,只能通过返回值得到生成的文件相关url。然后在回调函数里通过创建一个iframe,并设置其src值为文件url,或者一个对文件生成流的处理url,这样操作来实现文件下载且页面无刷新。

<input type="button" value="打印" name="print" onclick="download();" />


<script type="text/javascript" src="${ctx }/js/jquery.js"></script>
<script type="text/javascript" src="${ctx }/js/jquery.blockUI.js"></script>
<script type="text/javascript">
function download(){
	 $.blockUI({message: '<img alt="" src="${ctx }/pkg/loading.gif"> 数据导出中...' });
	 /* 在success回调方法中解锁: $.unblockUI();   */
	 var fondNum = $("#fondNum").val();
	 var startYear = $("#startYear").val();
	 var endYear = $("#endYear").val();
	 $.ajax({
         url: "${ctx }/Stat",
         type: "POST",
         cache: false,
         dataType : 'text',  
         data:{fondNum:fondNum,startYear:startYear,endYear:endYear,print:"打印"},
         success: function(data) {
	    $.unblockUI();
	    var result = eval("(" + data + ")");
            $(document.body).append("<iframe height='0' width='0' frameborder='0'  src=" + result.path + "></iframe>")
         },
         error:function(a,b,c){
         	alert("error");
         }
     });
 }
</script>

以下是servlet:

String fondNum = request.getParameter("fondNum")
int startYear = NumberUtil.getValue(request.getParameter("startYear"));
int endYear = NumberUtil.getValue(request.getParameter("endYear"));
String type = request.getParameter("print");
if(type!= null && type.equals("打印")) {
  try {
      String path = StatPrinter.exportToExcelByYear2(...);//返回的是文件地址
      PrintWriter out = response.getWriter();
      out.print("{\"path\":\""+request.getContextPath() + "/file/down?file=" + path.replace("\\", "/")+"\"}");
      out.close();
  } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
  }
}else {
    ......
}

文章列表
版权声明:本文为博主原创文章,未经博主允许不得转载。给自己的知识点备份,方便以后查阅。
顶0 踩0
  Web前端 最新文章
echarts莫名缩小,并且宽度不能更改,生成时
JAVA后台 关于如何从后台传递信息在jsp前端
HTTP协议(二)
阿里云服务器的域名解析解决方案
live-server的安装与使用
HTML播放视频(兼容IE低版本)
windows下配置nginx+php环境
Chorme 开代理后无法打开jsp页面的问题
分布式任务调度平台XXL
作用域
上一篇文章      下一篇文章      查看所有文章
加:2017-07-12 22:13:18  更:2017-07-12 22:14:35 
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年6日历
2018-6-19 22:13:57
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程开发知识库