溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JSP頁面線程的示例分析

發(fā)布時間:2021-11-22 10:54:26 來源:億速云 閱讀:258 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關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)用

二、啟動任務

start.jsp啟動一個專用的線程來運行“繁重的任務”,然后把HTTP請求傳遞給status.jsp。

start.jsp頁面利用標記創(chuàng)建一個TaskBean的實例,將scope屬性定義為session使得對于來自同一瀏覽器的HTTP請求,其他頁面也能提取到同一個Bean對象。start.jsp通過調(diào)用session.removeAttribute("task")確保創(chuàng)建了一個新的Bean對象,而不是提取一個舊對象(例如,同一個用戶會話中更早的JSP頁面所創(chuàng)建的Bean對象)

start.jsp創(chuàng)建并設置好TaskBean對象之后,接著創(chuàng)建一個Thread,并將Bean對象作為一個Runnable實例傳入。調(diào)用start()方法時新創(chuàng)建的線程將執(zhí)行TaskBean對象的run()方法。

現(xiàn)在有兩個線程在并發(fā)執(zhí)行:執(zhí)行JSP頁面的線程(稱之為“JSP線程”),由JSP頁面創(chuàng)建的線程(稱之為“任務線程”)。接下來,start.jsp利用調(diào)用status.jsp,status.jsp顯示出進度條以及任務的執(zhí)行情況。注意status.jsp和start.jsp在同一個JSP線程中運行。

start.jsp在創(chuàng)建線程之前就把TaskBean的running標記設置成了true,這樣,即使當JSP線程已開始執(zhí)行status.jsp而任務線程的run()方法尚未啟動,也能夠確保用戶會得到“任務已開始運行”的狀態(tài)報告。

將running標記設置成true、啟動任務線程這兩行代碼可以移入TaskBean構成一個新的方法,然后由JSP頁面調(diào)用這個新方法。一般而言,JSP頁面應當盡量少用Java代碼,即我們應當盡可能地把Java代碼放入Java類。不過本例中我們不遵從這一規(guī)則,把new Thread(task).start()直接放入start.jsp突出表明JSP線程創(chuàng)建并啟動了任務線程。

在JSP頁面中操作多線程必須謹慎,注意JSP線程和其它線程實際上是并發(fā)執(zhí)行的,就象在桌面應用程序中,我們用一個線程來處理GUI事件,另外再用一個或多個線程來處理后臺任務。

不過在JSP環(huán)境中,考慮到多個用戶同時請求某一個頁面的情況,同一個JSP頁面可能會在多個線程中同時運行;另外,有時同一個用戶可能會向同一個頁面發(fā)出多個請求,雖然這些請求來自同一個用戶,它們也會導致服務器同時運行一個JSP頁面的多個線程。

三、任務進度

status.jsp頁面利用一個HTML進度條向用戶顯示任務的執(zhí)行情況。首先,status.jsp利用標記獲得start.jsp頁面創(chuàng)建的Bean對象

為了及時反映任務執(zhí)行進度,status.jsp會自動刷新。JavaScript代碼setTimeout("location=′status.jsp′", 1000)將每隔1000毫秒刷新頁面,重新請求status.jsp,不需要用戶干預。

關于“JSP頁面線程的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

jsp
AI