[摘 要]隨著Web平臺越來越成熟,我們可以發(fā)現(xiàn)有越來越多的令人興奮的技術(shù)出現(xiàn),這些技術(shù)使數(shù)字圖書館應(yīng)用達(dá)到了一個功能強大且應(yīng)用廣泛的新高度,通過把最新的功能強大的技術(shù)整合到數(shù)字圖書館應(yīng)用系統(tǒng)中去,可以得到高效率的執(zhí)行結(jié)果,隨之賦予了更多的功能。在目前基于瀏覽器應(yīng)用程序的開發(fā)技術(shù)中,AJAX(Asynchronous JavaScript and XML)無疑是最新的技術(shù)。在本文中,介紹了一個通用的,高效的架構(gòu),這個架構(gòu)把AJAX模型整合到了隨書光盤顯示系統(tǒng)中。
[關(guān)鍵詞]Ajax;數(shù)字圖書館;隨書光盤
[中圖分類號]G25076 [文獻(xiàn)標(biāo)識碼]A [文章編號]1008-0821(2010)05-0118-03
The Application of Ajax in Attached CD-ROM System of Digital LibraryLian Xiaoqi
(Library,Affiliated Hospital of Nantong University,Nantong 226001,China)
[Abstract]As the Web platform becomes more and more mature,an increasing number of exciting technologies appears,these technologies enable the application of digital library to reach a powerful and widely used new height,through integrating the newest and powerful technologies into the application systems of digital library,highly efficient implementation results can be obtained,and then more functions were given along with it.AJAX(Asynchronous JavaScript and XML)assuredly was the latest technology during the current browser-based application programs development technologies,this paper introduced a generic and efficient architecture which integrates the AJAX model into a CD-ROM with the book display system.
[Keywords]Ajax;digital library;CD-ROM of digital library
1 數(shù)字圖書館隨書光盤系統(tǒng)
近年來,隨著計算機技術(shù)、網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)以及數(shù)據(jù)處理技術(shù)的迅速發(fā)展,圖書館的隨書光盤存儲量迅速增長,光盤作為一種新的文獻(xiàn)載體已經(jīng)成為圖書館館藏和流通的重要組成部分。隨書光盤是一種電子出版物,是對圖書內(nèi)容的說明與解釋,附有大量的實例和圖表,是和圖書一起出版、發(fā)行的附件,與圖書密不可分。讀者通過計算機對所附的光盤進(jìn)行閱讀,可以加深對書中內(nèi)容的理解,起到輔助學(xué)習(xí)的作用。當(dāng)前隨書光盤數(shù)量正在急劇增加,特別是TP(工業(yè)技術(shù))類的增加更為明顯,并且內(nèi)容更新比較快、時效性很強。因此,對隨書光盤加強管理,讓其內(nèi)容得到有效利用,起到知識增值的作用,已成為各圖書館普遍關(guān)注的問題。如何管理與利用這些隨書光盤成了圖書館新的問題與挑戰(zhàn)。
目前,許多圖書館都開發(fā)了隨書光盤發(fā)布系統(tǒng),在檢索光盤時許多系統(tǒng)都是填寫表單然后等待頁面跳轉(zhuǎn)的同步請求/響應(yīng)模式,即用戶的界面操作觸發(fā)HTTP請求,服務(wù)器在接收到請求之后進(jìn)行業(yè)務(wù)邏輯處理,比如保存數(shù)據(jù),然后向客戶端返回一個HTML頁面。但服務(wù)器處理數(shù)據(jù)的時候,用戶處于等待的狀態(tài),每一步操作都需要等待,使得Web用戶界面在響應(yīng)靈敏性方面大打折扣。而Ajax帶給用戶完全不同的瀏覽感受。傳統(tǒng)的動態(tài)網(wǎng)頁技術(shù)被隱藏到Ajax的后臺。用戶所看到的只是一個靜態(tài)頁面,不需要在提交頁面后等待或者主動刷新網(wǎng)頁。動態(tài)程序反饋的結(jié)果被直接無刷新地顯示在這個頁面上。因此利用Ajax開發(fā)的Web應(yīng)用程序能夠提供響應(yīng)極其靈敏的Web用戶界面,使得應(yīng)用過程很自然,操作很流暢,并消除了頁面刷新所帶來的閃爍。
2 Ajax介紹
Ajax是Asynchronous JavaScript and XML的縮寫。實際上,Ajax并不是什么新技術(shù),它是由幾種蓬勃發(fā)展的技術(shù)以新的方式組合而成的,這幾種技術(shù)分別如下。
21 XMLHttpRequest
XMLHttpRequest是Ajax當(dāng)中最重要的也是最核心的技術(shù),它最早是在IE 5中通過一個名為XMLHTTP的ActiveX對象來實現(xiàn)的。XMLHTTPRequest對象使得頁面中的腳本具有了在不刷新頁面的情況下直接與服務(wù)器端通信的能力。與此對應(yīng),Mozilla、Opera和Safari都以類似的方式實現(xiàn)了XMLHttpRequest對象的形為。
22 XML(eXtensible Markup Language)
XML具有一種開放的、可擴(kuò)展的和可自描述的語言結(jié)構(gòu),目前,它已經(jīng)成為因特網(wǎng)上數(shù)據(jù)和文檔傳輸?shù)臉?biāo)準(zhǔn)。在應(yīng)用Ajax技術(shù)時,XMLHttpRequest對象可以選擇使用XML作為與服務(wù)器端通信的數(shù)據(jù)格式。
23 DOM(Document Object Model)
DOM是面向HTML和XML文檔的API,它為文檔提供了結(jié)構(gòu)化表示,并定義了如何通過腳本來訪問文檔結(jié)構(gòu)。在應(yīng)用Ajax技術(shù)時,可以通過DOM來解析處理XML文檔和更新HTML頁面的內(nèi)容。
24 Javascript
Javascript是一種在瀏覽器端大量使用的編程語言,它可以使用瀏覽器中的很多對象,包括XMLHttpRequest。在Ajax中,Javascript通過調(diào)用XMLHttpRequest對象的屬性和方法與服務(wù)器端進(jìn)行數(shù)據(jù)交互,同時還可以利用DOM的API來解析從服務(wù)器端返回的XML數(shù)據(jù)和更新HTML頁面的內(nèi)容。
AJAX是一種獨立于Web服務(wù)器軟件的瀏覽器技術(shù)。它為瀏覽器提供了與服務(wù)器端異步通信的能力,從而使用戶從請求/響應(yīng)的循環(huán)中解脫出來,這樣,使得Web瀏覽器看起來就像是即時響應(yīng)的桌面應(yīng)用程序一樣。使因特網(wǎng)應(yīng)用程序更小、更快,更友好。
AJAX工作的大致流程是這樣的:首先由用戶user在客戶端browser頁面端觸發(fā)一個事件,比如說onblur事件,這個事件是能被Javascript捕獲到的。然后Javascript相應(yīng)的創(chuàng)建一個XMLHttpRequest請求,并通過XMLHttpRequest異步的把請求發(fā)送到服務(wù)器端,同時等待服務(wù)器端的響應(yīng)。服務(wù)器端程序在接受請求后,著手處理并把結(jié)果返回,返回的結(jié)果被XMLHttpRequest捕獲到并返回給Javascript,再由Javascript調(diào)用相應(yīng)的DOM進(jìn)行顯示層的控制。圖1詳細(xì)的描述了AJAX工作的原理。2010年5月第30卷第5期Ajax在數(shù)字圖書館隨書光盤系統(tǒng)中的應(yīng)用May,2010Vol30 No5圖1 AJAX的交互工作原理圖3 Ajax在數(shù)字圖書館隨書光盤系統(tǒng)中應(yīng)用的設(shè)計與實現(xiàn)31 應(yīng)用設(shè)計
本光盤系統(tǒng)中一個簡單的應(yīng)用設(shè)計:在用戶瀏覽光盤系統(tǒng)時,鼠標(biāo)放在一張光盤上,這張光盤的ID就會發(fā)送到中心服務(wù)器,然后提供這張光盤的更多細(xì)節(jié)而頁面并不刷新,每張光盤的詳細(xì)信息并不是放在隱藏的表單域中,用戶瀏覽起來更容易,不必點擊光盤,看完光盤詳細(xì)信息后再點擊回到光盤列表頁面。
32 系統(tǒng)應(yīng)用的實現(xiàn)
321 客戶端:
這是在客戶端顯示的一張光盤的圖片,當(dāng)鼠標(biāo)移到該圖片上時調(diào)用getDetail函數(shù),id號為光盤的惟一編號。
var xmlHttp
function getDetail(id)
{ if(id!=″″)
{ var url=″getDetail.asp?id=″id ∥將id號傳遞給請求處理的頁面
? xmlHttp=GetXmlHttpObject(stateChanged)
? xmlHttp.open(″GET″,url,true) ∥這個方法會建立對服務(wù)器的調(diào)用,要提供調(diào)用的特定方法(GET,POST或PUT),還要提供用調(diào)用資源的URL,另外還可以傳遞一個BOOLEAN值,指示這個調(diào)用是異步還是同步,默認(rèn)為TRUE,表示請求本質(zhì)上是異步的
? xmlHttp.send(1)
}
else
{
? document.form1.codeA.value=″″
}
}
function stateChanged() ∥每個狀態(tài)改變時都會觸發(fā)statechanged這個事件處理器
{
var s,ss;
if(xmlHttp.readyState==4‖xmlHttp.readyState==″complete″) ∥readyState是請求的狀態(tài),有5個可取值:0=未初始化,1=正在加載,2=已加載,3=交互中,4=完成.當(dāng)xmlHttp.readyState==4時已得到服務(wù)器端返回的數(shù)據(jù),此時將數(shù)據(jù)插入到頁面中的指定容器中。
{
? respText=xmlHttp.responseText; ∥獲取返回的數(shù)據(jù)
? document.getElementById(″DiscDetails″).innerText=respText; ∥獲取id為DiscDetails的容器,將數(shù)據(jù)插入到該容器中
}
}
function GetXmlHttpObject(handler) ∥該函數(shù)根據(jù)不同的瀏覽器生成XMLHttpRequest對象
{
var objXmlHttp=1
if(navigator.userAgent.indexOf(″Opera″)>=0)
{
? alert(″This example doesnt work in Opera″)
? return;
}
if(navigator.userAgent.indexOf(″MSIE″)>=0)
{
? var strName=″Msxml2.XMLHTTP″
? if(navigator.appVersion.indexOf(″MSIE 5.5″)>=0)
? {
? ? strName=″Microsoft.XMLHTTP″
? }
? try
? {
? ? objXmlHttp=new ActiveXObject(strName)
? ? objXmlHttp.onreadystatechange=handler
? ? return objXmlHttp
? }
? catch(e)
? {
? ? alert(″Error.Scripting for ActiveX might be disabled″)
? ? return
? }
}
if(navigator.userAgent.indexOf(″Mozilla″)>=0)
{
? objXmlHttp=new XMLHttpRequest()
? objXmlHttp.onload=handler
? objXmlHttp.onerror=handler
? return objXmlHttp
}
}
322 服務(wù)器端:
getDetail.asp
id=Request.querystring(″id″)∥獲取客戶端傳來的光盤id號
sql=″select top 1*from[DiscDetails]where id=″id
set rs=conn.execute(sql) ∥執(zhí)行sql語句檢索數(shù)據(jù)庫
response.Write(rs(″content″)) ∥將數(shù)據(jù)庫中的光盤內(nèi)容數(shù)據(jù)寫回客戶端
33 應(yīng)用測試
該系統(tǒng)測試的客戶端為Internet Explore60和FireFox10,服務(wù)器端為Windows2003和RedHat AS4+JDK15+Tomcat559,網(wǎng)絡(luò)環(huán)境為服務(wù)器在教育網(wǎng)內(nèi),客戶機在局域網(wǎng)內(nèi)和遠(yuǎn)程電信網(wǎng)。系統(tǒng)在局域網(wǎng)內(nèi)部和廣域網(wǎng)上的測試均達(dá)到了預(yù)期效果。
4 總 結(jié)
本文只是設(shè)計開發(fā)了AJAX在隨書光盤系統(tǒng)中進(jìn)行顯示時一個簡單的應(yīng)用,其實它還可以在許多方面得到應(yīng)用,比如用戶登陸光盤系統(tǒng)點擊率統(tǒng)計、用戶進(jìn)行光盤檢索時表單填寫等。
參考文獻(xiàn)
[1]Jesse James Garrett.Ajax:A New Approach to Web Applications[EB/OL].http:∥adaptivepath.com/publications/essaysJarchives/000385.php,2006-02-28.
[2]David Flanagan.JavaScript:The Detnitive Guide 4th Edition[M].0Neilly Media,Inc,2001.
[3]黃國平,陳斌.JSP與JavaScript整合使用[J].南通職業(yè)大學(xué)學(xué)報,2004,(4).
[4]Jerome Sonnet,Charles Savage.OGC Web Service Soap Experiment Report 08 Document#03-014,Jan 2003.
[5]Message based middleware project at Community Grids Lab,Project Web Site:http:∥www.naradabrokering.org
[6]Pallickara S.and Fox G.,“NaradaBrokering:A Distributed Middleware Framework and Architecture for Enabling Durable Peer-to-Peer Grids”ACM/IFIP/USENIX International Middleware Conference Middleware-2003,Rio Janeiro,Brazil June 2003.
[7]GIS Research at Community Grids Lab,Project Web Site:http:∥www.crisisgrid.org
[8]MapServer official web site http:∥ms.gis.umn.edu
[9]Tyler Mitchell,“Build AJAX-Based Web Maps Using ka-Map”http:∥www.xml.com/pub/a/2005/08/10/ka-map.html