[摘 要]隨著Web平臺越來越成熟,我們可以發現有越來越多的令人興奮的技術出現,這些技術使數字圖書館應用達到了一個功能強大且應用廣泛的新高度,通過把最新的功能強大的技術整合到數字圖書館應用系統中去,可以得到高效率的執行結果,隨之賦予了更多的功能。在目前基于瀏覽器應用程序的開發技術中,AJAX(Asynchronous JavaScript and XML)無疑是最新的技術。在本文中,介紹了一個通用的,高效的架構,這個架構把AJAX模型整合到了隨書光盤顯示系統中。
[關鍵詞]Ajax;數字圖書館;隨書光盤
[中圖分類號]G25076 [文獻標識碼]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 數字圖書館隨書光盤系統
近年來,隨著計算機技術、網絡技術、多媒體技術以及數據處理技術的迅速發展,圖書館的隨書光盤存儲量迅速增長,光盤作為一種新的文獻載體已經成為圖書館館藏和流通的重要組成部分。隨書光盤是一種電子出版物,是對圖書內容的說明與解釋,附有大量的實例和圖表,是和圖書一起出版、發行的附件,與圖書密不可分。讀者通過計算機對所附的光盤進行閱讀,可以加深對書中內容的理解,起到輔助學習的作用。當前隨書光盤數量正在急劇增加,特別是TP(工業技術)類的增加更為明顯,并且內容更新比較快、時效性很強。因此,對隨書光盤加強管理,讓其內容得到有效利用,起到知識增值的作用,已成為各圖書館普遍關注的問題。如何管理與利用這些隨書光盤成了圖書館新的問題與挑戰。
目前,許多圖書館都開發了隨書光盤發布系統,在檢索光盤時許多系統都是填寫表單然后等待頁面跳轉的同步請求/響應模式,即用戶的界面操作觸發HTTP請求,服務器在接收到請求之后進行業務邏輯處理,比如保存數據,然后向客戶端返回一個HTML頁面。但服務器處理數據的時候,用戶處于等待的狀態,每一步操作都需要等待,使得Web用戶界面在響應靈敏性方面大打折扣。而Ajax帶給用戶完全不同的瀏覽感受。傳統的動態網頁技術被隱藏到Ajax的后臺。用戶所看到的只是一個靜態頁面,不需要在提交頁面后等待或者主動刷新網頁。動態程序反饋的結果被直接無刷新地顯示在這個頁面上。因此利用Ajax開發的Web應用程序能夠提供響應極其靈敏的Web用戶界面,使得應用過程很自然,操作很流暢,并消除了頁面刷新所帶來的閃爍。
2 Ajax介紹
Ajax是Asynchronous JavaScript and XML的縮寫。實際上,Ajax并不是什么新技術,它是由幾種蓬勃發展的技術以新的方式組合而成的,這幾種技術分別如下。
21 XMLHttpRequest
XMLHttpRequest是Ajax當中最重要的也是最核心的技術,它最早是在IE 5中通過一個名為XMLHTTP的ActiveX對象來實現的。XMLHTTPRequest對象使得頁面中的腳本具有了在不刷新頁面的情況下直接與服務器端通信的能力。與此對應,Mozilla、Opera和Safari都以類似的方式實現了XMLHttpRequest對象的形為。
22 XML(eXtensible Markup Language)
XML具有一種開放的、可擴展的和可自描述的語言結構,目前,它已經成為因特網上數據和文檔傳輸的標準。在應用Ajax技術時,XMLHttpRequest對象可以選擇使用XML作為與服務器端通信的數據格式。
23 DOM(Document Object Model)
DOM是面向HTML和XML文檔的API,它為文檔提供了結構化表示,并定義了如何通過腳本來訪問文檔結構。在應用Ajax技術時,可以通過DOM來解析處理XML文檔和更新HTML頁面的內容。
24 Javascript
Javascript是一種在瀏覽器端大量使用的編程語言,它可以使用瀏覽器中的很多對象,包括XMLHttpRequest。在Ajax中,Javascript通過調用XMLHttpRequest對象的屬性和方法與服務器端進行數據交互,同時還可以利用DOM的API來解析從服務器端返回的XML數據和更新HTML頁面的內容。
AJAX是一種獨立于Web服務器軟件的瀏覽器技術。它為瀏覽器提供了與服務器端異步通信的能力,從而使用戶從請求/響應的循環中解脫出來,這樣,使得Web瀏覽器看起來就像是即時響應的桌面應用程序一樣。使因特網應用程序更小、更快,更友好。
AJAX工作的大致流程是這樣的:首先由用戶user在客戶端browser頁面端觸發一個事件,比如說onblur事件,這個事件是能被Javascript捕獲到的。然后Javascript相應的創建一個XMLHttpRequest請求,并通過XMLHttpRequest異步的把請求發送到服務器端,同時等待服務器端的響應。服務器端程序在接受請求后,著手處理并把結果返回,返回的結果被XMLHttpRequest捕獲到并返回給Javascript,再由Javascript調用相應的DOM進行顯示層的控制。圖1詳細的描述了AJAX工作的原理。2010年5月第30卷第5期Ajax在數字圖書館隨書光盤系統中的應用May,2010Vol30 No5圖1 AJAX的交互工作原理圖3 Ajax在數字圖書館隨書光盤系統中應用的設計與實現31 應用設計
本光盤系統中一個簡單的應用設計:在用戶瀏覽光盤系統時,鼠標放在一張光盤上,這張光盤的ID就會發送到中心服務器,然后提供這張光盤的更多細節而頁面并不刷新,每張光盤的詳細信息并不是放在隱藏的表單域中,用戶瀏覽起來更容易,不必點擊光盤,看完光盤詳細信息后再點擊回到光盤列表頁面。
32 系統應用的實現
321 客戶端:
這是在客戶端顯示的一張光盤的圖片,當鼠標移到該圖片上時調用getDetail函數,id號為光盤的惟一編號。
var xmlHttp
function getDetail(id)
{ if(id!=″″)
{ var url=″getDetail.asp?id=″id ∥將id號傳遞給請求處理的頁面
? xmlHttp=GetXmlHttpObject(stateChanged)
? xmlHttp.open(″GET″,url,true) ∥這個方法會建立對服務器的調用,要提供調用的特定方法(GET,POST或PUT),還要提供用調用資源的URL,另外還可以傳遞一個BOOLEAN值,指示這個調用是異步還是同步,默認為TRUE,表示請求本質上是異步的
? xmlHttp.send(1)
}
else
{
? document.form1.codeA.value=″″
}
}
function stateChanged() ∥每個狀態改變時都會觸發statechanged這個事件處理器
{
var s,ss;
if(xmlHttp.readyState==4‖xmlHttp.readyState==″complete″) ∥readyState是請求的狀態,有5個可取值:0=未初始化,1=正在加載,2=已加載,3=交互中,4=完成.當xmlHttp.readyState==4時已得到服務器端返回的數據,此時將數據插入到頁面中的指定容器中。
{
? respText=xmlHttp.responseText; ∥獲取返回的數據
? document.getElementById(″DiscDetails″).innerText=respText; ∥獲取id為DiscDetails的容器,將數據插入到該容器中
}
}
function GetXmlHttpObject(handler) ∥該函數根據不同的瀏覽器生成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 服務器端:
getDetail.asp
id=Request.querystring(″id″)∥獲取客戶端傳來的光盤id號
sql=″select top 1*from[DiscDetails]where id=″id
set rs=conn.execute(sql) ∥執行sql語句檢索數據庫
response.Write(rs(″content″)) ∥將數據庫中的光盤內容數據寫回客戶端
33 應用測試
該系統測試的客戶端為Internet Explore60和FireFox10,服務器端為Windows2003和RedHat AS4+JDK15+Tomcat559,網絡環境為服務器在教育網內,客戶機在局域網內和遠程電信網。系統在局域網內部和廣域網上的測試均達到了預期效果。
4 總 結
本文只是設計開發了AJAX在隨書光盤系統中進行顯示時一個簡單的應用,其實它還可以在許多方面得到應用,比如用戶登陸光盤系統點擊率統計、用戶進行光盤檢索時表單填寫等。
參考文獻
[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].南通職業大學學報,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