jQuery progressbar通过Ajax请求实现后台进度实时功能


Posted in Javascript onOctober 11, 2016

本文主要演示Jquery progressbar的进度条功能。js通过ajax请求向后台实时获取当前的进度值。后台将进度值存储在cookie中,每次请求后,将进度条的值增2个。以此演示进度条的实时显示功能。

前台index.jsp

jsp代码如下

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!-- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -->
<!DOCTYPE html>
<html>
 <head>
 <base href="<%=basePath%>">

 <title>My JSP 'index.jsp' starting page</title>
 <link rel="stylesheet" type="text/css" href="js/themes/default/easyui.css">
 <link rel="stylesheet" type="text/css" href="js/themes/icon.css">
 <link rel="stylesheet" type="text/css" href="js/demo/demo.css">
 <script type="text/javascript" src="js/jquery.min.js"></script>
 <script type="text/javascript" src="js/jquery.easyui.min.js"></script>
 <script type='text/javascript'>
 var timerId;
 $(function(){
 //每隔0.5秒自动调用方法,实现进度条的实时更新
 timerId=window.setInterval(getForm,500);
 });
 function getForm(){
   //使用JQuery从后台获取JSON格式的数据
   $.ajax({
    type:"post",//请求方式
    url:"getProgressValueByJson",//发送请求地址
    timeout:30000,//超时时间:30秒
    dataType:"json",//设置返回数据的格式
    //请求成功后的回调函数 data为json格式
    success:function(data){
     if(data.progressValue>=100){
      window.clearInterval(timerId);
     }
     $('#p').progressbar('setValue',data.progressValue);
    },
    //请求出错的处理
    error:function(){
     window.clearInterval(timerId);
     alert("请求出错");
    }
   });
 }
 </script>
 </head>
 <body>
  <div style="margin:100px 0;"></div>
  <div id="p" class="easyui-progressbar" style="width: 400px;"></div>
 </body>
</html>

struts.xml文件的配置 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
 "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
 <constant name="struts.devMode" value="true" />
 <package name="front" extends="struts-default" namespace="/">
  <action name="getProgressValueByJson" class="edu.njupt.zhb.test.TestAction" method="getProgressValueByJson">
   <result name="success"></result>
  </action>
  <action name="TestAction" class="edu.njupt.zhb.test.TestAction">
   <result type="httpheader"></result>
  </action>
 </package>

</struts>

后台的java代码() 

package edu.njupt.zhb.test;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
/*
 *@author: ZhengHaibo 
 *web:  http://blog.csdn.net/nuptboyzhb
 *mail: zhb931706659@126.com
 *Sep 13, 2013 Nanjing,njupt,China
 */
public class TestAction extends ActionSupport {
 /**
 * 
 */
 private static final long serialVersionUID = -8697049781798812644L;
 /**
 * 通过Ajax获取json格式的ProgressBar值
 * Type:Action
 */
 public void getProgressValueByJson(){
 String progressValueString = getCookie(getRequest(),"progressValue");
 int progressValue = Integer.parseInt(progressValueString);
 if(progressValue>100){
 progressValue = 0;
 }
 System.out.println(" getCookie:---progressValue="+progressValue);
 writeJsonString("{\"progressValue\":\"" + progressValue + "\"}"); 
 progressValue += 2;
 setCookie(getResponse(),"progressValue",progressValue+"",365*24*60*60);
 }
 
 /**
 * Get HttpServletRequest Object
 * @return HttpServletRequest
 */
 public HttpServletRequest getRequest(){
 return ServletActionContext.getRequest();
 }

 /**
 * Get HttpServletResponse Object
 * @return HttpServletResponse
 */
 protected HttpServletResponse getResponse() {
 return ServletActionContext.getResponse();
 }

 /**
 * Get PrintWriter Object
 * @return PrintWriter
 * @throws IOException
 */
 protected PrintWriter getWriter() throws IOException {
 return this.getResponse().getWriter();
 }

 /**
 * 写Json格式字符串
 * @param json
 */
 protected void writeJsonString(String json) {
 try {
 getResponse().setContentType("text/html;charset=UTF-8");
 this.getWriter().write(json);
 } catch (IOException e) {
 e.printStackTrace();
 }
 }
 
 /**
 * 获取cookie
 * @param request
 * @param name
 * @return String
 */
 public static String getCookie(HttpServletRequest request, String name) {
 String value = null;
 try {
 for (Cookie c : request.getCookies()) {
 if (c.getName().equals(name)) {
  value = c.getValue();
 }
 }
 } catch (Exception e) {
 e.printStackTrace();
 }
 return value;
 }
 
 /**
 * 设置cookie
 * @param response
 * @param name
 * @param value
 * @param period
 */
 public static void setCookie(HttpServletResponse response, String name, String value, int period) {
  try {
   Cookie div = new Cookie(name, value);
   div.setMaxAge(period);
   response.addCookie(div);

  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

运行

将项目部署到Tomcat上之后,在浏览器中输入URL,则可以看到进度条逐渐更新

jQuery progressbar通过Ajax请求实现后台进度实时功能

源码下载:http://xiazai.3water.com/201610/yuanma/jqueryProgressbar(3water.com).rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS画线(实例代码)
Nov 20 Javascript
javascript四舍五入函数代码分享(保留后几位)
Dec 10 Javascript
js出生日期 年月日级联菜单示例代码
Jan 10 Javascript
jquery通过ajax加载一段文本内容的方法
Jan 15 Javascript
JavaScript中的Math.atan2()方法使用详解
Jun 15 Javascript
javascript中Date()函数在各浏览器中的显示效果
Jun 18 Javascript
javascript中 try catch用法
Aug 16 Javascript
真正好用的js验证上传文件大小的简单方法
Oct 27 Javascript
JS获取短信验证码倒计时的实现代码
May 22 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
Sep 18 Javascript
微信小程序实现留言板功能
Nov 02 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
Jun 08 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
Oct 11 #Javascript
Node.js的文件权限及读写flag详解
Oct 11 #Javascript
最原始的jQuery注册验证方式
Oct 11 #Javascript
js正则表达式注册页面表单验证
Oct 11 #Javascript
jQuery ajax MD5实现用户注册即时验证功能
Oct 11 #Javascript
完美解决js传递参数中加号和&amp;号自动改变的方法
Oct 11 #Javascript
浅谈在js传递参数中含加号(+)的处理方式
Oct 11 #Javascript
You might like
在 PHP 中使用随机数的三个步骤
2006/10/09 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
php防止伪造的数据从URL提交方法
2014/06/27 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
php判断目录存在的简单方法
2019/09/26 PHP
java script编程起步(第三课)
2007/01/10 Javascript
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
Python模拟浏览器上传文件脚本的方法(Multipart/form-data格式)
2018/10/22 Python
Python 实现数组相减示例
2019/12/27 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
测量实习生自我鉴定
2013/09/19 职场文书
中学教师自我鉴定
2014/02/07 职场文书
个性发展自我评价
2014/02/11 职场文书
质量安全标语
2014/06/07 职场文书
检讨书怎么写
2015/01/23 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书