`
aben328
  • 浏览: 1460563 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类

Ajax_显示进度条

    博客分类:
  • Ajax
阅读更多

Ajax_显示进度条

JSP部分:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

   <title>My JSP 'index.jsp' starting page</title>
   <meta http-equiv="pragma" content="no-cache">
   <meta http-equiv="cache-control" content="no-cache">
   <meta http-equiv="expires" content="0">
   <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
   <meta http-equiv="description" content="This is my page">
   <script type="text/javascript">
   var xmlHttp;
   var key;
   var bar_color = 'gray';
   var span_id = "block";
   var clear = "&nbsp;&nbsp;&nbsp;"
  
   function createXMLHttpRequest() {
      if (window.ActiveXObject) {
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      }
      else if (window.XMLHttpRequest) {
      xmlHttp = new XMLHttpRequest();
      }
   }

  function go() {
     createXMLHttpRequest();
     checkDiv();
     var url = "ProgressBarServlet?task=create";
     var button = document.getElementById("go");
     button.disabled = true;
     xmlHttp.open("GET", url, true);
     xmlHttp.onreadystatechange = goCallback;
     xmlHttp.send(null);
  }

  function goCallback() {
     if (xmlHttp.readyState == 4) {
      if (xmlHttp.status == 200) {
         setTimeout("pollServer()", 2000);
      }
     }
  }

  function pollServer() {
  createXMLHttpRequest();
  var url = "ProgressBarServlet?task=poll&key=" + key;
  xmlHttp.open("GET", url, true);
  xmlHttp.onreadystatechange = pollCallback;
  xmlHttp.send(null);
  }

  function pollCallback() {
     if (xmlHttp.readyState == 4) {
      if (xmlHttp.status == 200) {
       var percent_complete =xmlHttp.responseXML.getElementsByTagName("percent")[0].firstChild.data;
       var index = processResult(percent_complete);
       for (var i = 1; i <= index; i++) {
        var elem = document.getElementById("block" + i);
        elem.innerHTML = clear;
        elem.style.backgroundColor = bar_color;
        var next_cell = i + 1;
        if (next_cell > index && next_cell <= 9) {
           document.getElementById("block" + next_cell).innerHTML =percent_complete + "%";
        }
       }
       if (index < 9) {
          setTimeout("pollServer()", 2000);
       } else {
        document.getElementById("complete").innerHTML = "Complete!";
        document.getElementById("go").disabled = false;
       }
      }
     }
  }

  function processResult(percent_complete) {
     var ind;
     if (percent_complete.length == 1) {
        ind = 1;
     } else if (percent_complete.length == 2) {
       ind = percent_complete.substring(0, 1);
     } else {
        ind = 9;
     }
     return ind;
  }

  function checkDiv() {
     var progress_bar = document.getElementById("progressBar");
     if (progress_bar.style.visibility == "visible") {
        clearBar();
        document.getElementById("complete").innerHTML = "";
     } else {
        progress_bar.style.visibility = "visible"
     }
  }

  function clearBar() {
     for (var i = 1; i < 10; i++) {
      var elem = document.getElementById("block" + i);
      elem.innerHTML = clear;
      elem.style.backgroundColor = "white";
     }
  }
  </script>
</head>
<body>
   <h1>
    Ajax Progress Bar Example
   </h1>
   Launch long-running process:
   <input type="button" value="Launch" id="go" onclick="go();" />
   <p>
   <table align="center">
    <tbody>
     <tr>
      <td>
       <div id="progressBar"
          style="padding:2px;border:solid black 2px;visibility:hidden">
        <span id="block1">&nbsp;&nbsp;&nbsp;</span>
        <span id="block2">&nbsp;&nbsp;&nbsp;</span>
        <span id="block3">&nbsp;&nbsp;&nbsp;</span>
        <span id="block4">&nbsp;&nbsp;&nbsp;</span>
        <span id="block5">&nbsp;&nbsp;&nbsp;</span>
        <span id="block6">&nbsp;&nbsp;&nbsp;</span>
        <span id="block7">&nbsp;&nbsp;&nbsp;</span>
        <span id="block8">&nbsp;&nbsp;&nbsp;</span>
        <span id="block9">&nbsp;&nbsp;&nbsp;</span>
       </div>
      </td>
     </tr>
     <tr>
      <td align="center" id="complete"></td>
     </tr>
    </tbody>
   </table>
</body>
</html>

Servlet部分:

public class ProgressBarServlet extends HttpServlet {

private int counter = 1;

public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   this.doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   String task = request.getParameter("task");
   String res = "";
   if (task.equals("create")) {
    res = "<key>1</key>";
    counter = 1;
   } else {
    String percent = "";
    switch (counter) {
    case 1:
     percent = "10";
     break;
    case 2:
     percent = "23";
     break;
    case 3:
     percent = "35";
     break;
    case 4:
     percent = "51";
     break;
    case 5:
     percent = "64";
     break;
    case 6:
     percent = "73";
     break;
    case 7:
     percent = "89";
     break;
    case 8:
     percent = "100";
     break;
    }
    counter++;
    res = "<percent>" + percent + "</percent>";
   }
   PrintWriter out = response.getWriter();
   response.setContentType("text/xml");
   response.setHeader("Cache-Control", "no-cache");
   out.println("<response>");
   out.println(res);
   out.println("</response>");
   out.close();
}

}

分享到:
评论

相关推荐

    Silverlihgt实现Ajax功能.zip_Silverlihgt_ajax_弹出框_进度条

    本压缩包文件"Silverlihgt实现Ajax功能.zip_Silverlihgt_ajax_弹出框_进度条"显然关注的是如何在Silverlight应用程序中集成Ajax功能,实现弹出框以及进度条效果。 首先,让我们深入理解Silverlight中的Ajax功能。...

    JinDuTiao.rar_java 进度条_进度条

    在IT行业中,尤其是在前端开发领域,进度条是一个常见的用户界面元素,用于显示任务或数据加载的进度。在Java和JavaScript中实现进度条可以提供良好的用户体验,让用户了解操作的状态,增加交互性。本压缩包...

    fileup.rar_ASP 上传文件_asp 上传_上传 asp_上传 进度条_文件上传

    标题"fileup.rar_ASP 上传文件_asp 上传_上传 asp_上传 进度条_文件上传"暗示了这是一个关于ASP文件上传的解决方案,而且还特别提到了“带有进度条”,这意味着该示例可能包含了在上传过程中展示进度反馈的功能,以...

    ajax实现加载进度条

    // 显示进度条 }); $(document).ajaxStop(function() { // 隐藏进度条 }); ``` 2. **使用NProgress插件**:NProgress是一个轻量级的进度条插件,特别适合Ajax加载场景。在Ajax请求开始时调用`NProgress.start()`...

    ajax进度条,实现很炫的效果

    Ajax进度条是Ajax请求过程中显示加载状态的一种可视化方式,它能够提供用户友好的反馈,让用户知道后台操作正在进行,从而减少用户的等待焦虑感。在本篇文章中,我们将深入探讨如何实现一个炫酷的Ajax进度条,并了解...

    java 和ajax编写带进度条的附件上传

    在标签"进度条"方面,HTML5提供了`&lt;progress&gt;`元素来创建进度条,通过JavaScript动态更新其`value`属性,即可显示文件上传的进度。此外,还可以利用CSS3进行样式定制,使得进度条视觉效果更佳。 至于压缩包中的...

    Ajax批量上传显示进度条

    Ajax技术的引入,使得在不刷新整个页面的情况下实现异步数据交换成为可能,进而可以实现在文件上传过程中显示进度条的功能,极大地提升了用户体验。本文将详细探讨如何利用Ajax实现批量上传文件并展示进度条。 首先...

    jquery ajax上传 带进度条

    "jquery ajax上传 带进度条"这个主题就是关于如何在jQuery AJAX上传文件时展示进度反馈。 首先,jQuery本身并不直接支持文件上传的进度显示,但可以通过一些插件来实现,如Uploadify。Uploadify是一款强大的jQuery...

    jsp中使用ajax实现web进度条

    "jsp中使用ajax实现web进度条"这个主题就是关于如何在Java Server Pages (JSP)中利用Asynchronous JavaScript and XML (AJAX)技术来创建一个动态显示文件上传进度的组件。下面将详细介绍这一过程中的关键知识点。 1...

    ajax带进度条的上传功能

    同时,设置一个`&lt;progress&gt;`元素用于显示进度条: ```html &lt;progress id="uploadProgress" value="0" max="100"&gt;&lt;/progress&gt; ``` 2. **JavaScript部分**: 使用`FormData`对象封装文件数据,然后创建一个新...

    ssh2(struts2+spring2.5+hibernate3.3+ajax)带进度条文件上传(封装成标签

    这样在其他页面中,只需要插入这个标签,就可以实现文件上传并显示进度条。 在实际应用中,这样的文件上传功能对于用户来说非常友好,因为它提供了实时的反馈,提高了用户体验。同时,SSH框架的使用确保了代码的...

    ASP.net AJAX进度条实例(批量插入大量数据)

    该示例使用简单,完成插入指定数量的数据,ajax写入数据库,并显示精准进度,实时返回运行过程。对于大量插入数据库的操作,可以做到无刷,不超时; 目录结构: Css/style.css -------------进度条样式 Js/...

    文件上传(ajax) 带进度条 fileupload 类部分重写

    3. **进度条显示**:为了提供更好的用户体验,我们需要在上传过程中显示进度条。这通常通过监听XMLHttpRequest的`progress`事件来实现。每当有新的数据被传输时,事件就会触发,提供已上传和总大小的信息。我们可以...

    struts2+ajax文件进度条的实现

    在Struts2中实现文件上传功能,通常会涉及到处理大文件、用户体验优化等问题,如显示文件上传进度条。这个场景下,我们结合Ajax技术,可以创建一个实时反馈文件上传进度的动态界面,提升用户交互体验。 首先,我们...

    ajax上传文件进度条及springMVC上传

    总结,通过Ajax与SpringMVC的结合,我们可以实现文件上传过程中前端的进度条显示。关键在于利用Ajax的异步特性,监听文件上传的进度,并通过自定义后端组件将这些信息传递回前端。这样的设计不仅提升了用户体验,也...

    Ajax 进度条

    同时,UpdatePanel会自动显示进度条。 5. **进度条更新**:如果任务可以被分解为多个阶段,可以通过在服务器端定期更新ProgressControl的状态,以反映任务的进度。这可能涉及到JavaScript和AJAX回调,以便更新...

    Ajax_Uploader

    Ajax_Uploader 是一个基于Ajax技术的文件上传组件,它提供了丰富的功能,包括但不限于实时的文件上传进度显示、批量上传等。在现代Web应用中,用户对于交互性的需求日益增强,传统的表单提交方式在处理文件上传时...

    ajax文件上传进度条

    以上代码展示了如何结合jQuery和Apache FileUpload创建一个Ajax文件上传并显示进度条的简单示例。在实际项目中,可能需要考虑更多的细节,比如错误处理、文件大小限制、文件类型检查等。此外,还可以通过添加样式和...

    ajax进度条滚动时的等待效果

    3. **显示进度条**:创建一个进度条元素,并设置初始值为0。你可以使用CSS动画来模拟进度条的滚动效果。 4. **监听Ajax请求的进度**:许多现代浏览器的XMLHttpRequest对象提供了`onprogress`事件,你可以监听这个...

    ajax实现上传文件时显示进度条的功能

    实现上传文件时显示进度条的功能。当上传文件时,客户端同时显示文件上传的进度,从而及时了解文件传送情况。 源码结构说明 1.FileUpload文件夹下为源文件 2.FileUpload.war为部署文件 已经试过运行正常

Global site tag (gtag.js) - Google Analytics