首先,你要處理的很長(zhǎng)很長(zhǎng)的業(yè)務(wù)需要寫在一個(gè)單獨(dú)的線程當(dāng)中。
然后,你把這個(gè)線程的句柄,也就是對(duì)象的引用,放在session中,或者什么別的地方,隨便你
然后,處理程序返回到一個(gè)進(jìn)度條頁面,這個(gè)進(jìn)度條頁面是可以自動(dòng)刷新的。每次的刷新提交到一個(gè)程序,比如一個(gè)servlet或者action,這個(gè)程序當(dāng)然可以取出session中的線程阿,然后,返回線程執(zhí)行了多少,有沒有出錯(cuò)什么的,返回到進(jìn)度條頁面,頁面根據(jù)返回結(jié)果顯示,問題解決了^_^
當(dāng)然,我相信你在做這個(gè)的時(shí)候也會(huì)遇到幾個(gè)問題,第一個(gè)就是如果用戶關(guān)閉頁面怎么辦,一種就是不管它,關(guān)閉了線程照樣跑,另外一種比較友好的嘛提示一下,或者干脆不讓用戶關(guān)閉這個(gè)窗口(就是關(guān)閉的時(shí)候重新打開,呵呵,黑哦)
第二個(gè)問題就是“取消”的問題,一般都會(huì)提供取消按鈕的,這個(gè)取消按鈕的程序是可以做的,只要取出線程“打斷”就可以了,但是要注意一些事情,就是在線程當(dāng)中遇到的資源可能不會(huì)被自動(dòng)的關(guān)閉,最好還是手工關(guān)閉為好!
這種事情我干過好多次了!呵呵,其實(shí)B/S和C/S在這個(gè)問題上是一樣的,只不過C/S可能方便一點(diǎn),試想如果C/S當(dāng)中你不用線程的機(jī)制,頁面一樣會(huì)出現(xiàn)“假死”的現(xiàn)象阿,有什么問題再聯(lián)系我吧!
lqsun@mail.sportscn.com
B/S也可以跑進(jìn)度條啊,又不是只有C/S可以有后臺(tái)線程
re: XSL:轉(zhuǎn)換從哪里開始? Boris-Java 2005-03-10 16:21