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 = " "
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"> </span>
<span id="block2"> </span>
<span id="block3"> </span>
<span id="block4"> </span>
<span id="block5"> </span>
<span id="block6"> </span>
<span id="block7"> </span>
<span id="block8"> </span>
<span id="block9"> </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_弹出框_进度条"显然关注的是如何在Silverlight应用程序中集成Ajax功能,实现弹出框以及进度条效果。 首先,让我们深入理解Silverlight中的Ajax功能。...
在IT行业中,尤其是在前端开发领域,进度条是一个常见的用户界面元素,用于显示任务或数据加载的进度。在Java和JavaScript中实现进度条可以提供良好的用户体验,让用户了解操作的状态,增加交互性。本压缩包...
标题"fileup.rar_ASP 上传文件_asp 上传_上传 asp_上传 进度条_文件上传"暗示了这是一个关于ASP文件上传的解决方案,而且还特别提到了“带有进度条”,这意味着该示例可能包含了在上传过程中展示进度反馈的功能,以...
// 显示进度条 }); $(document).ajaxStop(function() { // 隐藏进度条 }); ``` 2. **使用NProgress插件**:NProgress是一个轻量级的进度条插件,特别适合Ajax加载场景。在Ajax请求开始时调用`NProgress.start()`...
Ajax进度条是Ajax请求过程中显示加载状态的一种可视化方式,它能够提供用户友好的反馈,让用户知道后台操作正在进行,从而减少用户的等待焦虑感。在本篇文章中,我们将深入探讨如何实现一个炫酷的Ajax进度条,并了解...
在标签"进度条"方面,HTML5提供了`<progress>`元素来创建进度条,通过JavaScript动态更新其`value`属性,即可显示文件上传的进度。此外,还可以利用CSS3进行样式定制,使得进度条视觉效果更佳。 至于压缩包中的...
Ajax技术的引入,使得在不刷新整个页面的情况下实现异步数据交换成为可能,进而可以实现在文件上传过程中显示进度条的功能,极大地提升了用户体验。本文将详细探讨如何利用Ajax实现批量上传文件并展示进度条。 首先...
"jquery ajax上传 带进度条"这个主题就是关于如何在jQuery AJAX上传文件时展示进度反馈。 首先,jQuery本身并不直接支持文件上传的进度显示,但可以通过一些插件来实现,如Uploadify。Uploadify是一款强大的jQuery...
"jsp中使用ajax实现web进度条"这个主题就是关于如何在Java Server Pages (JSP)中利用Asynchronous JavaScript and XML (AJAX)技术来创建一个动态显示文件上传进度的组件。下面将详细介绍这一过程中的关键知识点。 1...
同时,设置一个`<progress>`元素用于显示进度条: ```html <progress id="uploadProgress" value="0" max="100"></progress> ``` 2. **JavaScript部分**: 使用`FormData`对象封装文件数据,然后创建一个新...
这样在其他页面中,只需要插入这个标签,就可以实现文件上传并显示进度条。 在实际应用中,这样的文件上传功能对于用户来说非常友好,因为它提供了实时的反馈,提高了用户体验。同时,SSH框架的使用确保了代码的...
该示例使用简单,完成插入指定数量的数据,ajax写入数据库,并显示精准进度,实时返回运行过程。对于大量插入数据库的操作,可以做到无刷,不超时; 目录结构: Css/style.css -------------进度条样式 Js/...
3. **进度条显示**:为了提供更好的用户体验,我们需要在上传过程中显示进度条。这通常通过监听XMLHttpRequest的`progress`事件来实现。每当有新的数据被传输时,事件就会触发,提供已上传和总大小的信息。我们可以...
在Struts2中实现文件上传功能,通常会涉及到处理大文件、用户体验优化等问题,如显示文件上传进度条。这个场景下,我们结合Ajax技术,可以创建一个实时反馈文件上传进度的动态界面,提升用户交互体验。 首先,我们...
总结,通过Ajax与SpringMVC的结合,我们可以实现文件上传过程中前端的进度条显示。关键在于利用Ajax的异步特性,监听文件上传的进度,并通过自定义后端组件将这些信息传递回前端。这样的设计不仅提升了用户体验,也...
同时,UpdatePanel会自动显示进度条。 5. **进度条更新**:如果任务可以被分解为多个阶段,可以通过在服务器端定期更新ProgressControl的状态,以反映任务的进度。这可能涉及到JavaScript和AJAX回调,以便更新...
Ajax_Uploader 是一个基于Ajax技术的文件上传组件,它提供了丰富的功能,包括但不限于实时的文件上传进度显示、批量上传等。在现代Web应用中,用户对于交互性的需求日益增强,传统的表单提交方式在处理文件上传时...
以上代码展示了如何结合jQuery和Apache FileUpload创建一个Ajax文件上传并显示进度条的简单示例。在实际项目中,可能需要考虑更多的细节,比如错误处理、文件大小限制、文件类型检查等。此外,还可以通过添加样式和...
3. **显示进度条**:创建一个进度条元素,并设置初始值为0。你可以使用CSS动画来模拟进度条的滚动效果。 4. **监听Ajax请求的进度**:许多现代浏览器的XMLHttpRequest对象提供了`onprogress`事件,你可以监听这个...
实现上传文件时显示进度条的功能。当上传文件时,客户端同时显示文件上传的进度,从而及时了解文件传送情况。 源码结构说明 1.FileUpload文件夹下为源文件 2.FileUpload.war为部署文件 已经试过运行正常