成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JSP頁面的線程

開發(fā) 后端
本文介紹同一個(gè)JSP頁面可能會(huì)在多個(gè)線程中同時(shí)運(yùn)行,導(dǎo)致服務(wù)器同時(shí)運(yùn)行一個(gè)JSP頁面的多個(gè)線程。

許多Web應(yīng)用、企業(yè)應(yīng)用涉及到長時(shí)間的操作,例如復(fù)雜的數(shù)據(jù)庫查詢或繁重的XML處理等,雖然這些任務(wù)主要由數(shù)據(jù)庫系統(tǒng)或中間件完成,但任務(wù)執(zhí)行的結(jié)果仍舊要借助JSP才能發(fā)送給用戶。本文介紹了一種通過改進(jìn)前端表現(xiàn)層來改善用戶感覺、減輕服務(wù)器負(fù)載的辦法。

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

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

一、模擬任務(wù)

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

二、啟動(dòng)任務(wù)

start.jsp啟動(dòng)一個(gè)專用的線程來運(yùn)行“繁重的任務(wù)”,然后把HTTP請求傳遞給status.jsp。

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

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

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

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

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

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

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

三、任務(wù)進(jìn)度

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

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

【編輯推薦】

  1. JSP開發(fā)環(huán)境的搭建
  2. 簡單介紹JSP環(huán)境配置
  3. JSP、ASP和PHP安全編程
  4. 整合Apache中JSP和PHP
  5. JSP和Servlet應(yīng)用的安全問題
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-07-06 18:23:56

Struts和JSPJSP頁面

2011-05-11 16:54:49

JSP

2009-07-02 13:36:24

動(dòng)態(tài)頁面JSP技術(shù)

2009-01-18 10:56:27

JSTLEL表達(dá)式JSP標(biāo)準(zhǔn)標(biāo)記庫

2009-07-06 09:34:19

JSP頁面

2009-07-01 18:50:29

Dreamweaver

2009-07-07 16:49:43

JSP數(shù)據(jù)庫配置

2009-08-10 09:19:28

Servlet JSP

2009-07-06 10:00:31

JSP頁面?zhèn)髦?/a>

2009-03-16 15:07:20

JSP分頁window.openJSP表單

2009-07-02 10:13:47

ASP和JSPJSP頁面

2009-02-25 10:55:29

FCKeditor控件JSP

2009-07-07 13:42:57

Servlet JSP

2009-07-03 17:48:34

JSP頁面翻譯

2009-07-07 18:20:54

JSP頁面顯示亂碼

2009-07-02 09:25:41

JSP實(shí)現(xiàn)頁面跳轉(zhuǎn)

2009-07-23 14:21:55

ASP.NET頁面

2009-06-25 14:05:01

JavaBean實(shí)現(xiàn)J

2009-07-01 18:08:18

JSP頁面跳轉(zhuǎn)

2009-09-04 16:10:49

JSP頁面間傳遞參數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产美女在线免费观看 | 欧美日韩手机在线观看 | 久久成人一区 | 欧美成人精品在线 | 国产精品久久久久aaaa樱花 | 在线亚洲免费视频 | 亚洲一区二区三区在线视频 | 亚洲精品国产成人 | 亚洲一区电影 | 久久久久久亚洲精品 | 日韩国产欧美一区 | 五月天激情电影 | 999热精品| 欧美一区二区三区在线观看视频 | 久久久久网站 | a级片在线观看 | 成人国产免费视频 | 欧美韩一区二区 | 久久免费国产视频 | 九九综合| 在线观看精品视频网站 | 老妇激情毛片免费 | 亚洲一区二区三区欧美 | 97精品国产 | 日韩精品在线免费 | 欧美久久久 | 久久久五月天 | www.狠狠操| av大全在线观看 | 欧美成视频 | 亚洲国产成人一区二区 | 99精品久久99久久久久 | 中国三级黄色录像 | 99成人精品 | 欧美一级免费看 | 亚洲国产网址 | 亚洲一区二区精品视频 | 国产精品a久久久久 | 国产极品粉嫩美女呻吟在线看人 | 亚洲国产18 | 久久久久久av|