java 进度条jsp,jsp进度条_jsp技巧
開始頁面:start.jsp
狀態頁面:status.jsp
JSP進度條setTimeout(“location=status.jsp”, 1000);
JSP進度條
結果:
%
CELLPADDING=0 CELLSPACING=2>
percent; i -= 10) { %>
正在執行 完成 尚未開始 已停止 |
停止頁面:stop.jsp
業務邏輯bean:TaskBean.java
package progress;
import java.io.Serializable;
/**
* 首先我們設計一個TaskBean類,它實現java.lang.Runnable接口,
* 其run()方法在一個由JSP頁面(start.jsp)啟動的獨立線程中運行。
* 終止run()方法執行由另一個JSP頁面stop.jsp負責。
* http://blog.knowsky.com/
* TaskBean類還實現了java.io.Serializable接口,
* 這樣JSP頁面就可以將它作為JavaBean調用
* */
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);
}
}
}
總結
以上是生活随笔為你收集整理的java 进度条jsp,jsp进度条_jsp技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql for 语句执行顺序_MyS
- 下一篇: 得到进程id_搞懂进程组、会话、控制终端