jQuery progressbar通過Ajax請求實現後台進度即時功能_jquery

來源:互聯網
上載者:User

本文主要示範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,則可以看到進度條逐漸更新

源碼下載:http://xiazai.jb51.net/201610/yuanma/jqueryProgressbar(jb51.net).rar

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.