`

Ajax制作Web进度条

 
阅读更多

Ajax制作Web进度条

1.index.jsp

复制代码
  1 <%@ page language="java" pageEncoding="UTF-8"%>
  2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3 <html>
  4   <head>
  5     <script type="text/javascript" language="javaScript">
  6       var bgcolor = '#7FFF00'; //全局变量,用于设置进度条的背景色
  7       var number; //全局变量,用于记录当前span序号
  8       var clear = "&nbsp;&nbsp;&nbsp;"; //全局变量,记录清空时的内容
  9       var xmlHttp = false; //全局变量,用于记录XMLHttpRequest对象
 10       function createXMLHttpRequest() { //创建XMLHttpRequest对象的方法
 11         if(window.ActiveXObject) { //Inetrnet Explorer时,创建XMLHttpRequest对象的方法
 12           try {
 13             xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
 14           } catch(e) {
 15             try {
 16               xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
 17                //旧版本的Inetrnet Explorer,创建XMLHttpRequest对象
 18             } catch(e) {
 19               window.alert("创建XMLHttpRequest对象错误"+e);
 20             } 
 21           }
 22         } else if(window.XMLHttpRequest) { //mozilla时,创建XMLHttpRequest对象的方法
 23           xmlHttp = new XMLHttpRequest();
 24         } 
 25         if(!(xmlHttp)) { //未成功创建XMLHttpRequest对象
 26             window.alert("创建XMLHttpRequest对象异常!");
 27         }  
 28       }
 29 
 30       //启动进度条的方法
 31       function startRun() {
 32         createXMLHttpRequest(); //创建XMLHttpRequest对象
 33         clearBar(); //执行请求前先清除进度条
 34         xmlHttp.onreadystatechange = callBack;
 35         //指定onreadystatechange属性值,用于指定状态正常时的处理函数
 36         xmlHttp.open("GET", "/ProgressTest/servlet/ProcessServlet?flag=start", true);
 37         xmlHttp.send(null);
 38       }
 39       
 40       //开始进行进度条显示的处理函数
 41       function callBack() {
 42           //window.alert("callBack()");
 43         if(xmlHttp.readyState == 4) {
 44            if(xmlHttp.status == 200) { //status状态正常时
 45              setTimeout("aginRun()",1000);
 46             //每隔1000毫秒(1秒)执行一次“aginRun()”函数
 47            }
 48         }
 49       }
 50 
 51       //清除用于显示进度条的span的内容
 52       function clearBar() {
 53         for (var i=0;i<10;i++) { //根据span元素的id,分别清楚其显示内容
 54           var sp = document.getElementById("sp" + i);
 55           sp.innerHTML = clear; //首先清空span元素的内容
 56           sp.style.backgroundColor = "white"; //设置span元素的背景色
 57         }
 58       }
 59       //设置用于显示进度条的span元素的显示内容
 60       function aginRun() {
 61         createXMLHttpRequest(); //创建XMLHttpRequest对象
 62         xmlHttp.onreadystatechange = aginCallBack;
 63         //指定状态正常时的处理函数为“aginCallBack”
 64         document.getElementById("run").disabled=true; //设置按钮不可用
 65         xmlHttp.open("GET", "/ProgressTest/servlet/ProcessServlet?flag=run", true);
 66         //window.alert(" " + number);
 67         xmlHttp.send(null);
 68       }
 69 
 70       //进度条执行时的函数
 71       function aginCallBack() {
 72         if(xmlHttp.readyState==4) {
 73           if(xmlHttp.status==200) {
 74             var percent = 
 75             xmlHttp.responseXML.getElementsByTagName("percent")[0].firstChild.data;
 76            //记录当前完成比例
 77             var index = parseResult(percent); //解析结果集
 78             var nextCell = 1;
 79             for (var i=0; i<index; i++) { //遍历span元素集合,设置其内容(颜色与文字)
 80               var sp = document.getElementById("sp"+i);
 81             //根据每个span元素的id获取span对象
 82               sp.innerHTML= clear; //清空span元素内容
 83               sp.style.backgroundColor = bgcolor; //设置span元素的内容
 84               nextCell = i+1;
 85               if(nextCell>=index && nextCell<10) { //显示当前处理进度的百分比
 86                 document.getElementById("sp"+nextCell).innerHTML=percent+"%";
 87               }
 88             }
 89             if(index<10) { //索引小于10,设置setTimeout方法
 90                setTimeout("aginRun()",1000);
 91             } else { //索引大于10,设置进度条成功完成的页面效果
 92                document.getElementById("result").innerHTML = "OK!";
 93                document.getElementById("run").disabled = false;
 94             }
 95           }
 96         }
 97       }
 98 
 99       //解析结果集
100       function parseResult(result) {
101         if(result.length<1) {
102           return 1;
103         } else if(result.length==2) {
104           return result.substring(0,1);
105         } else {
106           return 10;
107         }
108       }
109     </script>
110     <title>Ajax进度条</title>
111   </head>
112   <body>
113    <table align="center">
114             <tr>
115               <td>Ajax进度条示例&nbsp;&nbsp;&nbsp;<input type="button" value="开始" id="run" onclick="startRun();"/></td>
116             </tr>
117             <tr>
118               <td>
119               <div id="processBar" style="padding:1px;border:solid black 1px;">
120                <span id="sp0">&nbsp;&nbsp;&nbsp;</span>
121                <span id="sp1">&nbsp;&nbsp;&nbsp;</span>
122                <span id="sp2">&nbsp;&nbsp;&nbsp;</span>
123                <span id="sp3">&nbsp;&nbsp;&nbsp;</span>
124                <span id="sp4">&nbsp;&nbsp;&nbsp;</span>
125                <span id="sp5">&nbsp;&nbsp;&nbsp;</span>
126                <span id="sp6">&nbsp;&nbsp;&nbsp;</span>
127                <span id="sp7">&nbsp;&nbsp;&nbsp;</span>
128                <span id="sp8">&nbsp;&nbsp;&nbsp;</span>
129                <span id="sp9">&nbsp;&nbsp;&nbsp;</span>
130               </div>
131               </td>
132             </tr>
133             <tr><td align="center" id="result"></td> </tr>
134     </table>
135   </body>
136 </html>
复制代码

2.ProcessServlet.java

复制代码
 1 public class ProcessServlet extends HttpServlet {
 2     
 3     private static final String CONTENT_TYPE = "text/xml; charset=UTF-8";
 4 //设置返回响应的ContentType
 5     private int count = 1;// 全局变量计数器
 6     /**
 7      *当前Servlet对象构造方法
 8      */
 9     public ProcessServlet() {
10         super();
11     }
12     /**
13      *当前Servlet销毁时的操作。<br>
14      */
15     public void destroy() {
16         super.destroy();
17     }
18     /**
19      *当前Servlet的doGet方法。<br>
20      *
21      *当客户端表单的“method”类型为“get”时,调用此方法
22      * 
23      * @param request客户端请求对象
24      * @param response 服务器响应对象
25      * @throws ServletException 发生ServeltException时抛出
26      * @throws IOException发生IOException时抛出
27      */
28     public void doGet(HttpServletRequest request, HttpServletResponse response)
29             throws ServletException, IOException {
30         System.out.println("*********************doGet()**********");
31         response.setContentType(CONTENT_TYPE); //设置服务器响应类型
32         response.setHeader("Cache-Control","no-cache"); //页面不记录缓存
33         String flag = request.getParameter("flag"); //操作类型
34         StringBuffer xml= 
35 //            new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\"?><items>");
36             new StringBuffer("<items>");
37         //记录返回的xml串
38         if("start".equals(flag)) { //第一次创建
39 //            xml.append("<count>1</count>");
40             count = 1;
41         } else {
42             String proportion = "";
43             switch(count) { //根据计数器的值,设置显示当前进度的百分比
44               case 1:proportion="10"; break;
45               case 2:proportion="20"; break;
46               case 3:proportion="30"; break;
47               case 4:proportion="40"; break;
48               case 5:proportion="50"; break;
49               case 6:proportion="60"; break;
50               case 7:proportion="70"; break;
51               case 8:proportion="80"; break;
52               case 9:proportion="90"; break;
53               case 10:proportion="100"; break;
54             }
55             count++;
56             xml.append("<percent>").append(proportion).append("</percent>");
57         }
58         xml.append("</items>");
59         PrintWriter out = response.getWriter();
60         out.println(xml.toString()); //返回生成的XML串
61         out.flush(); //输出流刷新
62         out.close(); //关闭输出流
63         System.out.println("*********** " + xml.toString());
64     }
65 
66     /**
67      * 初始化servlet. <br>
68      * @throws ServletException 发生ServletExcpetio异常时抛出
69      */
70     public void init() throws ServletException {
71     }
72 }
复制代码

3.web.xml

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5" 
 3     xmlns="http://java.sun.com/xml/ns/javaee" 
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 7     <servlet>
 8     <servlet-name>ProcessServlet</servlet-name>
 9     <servlet-class>wen.ProcessServlet</servlet-class>
10   </servlet>
11   <servlet-mapping>
12     <servlet-name>ProcessServlet</servlet-name>
13     <url-pattern>/servlet/ProcessServlet</url-pattern>
14   </servlet-mapping>
15     
16   <welcome-file-list>
17     <welcome-file>index.jsp</welcome-file>
18   </welcome-file-list>
19 </web-app>
复制代码
分享到:
评论

相关推荐

    《Ajax应用开发典型实例》

    由浅入深、循序渐进地介绍基于Ajax组合查实例、调查程序文例、天气预报实例、会员注册登录验证、股票价格查询、无刷新新闻系统、滚动翻页、上传文件进度条、Ajax调用Web Service应用实例、RSS阅读器实例等的详细制作...

    《JSP+Dreamweaver CS4+CSS+Ajax动态网站开发典型案例》源代码

    第1章 设计Web标准网页 1.1 设个人主页 1.2 设计CSS 1.3 设计新闻查看页面 1.4 设计博客网站首页 1.5 CSS设计页面布局 第2章 应用Spry框架 2.1 制作二级导航菜单 2.2 制作图片展示 2.3 制作常识问答 2.4 制作Spry...

    制作搜索蜘蛛教程,附带文档,非常实用!

    ASP.NET实现数据采集 asp.net文章采集+ajax进度条 C#多线程学习 Net线程解答 百度MP3搜索地址 抓取 采集设计 防禁采集 怎么用c#写蜘蛛程序 蜘蛛文章列表 用C#2.0实现网络蜘蛛(WebSpider)[图]

    asp.net知识库

    制作一个简单的多页Tab功能 一完美的关于请求的目录不存在而需要url重写的解决方案! 在C#中实现MSN消息框的功能 XmlHttp实现无刷新三联动ListBox 鼠标放在一个连接上,会显示图片(类似tooltip) 使用microsoft.web.ui...

    精通JS脚本之ExtJS框架.part2.rar

    分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计进度条、设计工具栏和菜单栏、设计面板、设计表格、设计表单、设计数据表、对Ajax的支持...

    精通JS脚本之ExtJS框架.part1.rar

    分别介绍了JavaScript的对象编程、JavaScript浏览器对象模型和事件机制、ExtJS的核心类库和组件、ExtJS的事件处理方式、设计进度条、设计工具栏和菜单栏、设计面板、设计表格、设计表单、设计数据表、对Ajax的支持...

    《程序天下:JavaScript实例自学手册》光盘源码

    17.3 CSS+JS制作的进度条(一) 17.4 CSS+JS制作的进度条(二) 17.5 进度条形式的下载效果 17.6 滑动条(一) 17.7 滑动条(二) 17.8 窗体滚动条随文字增加自动滚动 17.9 为textarea加横向滚动条 17.10 记录滚动条...

    程序天下:JavaScript实例自学手册

    17.3 CSS+JS制作的进度条(一) 17.4 CSS+JS制作的进度条(二) 17.5 进度条形式的下载效果 17.6 滑动条(一) 17.7 滑动条(二) 17.8 窗体滚动条随文字增加自动滚动 17.9 为textarea加横向滚动条 17.10 记录滚动条...

    JAVA上百实例源码以及开源项目

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象...

    jQuery 制作横向、纵向滚动切换网页的效果

    内容索引:脚本资源,jQuery,横向滚动,纵向滚动,滚动切换 jQuery制作的滚动特效,让网页在横向、纵向方向上滚动切换,像带有滚动特效的分页功能一样,每次点击页码,会从左至右或从上到下的滚动到下一页,其内容是...

    javascript完全学习手册2 源码

    8.5.3 进度条控制滚动图片 8.5.4 百叶窗效果 8.5.5 更改表格间隔背景色 第9章 JavaScript中的XML 9.1 XML语言 9.1.1 XML概述 9.1.2 XML文档结构 9.1.3 XML标记 9.1.4 XML文档元素 9.1.5 XML属性 ...

    javascript完全学习手册1 源码

    8.5.3 进度条控制滚动图片 213 8.5.4 百叶窗效果 216 8.5.5 更改表格间隔背景色 219 第9章 JavaScript中的XML 223 9.1 XML语言 223 9.1.1 XML概述 223 9.1.2 XML文档结构 225 9.1.3 XML标记 226 9.1.4 XML文档元素 ...

    爱革CMS(门户网站) 3.0.rar

    作为web2.0技术的核心技术之一的ajax技术有很多好处: ◦无刷新的异步交互更加平滑 - 用户体验性强 ◦页面多余内容无需加载 - 降低流量 ◦主流浏览器都支持JavaScript和XMLHttpRequest - 浏览器兼容 8.页面结构...

    爱革CMS(公司网站) 3.0.rar

    作为web2.0技术的核心技术之一的ajax技术有很多好处: ◦无刷新的异步交互更加平滑 - 用户体验性强 ◦页面多余内容无需加载 - 降低流量 ◦主流浏览器都支持JavaScript和XMLHttpRequest - 浏览器兼容 8.页面结构...

    java开源包1

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包11

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包2

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包3

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包6

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

    java开源包5

    利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth ...

Global site tag (gtag.js) - Google Analytics