日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JSP編程進度條設計實例

當JSP調(diào)用一個必須長時間運行的操作,且該操作的結(jié)果不能(在服務器端)緩沖,用戶每次請求該頁面時都必須長時間等待。很多時候,用戶會失去耐心,接著嘗試點擊瀏覽器的刷新按鈕,最終失望地離開。

本文介紹的技術是把繁重的計算任務分離開來,由一個獨立的線程運行,從而解決上述問題。當用戶調(diào)用JSP頁面時,JSP頁面會立即返回,并提示用戶任務已經(jīng)啟動且正在執(zhí)行;JSP頁面自動刷新自己,報告在獨立線程中運行的繁重計算任務的當前進度,直至任務完成。

一、模擬任務

首先我們設計一個TaskBean類,它實現(xiàn)java.lang.Runnable接口,其run()方法在一個由JSP頁面(start.jsp)啟動的獨立線程中運行。終止run()方法執(zhí)行由另一個JSP頁面stop.jsp負責。TaskBean類還實現(xiàn)了java.io.Serializable接口,這樣JSP頁面就可以將它作為JavaBean調(diào)用:

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()方法調(diào)用work()方法100次完成計算。work()方法的代碼如下所示,其中調(diào)用Thread.sleep()是為了確保任務總耗時約10秒。

protected void work() { 
try {
Thread.sleep(sleep);
counter++;
sum += counter;
} catch (InterruptedException e) {
setRunning(false);
}
}

status.jsp頁面通過調(diào)用下面的getPercent()方法獲得任務的完成狀況:

public synchronized int getPercent() { 
return counter;
}

如果任務已經(jīng)啟動,isStarted()方法將返回true:

public synchronized boolean isStarted() { 
return started;
}

 

如果任務已經(jīng)完成,isCompleted()方法將返回true:

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

如果任務正在運行,isRunning()方法將返回true:

public synchronized boolean isRunning() { 
return running;
}

SetRunning()方法由start.jsp或stop.jsp調(diào)用,當running參數(shù)是true時。SetRunning()方法還要將任務標記為“已經(jīng)啟動”。調(diào)用setRunning(false)表示要求run()方法停止執(zhí)行。

【編輯推薦】  

  1. JavaOne 2009第三天:微軟與Sun/Oracle攜手并進
  2. 開發(fā)高可移植性J2ME的軟件
  3. Java虛擬機(JVM)中的內(nèi)存設置詳解
  4. Sun擬推Java軟件商店 克隆蘋果成功經(jīng)驗
  5. 四個有害的Java編碼習慣

網(wǎng)頁標題:JSP編程進度條設計實例
文章位置:http://www.5511xx.com/article/dheggeh.html