專利名稱:服務(wù)器的運(yùn)行方法以及對(duì)應(yīng)的裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于與客戶機(jī)通信的服務(wù)器的運(yùn)行方法,其中,該服務(wù)器在接收到由客戶機(jī)發(fā)送的對(duì)頁(yè)面的請(qǐng)求時(shí),向該客戶機(jī)發(fā)送所請(qǐng)求的頁(yè)面。
本發(fā)明還涉及一種數(shù)據(jù)載體,具有存儲(chǔ)在該數(shù)據(jù)載體上的用于執(zhí)行這種運(yùn)行方法的計(jì)算機(jī)程序。
本發(fā)明還涉及一種具有海量存儲(chǔ)器的服務(wù)器,在該海量存儲(chǔ)器中存儲(chǔ)了計(jì)算機(jī)程序,從而在調(diào)用該計(jì)算機(jī)程序時(shí)可以由服務(wù)器計(jì)算機(jī)執(zhí)行這樣的運(yùn)行方法。
背景技術(shù):
這樣的方法、計(jì)算機(jī)程序和服務(wù)器是普遍公知的。它們尤其是用于Web應(yīng)用中,如互聯(lián)網(wǎng)應(yīng)用和企業(yè)內(nèi)部網(wǎng)應(yīng)用。
Web應(yīng)用是相對(duì)匿名的。服務(wù)器和客戶機(jī)通常對(duì)對(duì)方知道得很少。尤其是服務(wù)器通常無(wú)法借助對(duì)頁(yè)面的請(qǐng)求來(lái)輕易地確定是哪個(gè)客戶機(jī)向服務(wù)器傳送了該請(qǐng)求,而且無(wú)法確定是在客戶機(jī)的哪個(gè)狀態(tài)中產(chǎn)生了該請(qǐng)求。因此,每個(gè)發(fā)送到服務(wù)器的請(qǐng)求通常都必須包含關(guān)于發(fā)出請(qǐng)求的客戶機(jī)和關(guān)于被請(qǐng)求的頁(yè)面的完整信息。
但是,為了能夠在服務(wù)器端在服務(wù)器和客戶機(jī)之間的會(huì)話內(nèi)進(jìn)行一定的預(yù)先設(shè)置(例如選擇一種后面一直采用的語(yǔ)言),尤其是已知客戶機(jī)在會(huì)話開始時(shí)就登錄服務(wù)器,該服務(wù)器除了所請(qǐng)求的頁(yè)面之外還向客戶機(jī)發(fā)送附屬文件(所謂的Cookie)。該附屬文件由客戶機(jī)附加在發(fā)送到服務(wù)器的每個(gè)請(qǐng)求上。也就是說(shuō)客戶機(jī)向服務(wù)器返回該附屬文件。在此,該附屬文件是專門針對(duì)該服務(wù)器的。也就是說(shuō),該附屬文件由客戶機(jī)和發(fā)送到該服務(wù)器的請(qǐng)求一起發(fā)送給該服務(wù)器。附屬文件的發(fā)送一直進(jìn)行下去,直到由客戶機(jī)刪掉該附屬文件或者由服務(wù)器向客戶機(jī)發(fā)送新的附屬文件,從而覆蓋了目前的附屬文件。
應(yīng)當(dāng)進(jìn)行的預(yù)先設(shè)置可以包含在該附屬文件本身中。可選地,該附屬文件還可以包含指向服務(wù)器中存儲(chǔ)區(qū)域的鏈接。在這種情況下,像這樣的預(yù)先設(shè)置存儲(chǔ)在服務(wù)器中,而在開始所述的情況下是存儲(chǔ)在客戶機(jī)中的。
會(huì)話的狀態(tài)通常與存在對(duì)應(yīng)的客戶機(jī)端的通信程序的含義下的會(huì)話相關(guān)聯(lián),該通信程序例如是諸如Microsoft的Internetexplorer的互聯(lián)網(wǎng)瀏覽器。只要客戶機(jī)端一直維持著通信過(guò)程并且與服務(wù)器的通信通過(guò)唯一的窗口進(jìn)行,該現(xiàn)有技術(shù)的作用方式是沒有問題的。
不過(guò),一般地公知可以在同一個(gè)互聯(lián)網(wǎng)瀏覽器中并行地使用多個(gè)窗口。多個(gè)窗口的產(chǎn)生例如可以在Microsoft的Internetexplorer中通過(guò)操作鍵組合“控制N”或通過(guò)選擇“在新窗口中打開”選項(xiàng)來(lái)進(jìn)行。在這種情況下現(xiàn)有技術(shù)也沒有什么問題,即在客戶機(jī)上雖然使用多個(gè)窗口,但在所有窗口中始終只使用相同的預(yù)先設(shè)置。
但是,現(xiàn)有技術(shù)不能允許如下情況在客戶機(jī)上以多個(gè)窗口工作并且這些窗口中進(jìn)行相互不同的預(yù)先設(shè)置。因?yàn)檎缫呀?jīng)提到的,服務(wù)器無(wú)法區(qū)分是由哪個(gè)窗口向其發(fā)送的請(qǐng)求。在此即使是采用附屬文件也沒有什么幫助。因?yàn)樵诳蛻魴C(jī)上的新窗口同樣只是自身的一個(gè)窗口,而不是自身的過(guò)程。因此這些窗口使用的是相同的附屬文件。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是,提供一種服務(wù)器的運(yùn)行方法、一種與此對(duì)應(yīng)的計(jì)算機(jī)程序和一種相應(yīng)的服務(wù)器,利用它們可以單獨(dú)對(duì)每個(gè)客戶機(jī)上的窗口進(jìn)行這樣的預(yù)先設(shè)置。
該技術(shù)問題是通過(guò)一種與客戶機(jī)通信的服務(wù)器的運(yùn)行方法來(lái)解決的,-服務(wù)器在接收到由客戶機(jī)發(fā)送的對(duì)于頁(yè)面的請(qǐng)求時(shí)向該客戶機(jī)發(fā)送所請(qǐng)求的頁(yè)面,-所述服務(wù)器向該頁(yè)面添加標(biāo)識(shí)數(shù)據(jù),使得當(dāng)且僅當(dāng)另一個(gè)對(duì)于頁(yè)面的請(qǐng)求是在客戶機(jī)上以發(fā)送該頁(yè)面為出發(fā)點(diǎn)時(shí),該標(biāo)識(shí)數(shù)據(jù)才由客戶機(jī)在該另一個(gè)對(duì)于頁(yè)面的請(qǐng)求中返回服務(wù)器,-標(biāo)識(shí)數(shù)據(jù)包括至少一個(gè)專門對(duì)于該頁(yè)面發(fā)送的發(fā)送標(biāo)識(shí),-服務(wù)器存儲(chǔ)由其發(fā)送的標(biāo)識(shí)數(shù)據(jù),-當(dāng)返回的發(fā)送標(biāo)識(shí)與存儲(chǔ)的發(fā)送標(biāo)識(shí)一致時(shí),所述服務(wù)器在獲得所述另一個(gè)請(qǐng)求時(shí)存儲(chǔ)由其新發(fā)送的發(fā)送標(biāo)識(shí)來(lái)代替返回的發(fā)送標(biāo)識(shí),
-當(dāng)返回的發(fā)送標(biāo)識(shí)與存儲(chǔ)的發(fā)送標(biāo)識(shí)都不一致時(shí),所述服務(wù)器在獲得所述另一個(gè)請(qǐng)求時(shí)除了返回的發(fā)送標(biāo)識(shí)之外還存儲(chǔ)由其新發(fā)送的發(fā)送標(biāo)識(shí)。
通過(guò)該措施服務(wù)器雖然還不能識(shí)別何時(shí)在客戶機(jī)上打開第二窗口(此后)。但服務(wù)器可以識(shí)別出客戶機(jī)何時(shí)向其發(fā)送了“過(guò)時(shí)”的標(biāo)識(shí)數(shù)據(jù)。借助這種情況,也就是該標(biāo)識(shí)數(shù)據(jù)已經(jīng)老化或經(jīng)過(guò)了修改,服務(wù)器可以因此識(shí)別出必定已經(jīng)打開了第二窗口。從該識(shí)別這一刻起,服務(wù)器就可以獨(dú)立于第一窗口地來(lái)管理第二窗口。
在最簡(jiǎn)單的情況下,發(fā)送標(biāo)識(shí)可以是一個(gè)連續(xù)的號(hào)碼等等。優(yōu)選地,發(fā)送標(biāo)識(shí)是全球唯一的標(biāo)識(shí)符。例如發(fā)送標(biāo)識(shí)可以是所謂的GUID。GUID(globaluniversal identifier,全球統(tǒng)一標(biāo)識(shí)符)基于服務(wù)器的時(shí)間(通常精確為毫秒)以及服務(wù)器的標(biāo)識(shí)數(shù)據(jù)形成,例如服務(wù)器網(wǎng)卡或服務(wù)器處理器的一次性給定的標(biāo)識(shí)號(hào)。
通過(guò)本發(fā)明的措施例如可以為標(biāo)識(shí)數(shù)據(jù)分配選擇數(shù)據(jù),在返回的發(fā)送標(biāo)識(shí)與存儲(chǔ)的發(fā)送標(biāo)識(shí)一致的情況下,由服務(wù)器基于所述另一個(gè)請(qǐng)求新發(fā)送到客戶機(jī)的頁(yè)面取決于對(duì)應(yīng)于一致的發(fā)送標(biāo)識(shí)的選擇數(shù)據(jù)。
在返回的發(fā)送標(biāo)識(shí)與存儲(chǔ)的發(fā)送標(biāo)識(shí)都不一致的情況下,可以采取不同的措施。這樣例如可以向客戶機(jī)發(fā)送預(yù)定的起始頁(yè)面,不過(guò)優(yōu)選地,由服務(wù)器基于另一個(gè)請(qǐng)求而新發(fā)送到客戶機(jī)的頁(yè)面取決于對(duì)應(yīng)于存儲(chǔ)的發(fā)送標(biāo)識(shí)的選擇數(shù)據(jù)。服務(wù)器然后自然將該選擇數(shù)據(jù)分配給額外存儲(chǔ)的發(fā)送標(biāo)識(shí)。
優(yōu)選地,標(biāo)識(shí)數(shù)據(jù)還包括窗口標(biāo)識(shí)。在返回的發(fā)送標(biāo)識(shí)與一個(gè)存儲(chǔ)的發(fā)送標(biāo)識(shí)一致的情況下保留窗口標(biāo)識(shí)。反之,如果返回的發(fā)送標(biāo)識(shí)與存儲(chǔ)的發(fā)送標(biāo)識(shí)都不一致,則服務(wù)器向額外存儲(chǔ)的發(fā)送標(biāo)識(shí)分配一個(gè)新的窗口標(biāo)識(shí)。
由于該措施可以有效地管理客戶機(jī)上的多于兩個(gè)的窗口。因?yàn)榛谠摯胧┓?wù)器可以識(shí)別出客戶機(jī)端哪些窗口是雙重的。
由于該措施,還可以在返回的發(fā)送標(biāo)識(shí)與存儲(chǔ)的發(fā)送標(biāo)識(shí)都不一致的情況下,使服務(wù)器基于其它請(qǐng)求而新發(fā)送到客戶機(jī)的頁(yè)面取決于對(duì)應(yīng)于存儲(chǔ)的發(fā)送標(biāo)識(shí)中那些窗口標(biāo)識(shí)與返回的窗口標(biāo)識(shí)一致的發(fā)送標(biāo)識(shí)的選擇數(shù)據(jù)。
在最簡(jiǎn)單的情況下,新的窗口標(biāo)識(shí)可以類似于發(fā)送標(biāo)識(shí)是連續(xù)的號(hào)碼。不過(guò),其優(yōu)選地也構(gòu)成為GUID。在此,窗口標(biāo)識(shí)還可以選擇地構(gòu)成為獨(dú)立產(chǎn)生的GUID,或者與就在此前產(chǎn)生的發(fā)送標(biāo)識(shí)一致。
服務(wù)器管理優(yōu)選為表格形式的標(biāo)識(shí)數(shù)據(jù),該表格每一行都包含窗口標(biāo)識(shí)、發(fā)送標(biāo)識(shí)和選擇數(shù)據(jù)的項(xiàng)目。當(dāng)然還可以在表格中存儲(chǔ)指向選擇數(shù)據(jù)的說(shuō)明(指針)來(lái)代替選擇數(shù)據(jù)本身。
原理上,檢驗(yàn)順序(首先是發(fā)送標(biāo)識(shí)還是首先是窗口標(biāo)識(shí))是專業(yè)人員的偏好。不過(guò),優(yōu)選地首先檢驗(yàn)窗口標(biāo)識(shí),然后檢驗(yàn)針對(duì)該窗口標(biāo)識(shí)存儲(chǔ)的發(fā)送標(biāo)識(shí)。因?yàn)橛煽蛻魴C(jī)返回的窗口標(biāo)識(shí)一直是存儲(chǔ)起來(lái)的。相反,由客戶機(jī)返回的發(fā)送標(biāo)識(shí)可能已被覆蓋。
對(duì)于Web運(yùn)用來(lái)說(shuō)基本上已知兩種請(qǐng)求發(fā)送類型,也就是所謂的事后請(qǐng)求(Post-Request)和所謂的獲得請(qǐng)求(Get-Request)。
事后請(qǐng)求基于以下原理客戶機(jī)填寫頁(yè)面的輸入字段,然后向服務(wù)器返回填寫了的輸入字段。在事后請(qǐng)求中,始終由客戶機(jī)向服務(wù)區(qū)返回所有的輸入字段。發(fā)送的數(shù)據(jù)包含對(duì)新頁(yè)面的請(qǐng)求等等。因此對(duì)于在本發(fā)明含義下在服務(wù)器上對(duì)這種事后請(qǐng)求的符合規(guī)定的處理來(lái)說(shuō),服務(wù)器可以對(duì)發(fā)送的頁(yè)面添加標(biāo)識(shí)數(shù)據(jù)作為隱藏的、在客戶機(jī)上沒有一起顯示的輸入字段。即,根據(jù)本發(fā)明給頁(yè)面添加隱藏的輸入字段,該輸入字段在通常于客戶機(jī)窗口中顯示頁(yè)面時(shí)是不一起顯示出來(lái)的。在這些輸入字段中,已經(jīng)由服務(wù)器事先存儲(chǔ)了標(biāo)識(shí)數(shù)據(jù)。因此當(dāng)客戶機(jī)發(fā)送事后請(qǐng)求時(shí)這些標(biāo)識(shí)數(shù)據(jù)由客戶機(jī)返回給服務(wù)器。
反之,在獲得請(qǐng)求中直接由客戶機(jī)向服務(wù)器返回一個(gè)鏈接地址,通常是所謂的URL。在此,該鏈接地址是以前發(fā)送的頁(yè)面的組成部分,并且就這樣顯示在其中客戶機(jī)顯示頁(yè)面的窗口中。如果客戶機(jī)的用戶選擇該鏈接地址,則該鏈接地址本身直接就表示對(duì)另一個(gè)頁(yè)面的請(qǐng)求。
如果該頁(yè)面包含至少一個(gè)這種針對(duì)另一個(gè)頁(yè)面的地址,則在本發(fā)明含義下在服務(wù)器上對(duì)這種獲得請(qǐng)求的符合規(guī)定的處理可以這樣來(lái)實(shí)現(xiàn)服務(wù)器向發(fā)送的頁(yè)面添加標(biāo)識(shí)數(shù)據(jù)作為對(duì)應(yīng)于該地址的參數(shù),即所謂的查詢參數(shù)。
服務(wù)器對(duì)獲得一個(gè)請(qǐng)求的響應(yīng)的特殊情況是所謂的服務(wù)器端的響應(yīng)再查詢(Response-Redirect)。如果服務(wù)器基于發(fā)送給它的請(qǐng)求不把所請(qǐng)求的頁(yè)面發(fā)送給客戶機(jī),而是在獲得另一個(gè)請(qǐng)求時(shí)首先向客戶機(jī)發(fā)送又由客戶機(jī)返回給該服務(wù)器的第三個(gè)請(qǐng)求的話,服務(wù)器端的響應(yīng)再查詢就出現(xiàn)了。此時(shí)服務(wù)器才基于發(fā)送給它的第三個(gè)請(qǐng)求傳送所請(qǐng)求的頁(yè)面。在這種情況下存在兩種可能來(lái)保證在服務(wù)器上可以對(duì)該請(qǐng)求進(jìn)行本發(fā)明含義下的符合規(guī)定的處理。
一方面,服務(wù)器可以向第三個(gè)請(qǐng)求添加標(biāo)識(shí)數(shù)據(jù)作為所屬參數(shù)。在這種情況下給請(qǐng)求本身添加該標(biāo)識(shí)數(shù)據(jù)??蛇x地,服務(wù)器還可以向第三個(gè)請(qǐng)求添加標(biāo)識(shí)數(shù)據(jù)作為不會(huì)和第三個(gè)請(qǐng)求一起由客戶機(jī)返回服務(wù)器的附屬文件。在這種情況下,服務(wù)器向第三個(gè)請(qǐng)求添加標(biāo)識(shí)數(shù)據(jù)作為所謂的發(fā)送cookie。標(biāo)識(shí)數(shù)據(jù)在此和在事后請(qǐng)求中一樣是作為隱藏的數(shù)據(jù)加到頁(yè)面上的。程序提取出標(biāo)識(shí)數(shù)據(jù)并添加到附屬文件中。此外,服務(wù)器還將刪除該附屬文件的指令和其基于第三個(gè)請(qǐng)求向客戶機(jī)發(fā)送的頁(yè)面一起發(fā)送給客戶機(jī)。
存在將程序加到服務(wù)器向客戶機(jī)發(fā)送的頁(yè)面上或在該頁(yè)面中嵌入程序的語(yǔ)言。這種語(yǔ)言的例子是JavaScript。在這種情況下,還存在一種可能來(lái)保證標(biāo)識(shí)數(shù)據(jù)與該請(qǐng)求一起由客戶機(jī)發(fā)送到服務(wù)器。因?yàn)樵谶@種情況下服務(wù)器可以通過(guò)向頁(yè)面添加一個(gè)程序來(lái)向該頁(yè)面添加標(biāo)識(shí)數(shù)據(jù),客戶機(jī)當(dāng)且僅當(dāng)該請(qǐng)求是基于對(duì)該頁(yè)面的發(fā)送而發(fā)出時(shí)才向?qū)τ谠擁?yè)面的請(qǐng)求添加包含標(biāo)識(shí)數(shù)據(jù)的附屬文件。
也就是說(shuō),在這種情況下同樣產(chǎn)生所謂的發(fā)送cookie。不過(guò),與響應(yīng)再查詢相反,發(fā)送cookie的產(chǎn)生不是在服務(wù)器上進(jìn)行的,而是在客戶機(jī)上進(jìn)行。
服務(wù)器不能直接識(shí)別出客戶機(jī)上對(duì)已經(jīng)發(fā)送到客戶機(jī)的頁(yè)面進(jìn)行的復(fù)制。因此,如果客戶機(jī)的用戶復(fù)制了頁(yè)面,然后只對(duì)被復(fù)制頁(yè)面的兩個(gè)版本的其中一個(gè)處理了較長(zhǎng)時(shí)間,而被復(fù)制頁(yè)面的另一個(gè)版本沒有變化,則該另一個(gè)版本當(dāng)前保持不變。如果客戶機(jī)的用戶在明顯靠后的一個(gè)時(shí)刻向服務(wù)器發(fā)送一個(gè)對(duì)于被復(fù)制頁(yè)面的該另一個(gè)未變化版本的請(qǐng)求,則服務(wù)器在這種情況下接管在這一時(shí)刻對(duì)應(yīng)于被復(fù)制頁(yè)面的已改變版本的選擇數(shù)據(jù)。該選擇數(shù)據(jù)還可以在該時(shí)刻已經(jīng)被明顯改變。因此,對(duì)用戶來(lái)說(shuō),恢復(fù)用戶實(shí)際期望的被復(fù)制頁(yè)面的另一版本的狀態(tài)是比較費(fèi)事的。因此有利的是,盡可能早地識(shí)別出客戶機(jī)上已經(jīng)對(duì)發(fā)送給它的頁(yè)面進(jìn)行了復(fù)制。
對(duì)這種復(fù)制的識(shí)別可以這樣實(shí)現(xiàn)-服務(wù)器還給頁(yè)面添加一個(gè)具有起始值的變量,和由客戶機(jī)在一個(gè)窗口中顯示該頁(yè)面時(shí)要執(zhí)行的程序,-客戶機(jī)基于該程序改變變量的值,如果該變量具有起始值的話,以及-客戶機(jī)基于該程序重復(fù)先前對(duì)發(fā)送該頁(yè)面的請(qǐng)求,從而客戶機(jī)在該變量不具有起始值時(shí)第二次向服務(wù)器發(fā)送先前請(qǐng)求時(shí)發(fā)送的標(biāo)識(shí)數(shù)據(jù)。
因?yàn)榭蛻魴C(jī)在復(fù)制頁(yè)面的同時(shí)立即重復(fù)先前的請(qǐng)求,從而服務(wù)器能夠立即識(shí)別出這樣的復(fù)制。服務(wù)器在該過(guò)程中雖然也在客戶機(jī)的用戶只是更新該頁(yè)面或存儲(chǔ)在客戶機(jī)上而沒有復(fù)制該頁(yè)面時(shí)識(shí)別出復(fù)制,但在窗口中不再訪問所顯示的頁(yè)面。不過(guò),這一點(diǎn)并不重要,因?yàn)樵谶@種情況下在服務(wù)器上只管理一個(gè)在客戶機(jī)上實(shí)際上根本不存在的窗口。相反,不可能發(fā)生在客戶機(jī)上復(fù)制一個(gè)窗口而服務(wù)器識(shí)別不出來(lái)的情況。在此,請(qǐng)求可以根據(jù)不同的應(yīng)用情況而以事后請(qǐng)求或獲得請(qǐng)求的形式發(fā)送到服務(wù)器。這也適用于基于事后請(qǐng)求而一次性下載頁(yè)面的情況。
根據(jù)本發(fā)明的運(yùn)行方法可以作為引入服務(wù)器的計(jì)算機(jī)程序?qū)崿F(xiàn)。在此,該計(jì)算機(jī)程序通過(guò)數(shù)據(jù)載體引入服務(wù)器中。這種數(shù)據(jù)載體的例子是CD-ROM或流磁帶(Streamerkassatte)。在數(shù)據(jù)載體上以機(jī)器可讀的形式存儲(chǔ)了計(jì)算機(jī)程序。在此,計(jì)算機(jī)程序還可以選擇以壓縮形式或非壓縮形式存儲(chǔ)在該數(shù)據(jù)載體上。
具有存儲(chǔ)在其上的計(jì)算機(jī)程序的數(shù)據(jù)載體被引入讀取裝置中,借助該讀取裝置服務(wù)器可以讀取出存儲(chǔ)在數(shù)據(jù)載體中的計(jì)算機(jī)程序。因此,服務(wù)器從數(shù)據(jù)載體中讀出計(jì)算機(jī)程序并存儲(chǔ)在海量存儲(chǔ)器中,例如存儲(chǔ)在硬盤上。因此,在從硬盤(或者從數(shù)據(jù)載體)調(diào)用該計(jì)算機(jī)程序時(shí),服務(wù)器可以執(zhí)行本發(fā)明的方法。
下面通過(guò)結(jié)合附圖對(duì)實(shí)施例的描述給出其它優(yōu)點(diǎn)和細(xì)節(jié)。在此,圖1示出計(jì)算機(jī)連接,圖2示出流程圖,圖3示出表格,圖4至圖7示出其它流程圖。
具體實(shí)施例方式
根據(jù)圖1,服務(wù)器1通過(guò)計(jì)算機(jī)-計(jì)算機(jī)連接2與客戶機(jī)3數(shù)據(jù)技術(shù)地連接。在此,計(jì)算機(jī)-計(jì)算機(jī)連接2可以構(gòu)造為不同的類型。不過(guò),通常構(gòu)造為互聯(lián)網(wǎng)連接或企業(yè)內(nèi)部網(wǎng)連接。通過(guò)計(jì)算機(jī)-計(jì)算機(jī)連接2,服務(wù)器1和客戶機(jī)3可以按照網(wǎng)絡(luò)(Web)協(xié)議相互通信。
服務(wù)器1通常具有多個(gè)通過(guò)總線9相互連接的部件4至8。部件4至8尤其是包括處理器4、海量存儲(chǔ)器5(典型的是一個(gè)或多個(gè)硬盤)、讀取裝置6、定時(shí)器7和網(wǎng)卡8。
數(shù)據(jù)載體10可以引入到讀取裝置6中,在該數(shù)據(jù)載體上以機(jī)器只讀的形式存儲(chǔ)了計(jì)算機(jī)程序11。該計(jì)算機(jī)程序11從數(shù)據(jù)載體10中被讀出,并如圖1虛線所示存儲(chǔ)在海量存儲(chǔ)器5中。因此,服務(wù)器1可以通過(guò)調(diào)用計(jì)算機(jī)程序11來(lái)執(zhí)行該計(jì)算機(jī)程序11。在此,在調(diào)用該計(jì)算機(jī)程序11時(shí),服務(wù)器1執(zhí)行后面要結(jié)合圖2詳細(xì)描述的運(yùn)行方法。
根據(jù)圖2,服務(wù)器1在步驟S1中從客戶機(jī)3接收登錄和對(duì)頁(yè)面的第一請(qǐng)求。服務(wù)器1據(jù)此在步驟S2中確定發(fā)送標(biāo)識(shí)bId。該發(fā)送標(biāo)識(shí)bId在此優(yōu)選是全球唯一的。例如可以由定時(shí)器7給出的時(shí)間與網(wǎng)卡8和/或處理器4的代碼的組合來(lái)構(gòu)成。
然后,在步驟S3中像剛確定的發(fā)送標(biāo)識(shí)bId那樣設(shè)置窗口標(biāo)識(shí)FeId。接著如圖3所示將兩個(gè)標(biāo)識(shí)bId、FeId錄入到表格12的第一行中。按照?qǐng)D3,在此除了兩個(gè)標(biāo)識(shí)bId、FeId之外還可以向表格12的每一行分配選擇數(shù)據(jù)SD。下面還要講述選擇數(shù)據(jù)SD的含義。
在步驟S5中,服務(wù)器1向所請(qǐng)求的頁(yè)面添加標(biāo)識(shí)數(shù)據(jù)FeId、bId。在此,該添加是這樣進(jìn)行的當(dāng)且僅當(dāng)客戶機(jī)3對(duì)頁(yè)面的另一個(gè)請(qǐng)求是以發(fā)送該頁(yè)面為出發(fā)點(diǎn)時(shí),客戶機(jī)3才在該另一個(gè)頁(yè)面請(qǐng)求時(shí)向服務(wù)器1返回該標(biāo)識(shí)數(shù)據(jù)FeId、bId。
按照步驟S6,服務(wù)器1還向所請(qǐng)求的頁(yè)面添加一個(gè)變量和一個(gè)程序。該變量具有起始值。該程序是這樣構(gòu)造的在客戶機(jī)上對(duì)發(fā)送的頁(yè)面進(jìn)行復(fù)制時(shí)該程序觸發(fā)對(duì)迄今頁(yè)面的新請(qǐng)求。對(duì)此后面還要詳細(xì)講述。步驟S6在此僅僅是可選的,因此在圖2中只是用虛線示出。在步驟S7中,服務(wù)器1向客戶機(jī)3發(fā)送所要求的頁(yè)面以及添加到該頁(yè)面的信息。所添加的信息尤其是添加的兩個(gè)標(biāo)識(shí)bId、FeId、它們的補(bǔ)充以及所述變量和程序。
在步驟S8中服務(wù)器1從客戶機(jī)3接收了另一個(gè)輸入。服務(wù)器1據(jù)此首先在步驟S9中檢查客戶機(jī)3是否已經(jīng)登錄。如果是,則服務(wù)器在步驟S10中刪除表格12,并結(jié)束該方法的執(zhí)行。
如果步驟S8的輸入不是登錄,則該輸入是一個(gè)新的請(qǐng)求。在這種情況下服務(wù)器1從發(fā)送的請(qǐng)求中提取出返回的標(biāo)識(shí)bId、FeId以及選擇數(shù)據(jù)SD。
然后,在步驟S12中服務(wù)器1檢查返回的發(fā)送標(biāo)識(shí)bId是否與在表格12中對(duì)應(yīng)于返回的窗口標(biāo)識(shí)FeId的發(fā)送標(biāo)識(shí)bId一致。為了得到更好的概貌,在圖2中將步驟S12分為兩個(gè)子步驟S12a、S12b。在子步驟S12a中根據(jù)前面的檢查設(shè)置了一個(gè)邏輯變量,在子步驟S12b中查詢?cè)撨壿嬜兞俊?br>
如果在步驟S12中確定是一致的,由客戶機(jī)發(fā)送的請(qǐng)求從客戶機(jī)3的一個(gè)已經(jīng)在服務(wù)器上被采集和管理的窗口發(fā)出。在這種情況下,在步驟S13中類似于步驟S2確定一個(gè)新的發(fā)送標(biāo)識(shí)bId,并存儲(chǔ)在表格12的、還存儲(chǔ)了返回的窗口標(biāo)識(shí)FeId的行中。也就是說(shuō),服務(wù)器1在表格12中存儲(chǔ)新確定的發(fā)送標(biāo)識(shí)bId來(lái)替代返回的發(fā)送標(biāo)識(shí)bId。
反之,如果在步驟S12中確定不一致,則執(zhí)行步驟S14。在步驟S14中同樣類似于步驟S2的過(guò)程重新確定發(fā)送標(biāo)識(shí)bId。然后,類似于步驟S3像剛剛新確定的發(fā)送標(biāo)識(shí)bId那樣設(shè)置窗口標(biāo)識(shí)FeId。兩個(gè)標(biāo)識(shí)FeId、bId都由服務(wù)器1錄入到表格12的新一行中。此外,在步驟S14中還將與返回的窗口標(biāo)識(shí)FeId對(duì)應(yīng)的選擇數(shù)據(jù)SD復(fù)制表格12的該新填充的行中。
如果服務(wù)器1已經(jīng)獲得了新的選擇數(shù)據(jù)SD,則服務(wù)器還在步驟S15中更改與當(dāng)前的窗口標(biāo)識(shí)FeId對(duì)應(yīng)的選擇數(shù)據(jù)SD。根據(jù)基于步驟S12中的檢查而執(zhí)行步驟S13還是步驟S14,在此該當(dāng)前的窗口標(biāo)識(shí)FeId是返回的窗口標(biāo)識(shí)FeId或者是新確定的窗口標(biāo)識(shí)FeId。
在步驟S16中服務(wù)器1首先檢查其是可以直接發(fā)送所請(qǐng)求的頁(yè)面,還是必須執(zhí)行所謂的響應(yīng)再查詢。如果必須執(zhí)行響應(yīng)再查詢,則服務(wù)器執(zhí)行步驟S17,其中服務(wù)器向客戶機(jī)3發(fā)送一個(gè)新的地址,一般是包括當(dāng)前窗口標(biāo)識(shí)FeId和當(dāng)前發(fā)送標(biāo)識(shí)bId的URL地址。然后服務(wù)器返回步驟S8。
否則,服務(wù)器1借助在表格12中對(duì)應(yīng)于當(dāng)前窗口標(biāo)識(shí)FeId和當(dāng)前發(fā)送標(biāo)識(shí)bId的選擇數(shù)據(jù)確定,應(yīng)當(dāng)向客戶機(jī)3發(fā)送哪個(gè)頁(yè)面??蛇x的或者補(bǔ)充的,還可以修改該頁(yè)面的內(nèi)容。然后服務(wù)器1返回步驟S5。
圖4示出向待發(fā)送的頁(yè)面添加標(biāo)識(shí)數(shù)據(jù)bId、FeId的第一可能性。按照?qǐng)D4,服務(wù)器1在步驟S19中首先將標(biāo)識(shí)bId、FeId作為隱藏的輸入字段添加給頁(yè)面。由此帶來(lái)了這樣的效果對(duì)于客戶機(jī)3的從該頁(yè)面出發(fā)的每個(gè)事后請(qǐng)求來(lái)說(shuō)都從客戶機(jī)向服務(wù)器1發(fā)送標(biāo)識(shí)bId、FeId。
然后在步驟S20中,服務(wù)器1檢查要發(fā)送的頁(yè)面是否包含被添加了還不是作為查詢參數(shù)的標(biāo)識(shí)bId、FeId的URL地址。如果是這種情況,則服務(wù)器1執(zhí)行步驟S21,其中服務(wù)器為該地址添加該標(biāo)識(shí)bId和FeId作為查詢參數(shù)。然后服務(wù)器從步驟S21返回步驟S20。在此,步驟S20在圖4中類似于圖2的步驟S12那樣分為兩個(gè)子步驟。
圖5示出另一種向頁(yè)面添加標(biāo)識(shí)數(shù)據(jù)bId、FeId的可能性。按照?qǐng)D5,服務(wù)器1向頁(yè)面添加標(biāo)識(shí)bId、FeId作為隱藏的數(shù)據(jù)。在此,類似于圖4的步驟S19可以是隱藏的輸入字段。不過(guò),這點(diǎn)不是必需的。然后,服務(wù)器1向該頁(yè)面添加在客戶機(jī)3的基于該頁(yè)面的請(qǐng)求時(shí)執(zhí)行的程序。然后,客戶機(jī)3根據(jù)該程序從該頁(yè)面中提取出標(biāo)識(shí)數(shù)據(jù)bId、FeId并將它們嵌入到由客戶機(jī)設(shè)計(jì)的Cookie中??蛻魴C(jī)3將該Cookie連同所述請(qǐng)求一起發(fā)送給服務(wù)器1。
圖6示出了用于執(zhí)行圖2的步驟S17的可能性,在步驟S17中向要被發(fā)送的URL添加標(biāo)識(shí)bId和FeId。按照?qǐng)D6,可以這樣構(gòu)造步驟S17,使得類似于圖4的步驟S21那樣將標(biāo)識(shí)bId和FeId作為查詢參數(shù)添加給URL地址??蛇x的是,服務(wù)器1在步驟S17中向URL地址添加包含標(biāo)識(shí)bId、FeId的附屬文件(Cookie)。在后一種情況下,在步驟S7(參見圖2)中向客戶機(jī)3發(fā)送的添加給所請(qǐng)求的頁(yè)面的信息包含刪除指令,根據(jù)該刪除指令立即在客戶機(jī)3上刪除該附屬文件。
圖6示出的步驟S17始終只被執(zhí)行一個(gè)。因此,兩個(gè)步驟S17在圖6中都以虛線示出。
圖7為完整起見示出了客戶機(jī)3基于由服務(wù)器1在步驟S6(參見圖2)中添加到所請(qǐng)求的頁(yè)面上的程序而執(zhí)行的方法。如果該頁(yè)面由客戶機(jī)顯示在窗口中,則該程序在此始終由客戶機(jī)3執(zhí)行。也就是說(shuō),當(dāng)客戶機(jī)首次獲得該頁(yè)面時(shí)執(zhí)行該程序,如果客戶機(jī)3例如用“控制N”復(fù)制該頁(yè)面的話也執(zhí)行該程序。
按照?qǐng)D7,客戶機(jī)3首先從頁(yè)面中提取出發(fā)送過(guò)來(lái)的變量。然后,在步驟S25中客戶機(jī)檢查該變量是否還具有其起始值。如果是這樣,則客戶機(jī)在步驟S26中將該變量設(shè)置為其最終值。該最終值當(dāng)然必須與起始值不同。除此之外可以任意選擇該最終值。如果在步驟S25中的檢查沒有給出一致性,則客戶機(jī)3執(zhí)行步驟S27,其中客戶機(jī)重復(fù)先前的請(qǐng)求。該請(qǐng)求的重復(fù)在此特別是引起了已經(jīng)返回服務(wù)器1的標(biāo)識(shí)數(shù)據(jù)bId、FeId又第二次被發(fā)送到服務(wù)器1。由此服務(wù)器1可以立即識(shí)別出客戶機(jī)上打開了一個(gè)新的窗口。
因此,利用本發(fā)明的運(yùn)行方法可以簡(jiǎn)單地實(shí)現(xiàn)服務(wù)器1單獨(dú)對(duì)客戶機(jī)3的多個(gè)窗口進(jìn)行管理。
權(quán)利要求
1.一種用于與客戶機(jī)(3)通信的服務(wù)器(1)的運(yùn)行方法,其中,-服務(wù)器(1)在接收到由客戶機(jī)(3)發(fā)送的對(duì)于頁(yè)面的請(qǐng)求時(shí)向該客戶機(jī)(3)發(fā)送所請(qǐng)求的頁(yè)面,-服務(wù)器(1)向該頁(yè)面添加標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId),使得當(dāng)且僅當(dāng)另一個(gè)對(duì)于頁(yè)面的請(qǐng)求是在客戶機(jī)(3)上以發(fā)送該頁(yè)面為出發(fā)點(diǎn)時(shí),該標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId)才由客戶機(jī)(3)在該另一個(gè)對(duì)于頁(yè)面的請(qǐng)求中返回服務(wù)器(1),-標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId)包括至少一個(gè)專門對(duì)于該頁(yè)面發(fā)送的發(fā)送標(biāo)識(shí)(bId),-服務(wù)器(1)存儲(chǔ)由服務(wù)器發(fā)送的標(biāo)識(shí)數(shù)據(jù)(bId),-當(dāng)返回的發(fā)送標(biāo)識(shí)(bId)與存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)一致時(shí),服務(wù)器(1)在獲得所述另一個(gè)請(qǐng)求時(shí)存儲(chǔ)由其新發(fā)送的發(fā)送標(biāo)識(shí)(bId)來(lái)代替返回的發(fā)送標(biāo)識(shí)(bId),以及-當(dāng)返回的發(fā)送標(biāo)識(shí)(bId)與事先存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)都不一致時(shí),服務(wù)器(1)在獲得所述另一個(gè)請(qǐng)求時(shí)除了返回的發(fā)送標(biāo)識(shí)(bId)之外還存儲(chǔ)由其新發(fā)送的發(fā)送標(biāo)識(shí)(bId)。
2.根據(jù)權(quán)利要求1所述的運(yùn)行方法,其特征在于,為所述標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId)分配選擇數(shù)據(jù)(SD),并且在返回的發(fā)送標(biāo)識(shí)(bId)與存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)一致的情況下,由服務(wù)器(1)基于所述另一個(gè)請(qǐng)求新發(fā)送到客戶機(jī)(3)的頁(yè)面取決于分配給一致的發(fā)送標(biāo)識(shí)(bId)的選擇數(shù)據(jù)(SD)。
3.根據(jù)權(quán)利要求2所述的運(yùn)行方法,其特征在于,在返回的發(fā)送標(biāo)識(shí)(bId)與存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)都不一致的情況下,由服務(wù)器(1)基于所述另一個(gè)請(qǐng)求新發(fā)送到客戶機(jī)(3)的頁(yè)面取決于分配給存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)的選擇數(shù)據(jù)(SD),并且服務(wù)器(1)將該選擇數(shù)據(jù)(SD)分配給額外存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)。
4.根據(jù)權(quán)利要求1、2或3所述的運(yùn)行方法,其特征在于,-所述標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId)還包括窗口標(biāo)識(shí)(FeId),-服務(wù)器(1)在返回的發(fā)送標(biāo)識(shí)(bId)與一個(gè)存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)一致的情況下,保留該一致的發(fā)送標(biāo)識(shí)(bId)的窗口標(biāo)識(shí)(FeId),-服務(wù)器(1)在返回的發(fā)送標(biāo)識(shí)(bId)與存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)都不一致的情況下,向額外存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)分配一個(gè)新的窗口標(biāo)識(shí)(FeId)。
5.根據(jù)權(quán)利要求3或4所述的運(yùn)行方法,其特征在于,在返回的發(fā)送標(biāo)識(shí)(bId)與存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)都不一致的情況下,由服務(wù)器(1)基于另一個(gè)請(qǐng)求而新發(fā)送到客戶機(jī)(3)的頁(yè)面取決于對(duì)應(yīng)于存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)中那些窗口標(biāo)識(shí)(FeId)與返回的窗口標(biāo)識(shí)一致(FeId)的發(fā)送標(biāo)識(shí)的選擇數(shù)據(jù)(SD)。
6.根據(jù)上述權(quán)利要求之一所述的運(yùn)行方法,其特征在于,所述服務(wù)器(1)向發(fā)送的頁(yè)面添加標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId)作為隱藏的、在客戶機(jī)上沒有一起顯示的輸入字段。
7.根據(jù)上述權(quán)利要求之一所述的運(yùn)行方法,其特征在于,所述頁(yè)面包含至少一個(gè)針對(duì)另一個(gè)頁(yè)面的地址,并且所述服務(wù)器(1)向發(fā)送的頁(yè)面添加標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId)作為對(duì)應(yīng)于該地址的參數(shù)。
8.根據(jù)上述權(quán)利要求之一所述的運(yùn)行方法,其特征在于,所述服務(wù)器(1)在獲得所述另一個(gè)請(qǐng)求時(shí)首先向客戶機(jī)(3)發(fā)送又將由客戶機(jī)(3)返回給該服務(wù)器(1)的第三個(gè)請(qǐng)求,并且服務(wù)器(1)向該第三個(gè)請(qǐng)求添加標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId)作為所屬參數(shù)。
9.根據(jù)上述權(quán)利要求之一所述的運(yùn)行方法,其特征在于,所述服務(wù)器(1)在獲得所述另一個(gè)請(qǐng)求時(shí)首先向客戶機(jī)(3)發(fā)送又將由客戶機(jī)(3)返回給該服務(wù)器(1)的第三個(gè)請(qǐng)求,服務(wù)器(1)向該第三個(gè)請(qǐng)求添加標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId)作為會(huì)和第三個(gè)請(qǐng)求一起由客戶機(jī)(3)返回服務(wù)器(1)的附屬文件,并且所述服務(wù)器(1)還和基于第三個(gè)請(qǐng)求向客戶機(jī)(3)發(fā)送的頁(yè)面一起向客戶機(jī)(3)發(fā)送刪除該附屬文件的指令。
10.根據(jù)上述權(quán)利要求之一所述的運(yùn)行方法,其特征在于,所述服務(wù)器(1)通過(guò)向頁(yè)面添加一個(gè)程序來(lái)向該頁(yè)面添加標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId),根據(jù)該程序客戶機(jī)當(dāng)且僅當(dāng)該請(qǐng)求是基于對(duì)該頁(yè)面的發(fā)送而發(fā)出時(shí)才向?qū)τ谠擁?yè)面的請(qǐng)求添加包含標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId)的附屬文件。
11.根據(jù)上述權(quán)利要求之一所述的運(yùn)行方法,其特征在于,-所述服務(wù)器(1)還給所述頁(yè)面添加一個(gè)具有起始值的變量,和由客戶機(jī)(3)在一個(gè)窗口中顯示該頁(yè)面時(shí)要執(zhí)行的程序,-所述客戶機(jī)(3)基于該程序改變變量的值,如果該變量具有起始值的話,以及-所述客戶機(jī)(3)基于該程序重復(fù)先前對(duì)發(fā)送該頁(yè)面的請(qǐng)求,從而客戶機(jī)(3)在該變量不具有起始值時(shí)第二次向服務(wù)器(1)發(fā)送先前請(qǐng)求時(shí)發(fā)送的標(biāo)識(shí)數(shù)據(jù)(bId,F(xiàn)eId)。
12.一種數(shù)據(jù)載體,具有存儲(chǔ)在該數(shù)據(jù)載體上的、用于執(zhí)行根據(jù)上述權(quán)利要求之一所述運(yùn)行方法的運(yùn)行方法的計(jì)算機(jī)程序(11)。
13.一種具有海量存儲(chǔ)器(5)的服務(wù)器,在該海量存儲(chǔ)器中存儲(chǔ)了計(jì)算機(jī)程序(11),從而在調(diào)用該計(jì)算機(jī)程序(11)時(shí)可以由服務(wù)器執(zhí)行根據(jù)權(quán)利要求1至11中任一項(xiàng)所述的運(yùn)行方法。
全文摘要
服務(wù)器(1)通過(guò)向客戶機(jī)(3)發(fā)送其請(qǐng)求的頁(yè)面而與客戶機(jī)(3)通信。服務(wù)器(1)向該頁(yè)面添加包括至少一個(gè)專門針對(duì)該頁(yè)面發(fā)送的發(fā)送標(biāo)識(shí)(bId)的標(biāo)識(shí)數(shù)據(jù)(bId、FeId),使得當(dāng)且僅當(dāng)另一個(gè)針對(duì)頁(yè)面的請(qǐng)求是在客戶機(jī)(3)上以發(fā)送該頁(yè)面為出發(fā)點(diǎn)時(shí),該標(biāo)識(shí)數(shù)據(jù)(bId、FeId)才由客戶機(jī)(3)在該另一個(gè)針對(duì)頁(yè)面的請(qǐng)求中返回服務(wù)器(1)。此外,服務(wù)器(1)存儲(chǔ)由服務(wù)器發(fā)送的標(biāo)識(shí)數(shù)據(jù)(bId、FeId)。當(dāng)返回的發(fā)送標(biāo)識(shí)(bId)與存儲(chǔ)的發(fā)送標(biāo)識(shí)(bId)一致時(shí),服務(wù)器(1)在獲得所述另一個(gè)請(qǐng)求時(shí)存儲(chǔ)由其新發(fā)送的發(fā)送標(biāo)識(shí)(bId)來(lái)代替返回的發(fā)送標(biāo)識(shí)(bId)。否則,服務(wù)器(1)除了返回的發(fā)送標(biāo)識(shí)(bId)之外還存儲(chǔ)該新發(fā)送的發(fā)送標(biāo)識(shí)(bId)。
文檔編號(hào)G06F17/30GK1954575SQ200480038061
公開日2007年4月25日 申請(qǐng)日期2004年10月13日 優(yōu)先權(quán)日2003年10月17日
發(fā)明者巴德雷戴恩·多尤里, 托馬斯·吉瑟, 弗蘭克·哈克蘭德, 阿爾諾·珀諾佐里 申請(qǐng)人:西門子公司