万卷书   首页 > 电脑书籍 > JSP > JSP编程进度条设计实例
 

  如果任务已经启动,isStarted()方法将返回true:


public synchronized boolean isStarted() {
return started;
}


  如果任务已经完成,isCompleted()方法将返回true:


public synchronized boolean isCompleted() {
return counter == 100;
}


  如果任务正在运行,isRunning()方法将返回true:


public synchronized boolean isRunning() {
return running;
}



   SetRunning()方法由start.jsp或stop.jsp调用,当running参数是true时。SetRunning()方法还要将任务标记为“已经启动”。调用setRunning(false)表示要求run()方法停止执行。


public synchronized void setRunning(boolean running) {
this.running = running;
if (running)
started = true;
}

   任务执行完毕后,调用getResult()方法返回计算结果;如果任务尚未执行完毕,它返回null:


public synchronized Object getResult() {
if (isCompleted())
return new Integer(sum);
else
return null;
}

   当running标记为true、completed标记为false时,run()方法调用work()。在实际应用中,run()方法也许要执行复杂的SQL查询、解析大型XML文档,或者调用消耗大量CPU时间的EJB方法。注意“繁重的任务”可能要在远程服务器上执行。报告结果的JSP页面有两种选择:或者等待任务结束,或者使用一个进度条。


public void run() {
try {
setRunning(true);
while (isRunning() && !isCompleted())
work();
} finally {
setRunning(false);
}
}



上一页 上一页