摘要: 隨著Ajax技術(shù)的不斷發(fā)展與成熟,其優(yōu)點也不斷體現(xiàn)出來。本文簡單介紹了Ajax技術(shù)的組成部分和基本工作原理,并在此基礎(chǔ)上利用Ajax技術(shù)設(shè)計和實現(xiàn)一個門戶網(wǎng)站的用戶登陸系統(tǒng),驗證了Ajax技術(shù)的優(yōu)越性。
關(guān)鍵詞: Ajax;XMLHttpRequest;用戶登陸系統(tǒng)
傳統(tǒng)的Web頁面重載機制給用戶一種不連貫的體驗,因此,關(guān)于頁面載入技術(shù)的研究日益成為Web應(yīng)用程序設(shè)計的關(guān)鍵[1]。Ajax采用獨特的遠程腳本調(diào)用技術(shù),異步實現(xiàn)頁面數(shù)據(jù)的更新,使用全新的網(wǎng)頁應(yīng)用程序設(shè)計模式,解決了傳統(tǒng)頁面的重載問題。
本文在介紹Ajax技術(shù)組成和基本原理的基礎(chǔ)上,給出基于Ajax技術(shù)用戶登陸系統(tǒng)的設(shè)計和實現(xiàn)過程。
1Ajax技術(shù)簡介
1.1Ajax基本組成
Ajax不是一種單一的技術(shù),而是四種技術(shù)的集合[2],即CSS、DOM、JavaScript和XMLHttpRequest對象。其中,CSS、DOM和JavaScript被合稱為DHTML,即動態(tài)HTML, XMLHttpRequest對象可以與Web服務(wù)器異步通信,為用戶帶來響應(yīng)速度快、交互感強的體驗。
1.2異步通信工作原理
與傳統(tǒng)的Web應(yīng)用不同,Ajax技術(shù)使用XMLHttpRequest對象提供與服務(wù)器異步通信的能力。當(dāng)客戶端的用戶操作觸發(fā)XMLHttpRequest對象后,客戶端向服務(wù)器發(fā)送一個異步請求。方法非常迅速地返回,只會將客戶端用戶界面阻塞很短的時間。如果服務(wù)器端處理好客戶端請求,向客戶端發(fā)送響應(yīng)數(shù)據(jù)。客戶端通過一個回調(diào)函數(shù)解析來自服務(wù)器的響應(yīng),并根據(jù)響應(yīng)數(shù)據(jù)更新用戶界面。
2用戶登陸系統(tǒng)設(shè)計與實現(xiàn)
現(xiàn)在,B/S結(jié)構(gòu)三層模型占據(jù)Web設(shè)計的主流[3]
本文闡述的系統(tǒng)利用B/S結(jié)構(gòu)三層模型
2.1服務(wù)器端設(shè)計
本文使用Apache的Tomcat服務(wù)器,圖1展示了登陸過濾器的設(shè)計流程。
在上面設(shè)計中,應(yīng)用一個過濾器檢查user對象是否保存在會話中。如果是,就允許用戶登陸;否則,就根據(jù)請求中提供的用戶名和密碼來做身份驗證,然后訪問數(shù)據(jù)庫尋找一行匹配記錄。如果沒有找到匹配記錄,就會返回一條指令來顯示出錯信息;如果找到匹配記錄,則創(chuàng)建一個新user對象并把它保存在會話中,以便下一次請求能夠通過這個過濾器。這樣,在后續(xù)的請求通過過濾器的時候,不再需要在查詢框中提供用戶名和密碼,因為user對象已經(jīng)在會話中。
2.2客戶端設(shè)計
客戶端用戶登陸過程由兩個部分組成。第一部分是可視化界面部分,第二部分是用戶登陸過程部分。 如圖2所示。
2.2.1可視化界面設(shè)計
在表單中放入一個文本框、一個密碼字段以及一個用來將表單提交到服務(wù)器的提交按鈕。創(chuàng)建一個標(biāo)簽span,這樣當(dāng)用戶名或者密碼無效時,可以在其中顯示來自服務(wù)器的出錯消息。通過將整個表單放在標(biāo)簽div和span中,對HTML實現(xiàn)了格式化,以便產(chǎn)生門戶的標(biāo)題。
2.2.2用戶登陸過程設(shè)計
登陸過程利用Ajax異步通信機制,允許客戶端只發(fā)送用戶名和密碼到服務(wù)器,這樣,客戶端無需提交整個頁面,從而減小了傳輸?shù)臄?shù)據(jù)量[4]
登陸過程需要執(zhí)行兩個操作:第一個操作收集信息,第二個操作是發(fā)送請求到服務(wù)器。
在操作收集過程中,用戶輸入用戶名、密碼字段,程序?qū)⒎旁谝粋€將會提交到服務(wù)器的字符串中。然后將這些值通過AjaxUpdater對象提交到服務(wù)器。
AjaxUpdater對象是本文實現(xiàn)Ajax異步通信的方法,它可以接受參數(shù),包括目標(biāo)URL、請求成功時調(diào)用的函數(shù)、請求失敗時調(diào)用的函數(shù)、使用HTTP方法以及包含提交參數(shù)的字符串。
AjaxUpdadter對象將會等待服務(wù)器返回一個XML文檔,當(dāng)數(shù)據(jù)從服務(wù)器正確返回時,將調(diào)用MakeScrip()函數(shù),MakeScrip()函數(shù)將利用從服務(wù)器端獲取的數(shù)據(jù)創(chuàng)建登陸后的窗口界面。
3門戶登陸系統(tǒng)實現(xiàn)效果
通過對服務(wù)器端和客戶端的設(shè)計和實現(xiàn),用戶可以使用這個門戶登陸系統(tǒng)。如圖3所示,在輸入框中依次輸入姓名和密碼,點擊“登陸”按鈕,此時輸入框下“正在登陸”信息提示用戶客戶端發(fā)送客戶信息(而不是提交整個頁面)到服務(wù)器端。
如果服務(wù)器在數(shù)據(jù)庫中找到用戶信息,那么用戶登陸成功。此后,服務(wù)器在數(shù)據(jù)庫中尋找用戶的配置信息和用戶登陸的網(wǎng)站地址,返回給用戶端的回調(diào)函數(shù)?;卣{(diào)函數(shù)根據(jù)返回的信息創(chuàng)建三個子窗口裝載相關(guān)網(wǎng)站,作為登陸后的窗口界面。如圖4示。
4結(jié)束語
本文首先簡單介紹了Ajax技術(shù)的概念和基本工作原理,然后利用Ajax技術(shù)設(shè)計并實現(xiàn)了一個簡單的門戶登陸系統(tǒng),從而驗證了Ajax技術(shù)快速、交互性強的異步通信的優(yōu)點,并且為Web應(yīng)用程序的研究深化奠定了基礎(chǔ)。
參考文獻:
[1] 楊國瑞, 張思博. 基于Ajax的Web應(yīng)用架構(gòu)設(shè)計[J]現(xiàn)代電子技術(shù),2006,15 (230):95-98.
[2] Ryan Asleson , Nathaniel T Schutta. Foundations of Ajax[M]. 第1版,北京:人民郵電出版社,2006.24-36..
[3] Philip McCarthy. 面向Java 開發(fā)人員的Ajax :構(gòu)建動態(tài)的Java 應(yīng)用程序[ EO/ OL ] . http :/ / www 128. ibm. com/ developerworks/ cn/ java/ jajax1. 2005. 10. 20.
[4] 崔瑤,錢小江.基于Ajax 的動態(tài)搜索功能設(shè)計和應(yīng)用[J].網(wǎng)絡(luò)安全與技術(shù)應(yīng)用,2007,12(5):61-64.