AJAX技术实现网页无刷新进度条显示
来源:互联网 责任编辑:栏目编辑 发表时间:2013-07-01 19:55 点击:次
在网页中实现页面无刷新的进度条显示不是一件很麻烦的事情,但如果这个进度条要能准确反映当前事务或者复杂逻辑的执行进度,那么却并不是一件容易的事情,目前AJAX技术流行,所以本文作者试想通过AJAX来实现网页准确进度条,以銄读者。
首先应该想一个问题,复杂事务或者事务逻辑如果不按线程方式运行,运行在JAVA运行中根本无法跳过复杂事务去处理进度显示,所以我们这边很自然的想到复杂事务或者业务逻辑用多线程实现。
再想另一个问题,事务处理应该需要网页上的一系列参数信息的,那么如何获取这些参数呢,这个似乎容易想到,传一个HttpServletRequest过去就可以了。
为了进度条公用,所有的复杂事务处理都应该实现同一个接口或者抽象类,我这里用了一个接口,如下:
以下为引用的内容: public interface IprogressBar { public void execute(HttpServletRequest req,String pbid);//执行复杂事务 } 用一个实现多线程的抽象类,如下: public abstract class AbstractProgressBar extends TimerTask implements IprogressBar { private HttpServletRequest request; private String pbid; public AbstractProgressBar(){ } //子类必须重载这个函数 public abstract void execute(HttpServletRequest req, String pbid); public void run() { execute(request,pbid); } public void setRequest(HttpServletRequest req){ this.request=req; } public void setPbid(String pbid){ this.pbid=pbid; } } 设计到具体项目不便给出代码,这里我另外写了一个测试类,也就是执行复杂事务处理的类,如下: public class TestPB extends AbstractProgressBar{ public void execute(HttpServletRequest req, String pbid) { String sql="insert into temp_table(idx)values(?)"; int pid=Integer.parseInt(pbid); ProgressBar pb=new ProgressBar(pid,300,0,1); //模拟大事务 for(int i=0;i<300;i++){ DbUtils.executeUpdate(sql,new Object[]{new Integer(i)}); //控制进度 pb.stepIt(); } } } 接着利用AJAX技术来实现网页的无刷新进度条实现,代码如下: <%@ page contentType="text/html;charset=UTF-8"%> 相关新闻>>最新推荐更多>>>
|