项目实战(二)后台批量插入数据库,前台进度条显示进度
来源:互联网 发布:js 获取主域名 编辑:程序博客网 时间:2024/06/03 12:27
本功能后台通过List批量插入数据库,前台通过ajax调用,动态显示进度条。
先上传运行截图页面很丑陋,没美工。嵌套bootstrap的进度条。
前台代码:
点击button按钮,进行后台的数据库批量上传
<button onclick="ass()">导入</button><!-- <a href="#" class="btn btn-danger btn-xs" onclick="ajax()">进度条</a>--><hr /><!-- 进度条的显示 --><div class="progress progress-striped active" id="proges"> <div id="prog" class="progress-bar" role="progressbar" aria-valuenow="" aria-valuemin="0" aria-valuemax="100" style="width:0%;"> <span id="proglabel">正在启动,请稍后......</span> </div> </div> </div>
Ajax进行进度条的更新和后台的数据交互:
<script type="text/javascript"> var t; var time = 50; var timer_is_on=1; function ass(){ if(timer_is_on == 1){ t=setTimeout(function(){ass()},500); ajax(); }else{ clearTimeout(t); timer_is_on=1; } } function ajax(){ var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = function(){ if (xmlhttp.readyState==4) { //alert(xmlhttp.status); if(xmlhttp.status == 200){ //alert(xmlhttp.responseText+'~~~~'); if(xmlhttp.responseText == 100){ $("#prog").removeClass("progress-bar-success").css("width","0%").text("已经成功"); clearTimeout(t); timer_is_on=0; } if(xmlhttp.responseText < 101){ startProgerss(xmlhttp.responseText); } } } } xmlhttp.open("post", "${pageContext.request.contextPath}/progress.action"); xmlhttp.send(null);} function reset( ) { //value = 0 $("#prog").removeClass("progress-bar-success").css("width","0%").text("等待启动"); //setTimeout(increment,5000); } function startProgerss(value){ if(value<=100){ $("#prog").css("width",value + "%").text(value + "%"); } else{ setTimeout(reset,3000); return; } }</script>
后台的实现:
后台代码:
后台用的springmvc+mybatis,插入数据库是采用List的批量插入,我们将整个List拆分成100份,注意此时的数据量非常大,百万级。
类中定义的:
//传值的索引public static int index;public static List<Customer> list = null;
后台:
//前台调用更新进度条@RequestMapping(value="/progress.action")@ResponseBodypublic int progress(HttpServletResponse response,HttpServletRequest request){if(flag == 1){flag = 0;insert(null, response, request);return index;}else{return index;}}//导入功能@RequestMapping(value = "/insert.action")@ResponseBody public void insert(Model model, HttpServletResponse response,HttpServletRequest request) { try {list = toData.paraseExcel(pathAll);//输出文件的路径System.out.println(pathAll);int length = list.size();System.out.println(length);int listArray = list.size()/100;if(index >=100){index = 0;}//int index=0;while(index<100){ if(index<99){ toData.proDisp(list.subList(index*listArray, (index+1)*listArray)); index++; }else{ toData.proDisp(list.subList(index*listArray, list.size())); index++; list.clear(); flag = 1; } }System.out.println("导入ok!");} catch (Exception e) {e.printStackTrace();} }
0 0
- 项目实战(二)后台批量插入数据库,前台进度条显示进度
- PHP实现前台同步显示后台任务进度
- 使用进度条显示后台执行进度的方法
- 前台显示后台数据
- 进度条下方显示进度Tag
- B/S下,页面后台计算需要大量时间,前台如何显示载入中或进度条
- 前台插入数据后,数据库里没有显示
- eclipse进度条从后台还原到前台
- Python显示进度条,实时显示处理进度
- 金融项目实战-进度条
- 项目进度(二)
- FLEX进度条ProgressBar不显示进度
- 场景切换之进度条显示进度百分比
- android上方显示进度的进度条
- 自定义圆形进度条显示MP3播放进度
- 使用带进度显示的圆形进度条
- ios 滑块进度条百分比 显示进度
- 【进度显示】progressbar进度条的使用
- java三种遍历集合的方法
- jQuery元素选择器(element)
- Android TextView 应用富文本后换行失效的问题
- jQuery类名选择器(.class)
- CentOS7 升级kernel
- 项目实战(二)后台批量插入数据库,前台进度条显示进度
- jQuery复合选择器
- Java HashMap实现原理 源码剖析
- 题目1020:最小长方形
- jQuery ancestor descendan选择器
- C语言-apache mod(模块开发)-采用VS2017开发实战(windows篇)
- jQuery的parent > child选择器
- Eddy的难题
- 练习-海伦公式