社区
Java EE
帖子详情
这个进度条怎么做
firstDemo
2010-08-12 03:38:53
我们系统在用户登录后加载了很多用户的信息以及系统的信息
所以在输入用户名和密码后点确定要等挺久才能看到我们系统的首页,
我想做个进度条显示,
,
主要是后台执行到哪步根本不清楚,系统采用的struts2,在登录后是一个action来处理用户的信息 以及加载一些别的系统信息,至于这个action执行到哪步了根本不知道
思路不明
请各位大虾帮忙给些意见
...全文
250
16
打赏
收藏
这个进度条怎么做
我们系统在用户登录后加载了很多用户的信息以及系统的信息 所以在输入用户名和密码后点确定要等挺久才能看到我们系统的首页, 我想做个进度条显示, , 主要是后台执行到哪步根本不清楚,系统采用的struts2,在登录后是一个action来处理用户的信息 以及加载一些别的系统信息,至于这个action执行到哪步了根本不知道 思路不明 请各位大虾帮忙给些意见
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
firstDemo
2010-08-18
打赏
举报
回复
谢谢各位的回复,ext现在不是要收费了吗,后来弄了个gif图片
myloveyoyo1314
2010-08-13
打赏
举报
回复
不会用到那么长时间吧 如果时间短 弄个图片显示加载中就好了啊 如果你的程序 登陆需要等待 几分钟 那么... 别做了算了
sustbeckham
2010-08-13
打赏
举报
回复
可以考虑EXTJS 的特效
ibookvip
2010-08-13
打赏
举报
回复
思路:1.服务端响应整个的数据量
2.客户端计算已下载数据量,百分比显示在UI上
好吃的松子
2010-08-13
打赏
举报
回复
建议还是优化登录逻辑为好。把一些不是用户独享的数据提出来放在别的地方处理。
hexing_x
2010-08-13
打赏
举报
回复
如果不是要等1分钟以上别做了,显示正在登陆就可以了!
如果非要做可以用JQuery做
aisino_hjp
2010-08-13
打赏
举报
回复
用AJAX的框架很容易实现
4.5 显示进度条
无一例外地,几乎每个应用都会时不时地调用一个长时间运行的事务。如果你关心系统的可用性,就要确保用户能很容易地看到系统的状态。如果是一个胖客户应用,对于长时间运行事务的问题,解决办法很简单:只需显示一个进度条,以便用户知道目前所处状况。不过,在Ajax之前,要在Web应用中做到这一点很不容易。本节将使你了解如何使用Ajax为Web应用建立进度条。
在代码清单4-9所示的例子中,再次在pollCallback()方法中使用了setTimeout(),从而每隔2秒调用一次服务器。在processResult()方法中,只是从服务器查找已完成比例(百分数)的第一位数字,从而得出要将进度条中的哪些进度块着色(灰色)。
代码清单4-9 progressBar.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Ajax Progress Bar</title>
<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>
这个例子的服务器代码“模拟”了一个长时间运行的事务(见代码清单4-10)。在真实环境中,这期间可能还要同时创建多个新实例并注册,之前还需要客户发出请求。为简单起见,我们忽略了这点,也没有编写线程代码。
代码清单4-10 ProgressBarServlet.java
package ajaxbook.chap4;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ProgressBarServlet extends HttpServlet {
private int counter = 1;
/** Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(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();
}
}
图4-10显示了实际工作中的进度条,图4-11显示了完成时的情况。
图4-10 进度条示例
图4-11 进度条完成
泽风
2010-08-13
打赏
举报
回复
只是登录,没必要用滚动条吧!用一个提示等待的就行了吗!用Ajax请求
请求前: var mask = new Ext.LoadMask(Ext.getBody(), {
msg: '请等待........'
});
mask.show();
请求成功: mask.hide();
vinegardou
2010-08-13
打赏
举报
回复
来学习
a154825321
2010-08-13
打赏
举报
回复
高见啊
狂想者
2010-08-13
打赏
举报
回复
学习中。。。。。。。。。
firstDemo
2010-08-12
打赏
举报
回复
谢谢各位的解答,就是思路有点不明,比如文件上传,我可以利用ajax来获得已上传文件和总文件的百分比来设置进度条的百分比,但是这个登陆,后台没有参照物啊
经常在黑云中出没
2010-08-12
打赏
举报
回复
ext,JQuery,都有这种进度条的,用起来也很简单
lc999
2010-08-12
打赏
举报
回复
[Quote=引用 1 楼 w_hanxian 的回复:]
可以考虑下用js的各种框架
[/Quote]
正解
w_hanxian
2010-08-12
打赏
举报
回复
可以考虑下用js的各种框架
android viewpager
进度条
跟随页面滑动
要实现这个功能,你需要
做
以下几步: 1. **创建自定义的
进度条
视图**:首先,设计一个自定义的
进度条
布局,它可以是一个简单的`ProgressBar`或者具有自定义样式的`View`。这个
进度条
需要能够被设置为当前页面的...
duilib
做
的Demo ,支持
进度条
,以及动态修改xml 的内容
在这个特定的Demo中,重点展示了如何利用Duilib实现
进度条
的展示以及XML内容的动态修改功能。 1. **Duilib 控件与
进度条
**: Duilib 提供了多种控件,包括按钮、文本框、列表视图、对话框等,其中
进度条
是常见的一...
自己写的一个VB
进度条
控件(附源码)
自己写的一个VB
进度条
控件(附源码) 只用了几个Label就搭建了一个看上去比较完美的
进度条
控件,效果和稳定性不低于系统的,最重要的是你可以包含到自己工程里,这样发布时就不要另外再带个ocx文件啦! 代码比较...
Java快速实现的
进度条
使用JProgressBar和SwingWorker
做
的Java
进度条
简单方便 效果看这里:http://blog.csdn.net/kakashi8841/archive/2011/05/03/6388797.aspx
vc++经典实用100实例Windows界面编程之第4章 状态栏与
进度条
包含8个例子。核心实例1 AVI状态栏核心实例2 彩色渐变
进度条
扩展实例1 带
进度条
的状态栏扩展实例2 带位图的状态栏扩展实例3 在状态栏中显示时间扩展实例4 ...什么看完还有状态栏和
进度条
功能不会
做
的?那你还是别编程了
Java EE
67,550
社区成员
225,863
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章