业务层进度条界面显示?

weir2008 发布于 2011/08/29 14:33
阅读 904
收藏 2
例子:用户对与考勤计算,后台需要较长时间,前台如果有个进度显示,这样用户体验比较人性化,不知有没有好的方案,当然越详细越好。
加载中
0
鉴客
鉴客
实现这个功能的复杂度,要比这个业务本身复杂几倍!
0
scl33
scl33

如果后台计算能够预估一个总体时间消耗, 或者有确定步骤数量, 才适合用进度条. 不然不如在前台简单弄个旋转式的GIF, 表示在进行就行了...

如果确实要弄进度条, 可以考虑简单的session信息共享, 业务逻辑计算时, 每进行一步, 或每隔多少时间, 向session写入当前进度值. 而页面通过AJAX定时轮询取出这个值, 在页面上展示即可. 但需要考虑服务器连接压力.

另外, 新的浏览器有些已经支持websocket了, 可和服务器建立双向通信长连接.参考http://dev.w3.org/html5/websockets/#the-websocket-interface

var socket = new WebSocket('ws://game.example.com:12010/updates');
socket.onopen = function () {
  setInterval(function() {
    if (socket.bufferedAmount == 0)
      socket.send(getUpdateData());
  }, 50);
};

weir2008
weir2008
这个倒不错,服务器没问题,内部用的,服务器都浪费了。
0
烈冰
烈冰
弄个gif滚来滚去完事,也可以再加个定时检查看后台任务有没有挂了
0
yopo9527
yopo9527
我以前弄过一个假的进度条,只要程序在跑就用一个timer定时去改变进度条,程序跑完了就关掉timer,目的只是让用户知道程序在跑,没死……
0
国民
国民
没做过进度条,感觉比较复杂,好像是用ajax 在页面定时发请求,来得到后台的计算进度,用gif简单好用啊.
0
天界王者
天界王者

引用来自“国民”的答案

没做过进度条,感觉比较复杂,好像是用ajax 在页面定时发请求,来得到后台的计算进度,用gif简单好用啊.
很容易的,两个DIV,一个DIV是背景,一个DIV动态计算要伸展的长度,动态伸展的DIV会有一个gif图片横刷着的,这样就造成了视觉上的进度欺骗
Andre.Z
Andre.Z
@tinyms : 都哪年的老黄历了,汗
天界王者
天界王者
@Andre.Z : 是,记得很久以前你就弄过这个
Andre.Z
Andre.Z
你还要好看,日了,给个色条就对得他们了。有图片,1个div就够了撒
0
weir2008
weir2008

看来在b/s系统中实现的很少,但我觉得很有必要,就算是让内部人员用也显得体验比较人性化,再说内部的系统大多是要处理大数据,计算时间长,更有必要在页面显示出来,可是对于j2ee来说,好像有点麻烦。

scl33
scl33
B/S实现进度条的非常多, 不少, 只是99%都是flash做的
0
weir2008
weir2008
又没有实质性的方案,大家请。
0
qycms_cn
qycms_cn

进度显示,实际:服务器提供业务进度+客户端显示,以目前的浏览器条件(中国),不太好处理。

js(ajax)+div和服务对换数据不太现实,还得服务器支持(asp.net,java还好处理,php还得装其它插件),服务器提供进程状态。由于浏览器的特点:进度是被动显示的。

flex(as3.0)是在客户端可以侦察数据流交换进度,是主动显示,和上面所说的browser+ server的模式刚相反,比较容易实现,而且是效率好。

0
weir2008
weir2008
有方法了,但只适合struts2 的execAndWait可以实现。
返回顶部
顶部