`

修改网上的JSP+Ajax 进度条中的错误

阅读更多
对网上的错误代码进行修改

一、 jsp文件progressBarJsp.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%  
int counter = 1;
Object obj=session.getAttribute("counter");
if(obj!=null)counter=Integer.parseInt(obj.toString());

 String task = request.getParameter("task");  
        String res ="";  
          
        if (task.equals("create")) {             
            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>";
        }  
          
        response.setContentType("text/xml");  
        response.setHeader("Cache-Control", "no-cache");  
        out.println("<response>");  
        out.println(res);  
        out.println("</response>");  
        out.flush();        
        
      session.setAttribute("counter",counter);
    %>

	

二、发出Ajax请求的html文件JspprogressBar.html

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>

<script type="text/javascript">  
  
  var xmlHttp;  
        var bar_color = 'blue';  
        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 = "progressBarJsp.jsp?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()", 1000);  
                }  
            }  
        }  
          
        function pollServer() {  
            createXMLHttpRequest();  
            var url = "progressBarJsp.jsp?task=poll";  
            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.style.value="background-color:blue;"; 
                        elem.innerHTML = clear;  
                        elem.style.background = 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()", 1000);  
                    } 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>JSP+Ajax 进度条实例2</h1>
开始一个长时间运行的任务:
<input type="button" value="开始" id="go" onclick="go();" />

<p>
<table align="center">
	<tbody>
		<tr>
			<td>
			<div id="progressBar"
				style="cpadding: 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>
分享到:
评论

相关推荐

    JSP+Ajax 进度条

    **JSP+Ajax 进度条** 在Web开发中,为用户提供实时的进度反馈是非常重要的,尤其是在执行耗时操作如文件上传、数据处理等场景。JSP(JavaServer Pages)和Ajax(Asynchronous JavaScript and XML)结合使用可以实现...

    java,jsp,ajax进度条(jsp)

    本项目"java,jsp,ajax进度条(jsp)"结合了这三种技术,旨在实现一个功能强大的进度条,用于监控大文件的上传或下载过程,提升用户体验。 首先,让我们深入理解这三个技术的基础概念: 1. **Java**:Java是一种跨...

    共享一个:jQuery+PHP(JSP)+Ajax的无刷新分页带读取进度条

    汉化了一个国外的开源插件, myPagination+XML+PHP(JSP) 大家看看吧,喜欢的就下载,仅供交流,源代码用的是 LinApex 写的 myPaginationV4.0 他整理的比较乱,我重新完善了一下供大家下载。

    ajax +jsp实现带进度条的文件上传

    - 在Ajax请求和JSP处理过程中,都需要考虑错误处理,例如文件过大、格式不正确、服务器存储空间不足等情况。 实现这种功能时,还需要关注跨域问题、文件大小限制、安全问题(如防止文件覆盖、XSS攻击等)。同时,...

    jsp,ajax进度条

    现在让我们来讨论如何在JSP中集成AJAX实现进度条效果: 1. **HTML/JavaScript**:首先,在客户端,我们需要一个HTML元素作为进度条的容器,比如一个div。然后,用JavaScript(通常使用jQuery库来简化操作)监听用户...

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

    《JSP+Dreamweaver CS4+CSS+Ajax动态网站开发典型案例》光盘 完整源代码 有3个完整的jsp网站 第1章 设计Web标准网页 1.1 设个人主页 1.2 设计CSS 1.3 设计新闻查看页面 1.4 设计博客网站首页 1.5 CSS设计页面布局 ...

    jsp中使用ajax实现web进度条

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

    jsp+ajax简单的点播系统

    【JSP+Ajax简单点播系统详解】 在Web开发领域,JSP(JavaServer Pages)与Ajax(Asynchronous JavaScript and XML)的结合被广泛应用于构建交互性强、用户体验良好的应用程序。本项目“jsp+ajax简单的点播系统”...

    div+css进度条完美解决方案

    在JSP页面中,我们可以使用JavaScript或者jQuery来动态更新进度条的样式。当从服务器接收到新的进度数据时,JavaScript会修改进度条子`div`的宽度,从而实时反映进度。例如,可以使用`AJAX`异步请求获取服务器上的...

    Ajax+jsp实现上传进度条

    "Ajax+jsp实现上传进度条"是一个典型的提升用户体验的技术方案。Ajax(Asynchronous JavaScript and XML)和JSP(JavaServer Pages)结合使用,可以创建出无刷新、动态更新的网页,其中上传进度条功能就是一种常见且...

    jsp+JQuery多文件上传进度条显示(单选文件)

    在本文中,我们将深入探讨如何使用JSP和jQuery实现一个简单的单选文件上传功能,并结合进度条显示上传进度。这是一个前端部分的实现,而后端部分需要根据实际项目需求自行完成。 首先,我们要明白JSP(JavaServer ...

    java+ajax上传文件带进度条

    在IT行业中,实现文件上传并显示进度条是常见的需求,特别是在Web应用中。这个主题“java+ajax上传文件带进度条”聚焦于使用Java后端和Ajax前端技术来完成这一功能。下面将详细介绍如何实现这一功能,以及涉及的关键...

    用SSH+ajax实现的上传进度条,仿qq邮箱的大文件上传窗体

    ### 使用SSH+Ajax实现上传进度条的技术解析 #### 一、技术背景介绍 在Web开发领域,用户上传大文件时的体验优化一直是重要的研究方向之一。传统的文件上传方式往往缺乏实时反馈机制,使得用户在上传过程中无法获知...

    struts+ajax上传进度条

    总之,结合Struts和Ajax实现的上传进度条,可以让用户在文件上传过程中得到实时反馈,提升用户体验。关键在于正确配置Struts的文件上传拦截器,以及在前端利用Ajax事件监听并更新进度条。通过DemoUpload提供的示例,...

    网页文件上传带文件上传信息(JSP+Ajax)

    在这个场景中,我们看到的"网页文件上传带文件上传信息(JSP+Ajax)"是指使用Java Server Pages (JSP)和Asynchronous JavaScript and XML (Ajax)技术来实现文件上传并实时反馈上传状态的过程。下面将详细介绍这一技术...

    ajax+jsp上传程序加进度条.zip

    【标题】"ajax+jsp上传程序加进度条.zip"是一个基于AJAX技术与JSP(JavaServer Pages)的文件上传程序,它包含了实现文件上传功能的详细源代码。该程序的特点在于提供了一个友好的用户体验,即在上传过程中显示...

    用jsp实现的进度条

    在JSP中实现进度条,我们可以利用AJAX(Asynchronous JavaScript and XML)进行异步通信,使得页面在不刷新的情况下与服务器交换数据。通常,我们会有一个后台服务或Servlet处理任务并更新进度,而JSP则负责显示这个...

    Struts2+上传进度条完美运行

    在这个“Struts2+上传进度条完美运行”的主题中,我们将深入探讨如何在Struts2框架下实现文件上传功能,并结合进度条展示上传进度,提供用户友好的交互体验。 1. **Struts2文件上传**: Struts2通过`struts2-core`...

    ajax+jsp大文件上传,带进度条.

    5. **后端JSP处理**:在服务器端,JSP页面接收到Ajax请求后,需要处理分块数据,通常会创建一个临时文件或内存中的缓冲区来存储分块。当所有分块都上传完毕后,再将它们合并成完整的文件。这里需要注意文件的命名、...

    JSP文件上传 支持进度条显示.rar

    "JSP文件上传 支持进度条显示"这个项目是针对JSP环境设计的一个AJAX Web上传程序,它允许用户上传大文件(如单个文件100M),并具有文件上传进度条的可视化功能。以下将详细解析这个项目的知识点: 1. **JSP(Java...

Global site tag (gtag.js) - Google Analytics