JSP编程进度条计划实例[网站编程]
本文“JSP编程进度条计划实例[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
很多Web利用、企业利用触及到长时间的操作,比方复杂的数据库查询或沉重的XML处理等,固然这些任务主要由数据库系统或中间件完成,但任务履行的后果仍旧要借助JSP才能发送给用户.本文介绍了一种通过改良前端表现层来改进用户感受、减轻服务器负载的办法.
当JSP调用一个必须长时间运行的操作,且该操作的后果不能(在服务器端)缓冲,用户每次恳求该页面时都必须长时间等候.很多时刻,用户会失去耐烦,接着尝试点击浏览器的革新按钮,终究绝望地脱离.
本文介绍的技术是把沉重的计算任务别脱离来,由一个独立的线程运行,从而办理上述问题.当用户调用JSP页面时,JSP页面会当即返回,并提醒用户任务已经启动且正在履行;JSP页面自动革新自己,报告在独立线程中运行的沉重计算任务的当行进度,直至任务完成.
1、模拟任务
首先我们计划一个TaskBean类,它实现java.lang.Runnable接口,其run()办法在一个由JSP页面(start.jsp)启动的独立线程中运行.终止run()办法履行由另一个JSP页面stop.jsp负责.TaskBean类还实现了java.io.Serializable接口,这样JSP页面便可以将它作为JavaBean调用:
package test.barBean;
import java.io.Serializable;
public class TaskBean implements Runnable, Serializable {
private int counter;
private int sum;
private boolean started;
private boolean running;
private int sleep;
public TaskBean() {
counter = 0;
sum = 0;
started = false;
running = false;
sleep = 100;
}
}
TaskBean包含的“沉重担务”是计算1+2+3…+100的值,不过它不通过100*(100+1)/2=5050公式计算,而是由run()办法调用work()办法100次完成计算.work()办法的代码以下所示,此中调用Thread.sleep()是为了确保任务总耗时约10秒.
protected void work() {
try {
Thread.sleep(sleep);
counter++;
sum += counter;
} catch (InterruptedException e) {
setRunning(false);
}
}
status.jsp页面通过调用下面的getPercent()办法得到任务的完成情况:
public synchronized int getPercent() {
return counter;
}
假如任务已经启动,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);
}
}
以上是“JSP编程进度条计划实例[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |