專利名稱:適用于ajax框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)自動(dòng)映射方法,尤其涉及適用于AJAX(異步JavaScript和XML)框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法。
背景技術(shù):
WEB應(yīng)用系統(tǒng)由于其快速部署的特性目前被廣泛使用, 一般按照MVC(M0DEL層、VIEW層、CONTROLLER層)三層模型進(jìn)行系統(tǒng)開發(fā)。其中,VIEW層一般使用HTML文檔對(duì)象模型(DOM)進(jìn)行數(shù)據(jù)展現(xiàn)與處理。HTML文檔對(duì)象模型將HTML文檔定義為嵌套其他元素的樹型結(jié)構(gòu)對(duì)象。MODEL層一般使用面向?qū)ο?00)的編程語(yǔ)言,如JAVA、 .NET等編程語(yǔ)言,使用類(classes)、對(duì)象(objects)來(lái)定義后臺(tái)實(shí)體對(duì)象,進(jìn)行數(shù)據(jù)的處理和持久化。
由于MODEL層與VIEW層的設(shè)計(jì)理念、開發(fā)平臺(tái)(語(yǔ)言)的差異,不可避免的帶來(lái)了 VIEW層DOM對(duì)象與MODEL層實(shí)體業(yè)務(wù)對(duì)象互相轉(zhuǎn)換的問(wèn)題。按照傳統(tǒng)的方式,MODEL層與VIEW層的數(shù)據(jù)交互往往需要編寫大量JS腳本和服務(wù)器端腳本,其開發(fā)效率低下,而且質(zhì)量無(wú)法保證。
發(fā)明內(nèi)容
本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷,提供一種復(fù)雜度低、通用性強(qiáng)的適用于AJAX框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法。
本發(fā)明的目的可以通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn) —種適用于AJAX框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法,其特征在于,該方法所涉及的硬件包括表單數(shù)據(jù)處理器、AJAX接口調(diào)用模塊、對(duì)象實(shí)體處理器、WEB表單控件、實(shí)體對(duì)象、數(shù)據(jù)源,該方法的步驟如下
1)客戶端下載WEB表單; 2)客戶端向服務(wù)器端發(fā)出提交請(qǐng)求,此時(shí)表單數(shù)據(jù)處理器會(huì)自動(dòng)捕獲視圖層表單控件屬性信息和當(dāng)前值,將這些信息封裝為JSON格式; 3)表單數(shù)據(jù)處理器通過(guò)AJAX接口調(diào)用模塊向服務(wù)器提交JSON格式的表單數(shù)據(jù);
4)客戶端的AJAX接口調(diào)用模塊負(fù)責(zé)調(diào)用具體的第三方AJAX框架,將JSON格式的表單數(shù)據(jù)提交給服務(wù)器; 5)服務(wù)器端的AJAX接口調(diào)用模塊將接收到該JSON格式的表單數(shù)據(jù)交給對(duì)象實(shí)體處理器進(jìn)行解析處理; 6)對(duì)象實(shí)體處理器解析JSON格式數(shù)據(jù),根據(jù)視圖層表單對(duì)象和模型層業(yè)務(wù)對(duì)象的映射關(guān)系,查找服務(wù)器緩存區(qū)的業(yè)務(wù)實(shí)體; 7)判斷是否存在實(shí)體對(duì)象,如果存在,則通過(guò)反射機(jī)制,填充對(duì)象屬性;
8)如果不存在,則新生成一個(gè)業(yè)務(wù)對(duì)象,并將該對(duì)象放入緩存區(qū);
9)通過(guò)反射機(jī)制查找對(duì)象實(shí)體中是否有符合用戶請(qǐng)求的操作方法;
10)如果有,則執(zhí)行對(duì)應(yīng)的操作;
11)如果沒有,則返回錯(cuò)誤結(jié)果,操作結(jié)果(正確或錯(cuò)誤)由對(duì)象實(shí)體處理器重新封裝為JS0N格式,并通過(guò)AJAX接口調(diào)用模塊將JSON格式的處理結(jié)果返回給客戶端;
12)客戶端的AJAX接口調(diào)用模塊自動(dòng)接收到該JSON格式的服務(wù)器處理結(jié)果,并交給表單數(shù)據(jù)處理器進(jìn)行解析;
13)表單數(shù)據(jù)處理器解析操作結(jié)果; 14)通過(guò)自定義回調(diào)函數(shù),回填視圖層WEB表單相應(yīng)控件,實(shí)現(xiàn)WEB表單的更新。
所述的6)中的緩沖區(qū)由服務(wù)器啟動(dòng)時(shí)初始化或者通過(guò)惰性初始化完成所有對(duì)象實(shí)例的生成。 所述的表單數(shù)據(jù)處理器對(duì)WEB表單控件進(jìn)行擴(kuò)展,增加必要的自定義屬性,用于反映表單和業(yè)務(wù)對(duì)象之間的關(guān)聯(lián)關(guān)系。 所述的AJAX接口調(diào)用模塊隱藏于具體的第三方AJAX框架中,實(shí)現(xiàn)客戶端與服務(wù)器端之間的數(shù)據(jù)交換。 所述的對(duì)象實(shí)體處理器解析JSON格式的WEB表單數(shù)據(jù),生成MODEL層對(duì)應(yīng)的業(yè)務(wù)對(duì)象,執(zhí)行相應(yīng)的業(yè)務(wù)操作,并將操作結(jié)果以JSON格式返回給客戶端。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn) 1、降低開發(fā)復(fù)雜度,只需要進(jìn)行簡(jiǎn)單的配置,即可完成VIEW層WEB表單數(shù)據(jù)與MODEL層業(yè)務(wù)對(duì)象的自動(dòng)映射,實(shí)現(xiàn)了 WEB表單數(shù)據(jù)與后臺(tái)業(yè)務(wù)對(duì)象的自動(dòng)綁定與處理。使得開發(fā)工作集中在關(guān)鍵的業(yè)務(wù)邏輯處理上,提高了軟件開發(fā)效率。 2、具有通用性,適用于多種第三方AJAX框架,可以根據(jù)不同需求,選擇適當(dāng)?shù)腁JAX框架進(jìn)行開發(fā)。
圖1是本發(fā)明一種適用于AJAX框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法的結(jié)構(gòu)示意圖; 圖2是本發(fā)明一種適用于AJAX框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法的工作流程圖。
具體實(shí)施例方式
以下結(jié)合具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步說(shuō)明。
實(shí)施例 如圖1、圖2所示,一種適用于AJAX框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法,該方法硬件包括表單數(shù)據(jù)處理器、AJAX接口調(diào)用模塊、對(duì)象實(shí)體處理器、WEB表單控件、實(shí)體對(duì)象、數(shù)據(jù)源,該方法的工作流程如下
第1步,客戶端下載WEB表單; 第2步,客戶端向服務(wù)器端發(fā)出提交請(qǐng)求,此時(shí)表單數(shù)據(jù)處理器會(huì)自動(dòng)捕獲視圖層表單控件屬性信息和當(dāng)前值,將這些信息封裝為JSON格式; 第3步,表單數(shù)據(jù)處理器通過(guò)AJAX接口調(diào)用模塊向服務(wù)器提交JSON格式的表單數(shù)據(jù); 第4步,客戶端的AJAX接口調(diào)用模塊負(fù)責(zé)調(diào)用具體的第三方AJAX框架,將JSON格式的表單數(shù)據(jù)提交給服務(wù)器; 第5步,服務(wù)器端的AJAX接口調(diào)用模塊將接收到該JSON格式的表單數(shù)據(jù)交給對(duì) 象實(shí)體處理器進(jìn)行解析處理; 第6步,對(duì)象實(shí)體處理器解析JSON格式數(shù)據(jù),根據(jù)視圖層表單對(duì)象和模型層業(yè)務(wù) 對(duì)象的映射關(guān)系,查找服務(wù)器緩存區(qū)的業(yè)務(wù)實(shí)體; 第7步,判斷是否存在實(shí)體對(duì)象,如果存在,則通過(guò)反射機(jī)制,填充對(duì)象屬性;
第8步,如果不存在,則新生成一個(gè)業(yè)務(wù)對(duì)象,并將該對(duì)象放入緩存區(qū);
第9步,通過(guò)反射機(jī)制查找對(duì)象實(shí)體中是否有符合用戶請(qǐng)求的操作方法;
第10步,如果有,則執(zhí)行對(duì)應(yīng)的操作; 第11步,如果沒有,則返回錯(cuò)誤結(jié)果,操作結(jié)果(正確或錯(cuò)誤)由對(duì)象實(shí)體處理器 重新封裝為JSON格式,并通過(guò)AJAX接口調(diào)用模塊將JSON格式的處理結(jié)果返回給客戶端;
第12步,客戶端的AJAX接口調(diào)用模塊自動(dòng)接收到該JSON格式的服務(wù)器處理結(jié) 果,并交給表單數(shù)據(jù)處理器進(jìn)行解析;
第13步,表單數(shù)據(jù)處理器解析操作結(jié)果; 第14步,通過(guò)自定義回調(diào)函數(shù),回填視圖層WEB表單相應(yīng)控件,實(shí)現(xiàn)WEB表單的更新。 所述的6)中的緩沖區(qū)由服務(wù)器啟動(dòng)時(shí)初始化或者通過(guò)惰性初始化完成所有對(duì)象 實(shí)例的生成。所述的表單數(shù)據(jù)處理器對(duì)WEB表單控件進(jìn)行擴(kuò)展,增加必要的自定義屬性,用 于反映表單和業(yè)務(wù)對(duì)象之間的關(guān)聯(lián)關(guān)系。所述的AJAX接口調(diào)用模塊隱藏于具體的第三方 AJAX框架中,實(shí)現(xiàn)客戶端與服務(wù)器端之間的數(shù)據(jù)交換。所述的對(duì)象實(shí)體處理器解析JSON格 式的WEB表單數(shù)據(jù),生成MODEL層對(duì)應(yīng)的業(yè)務(wù)對(duì)象,執(zhí)行相應(yīng)的業(yè)務(wù)操作,并將操作結(jié)果以 JSON格式返回給客戶端。
實(shí)施例2 該方法已經(jīng)被應(yīng)用于中國(guó)鋁業(yè)廣西分公司運(yùn)輸生產(chǎn)調(diào)度系統(tǒng)中,該系統(tǒng)主要功能 包括跟蹤機(jī)車的行走過(guò)程,對(duì)運(yùn)輸過(guò)程中留下的運(yùn)輸數(shù)據(jù)和機(jī)車車輛行走痕跡進(jìn)行實(shí)時(shí)動(dòng) 態(tài)跟蹤和處理等。 該運(yùn)輸生產(chǎn)調(diào)度系統(tǒng)是基于JAVA開發(fā)的,采用DWR框架完成客戶端與服務(wù)器端的 數(shù)據(jù)傳輸。 該系統(tǒng)為每個(gè)WEB表單控件擴(kuò)展了三個(gè)自定義屬性分組信息(關(guān)聯(lián)對(duì)象名稱),
關(guān)聯(lián)字段,類型(用于有效性驗(yàn)證)。表單控件包括文本框、下拉菜單、日期或其他任何面向
對(duì)象的表單控件。 以下是具體的實(shí)現(xiàn)方式 1、數(shù)據(jù)表單智能綁定 自定義了三個(gè)Html組件屬性,有對(duì)象ID (group屬性),字段屬性(f ield屬性),數(shù) 據(jù)類型(ftype屬性);Html的各種表單控件,包括列表框、文本框和其他自定義輸入框等, 都加入了該Html組件屬性。
2 、 JSON數(shù)據(jù)對(duì)象格式 定義有class、 method、 f ields、 param禾口 results子對(duì)象,分別表示對(duì)象類名、操 作方法、表單數(shù)據(jù)(屬性和值的鍵值對(duì)集合)、自定義參數(shù)和返回結(jié)果(此結(jié)果也是JSON格式)信息。 3、AJAX接口調(diào)用模塊 承擔(dān)數(shù)據(jù)傳輸橋梁的角色。在本系統(tǒng)中,此模塊通過(guò)調(diào)用DWR框架,實(shí)現(xiàn)VIEW層 與MODEL層之間JS0N格式數(shù)據(jù)的傳輸。
4、對(duì)象實(shí)體處理器 首先,根據(jù)JS0N數(shù)據(jù)的class子對(duì)象生成一個(gè)MODEL層的業(yè)務(wù)對(duì)象實(shí)例,同時(shí)將 fields子對(duì)象中的屬性值設(shè)置到該業(yè)務(wù)對(duì)象實(shí)例中,并調(diào)用該業(yè)務(wù)對(duì)象實(shí)例的method方 法。 然后,將method方法的返回值轉(zhuǎn)化成JSON格式,存儲(chǔ)到results子對(duì)象中,并返 回給客戶端。 從系統(tǒng)的開發(fā)進(jìn)度來(lái)看,使用該方法后,編程復(fù)雜度降低了很多,開發(fā)效率有很大 提高。
權(quán)利要求
一種適用于AJAX框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法,其特征在于,該方法所涉及的硬件包括表單數(shù)據(jù)處理器、AJAX接口調(diào)用模塊、對(duì)象實(shí)體處理器、WEB表單控件、實(shí)體對(duì)象、數(shù)據(jù)源,該方法的步驟如下1)客戶端下載WEB表單;2)客戶端向服務(wù)器端發(fā)出提交請(qǐng)求,此時(shí)表單數(shù)據(jù)處理器會(huì)自動(dòng)捕獲視圖層表單控件屬性信息和當(dāng)前值,將這些信息封裝為JSON格式;3)表單數(shù)據(jù)處理器通過(guò)AJAX接口調(diào)用模塊向服務(wù)器提交JSON格式的表單數(shù)據(jù);4)客戶端的AJAX接口調(diào)用模塊負(fù)責(zé)調(diào)用具體的第三方AJAX框架,將JSON格式的表單數(shù)據(jù)提交給服務(wù)器;5)服務(wù)器端的AJAX接口調(diào)用模塊將接收到該JSON格式的表單數(shù)據(jù)交給對(duì)象實(shí)體處理器進(jìn)行解析處理;6)對(duì)象實(shí)體處理器解析JSON格式數(shù)據(jù),根據(jù)視圖層表單對(duì)象和模型層業(yè)務(wù)對(duì)象的映射關(guān)系,查找服務(wù)器緩存區(qū)的業(yè)務(wù)實(shí)體;7)判斷是否存在實(shí)體對(duì)象,如果存在,則通過(guò)反射機(jī)制,填充對(duì)象屬性;8)如果不存在,則新生成一個(gè)業(yè)務(wù)對(duì)象,并將該對(duì)象放入緩存區(qū);9)通過(guò)反射機(jī)制查找對(duì)象實(shí)體中是否有符合用戶請(qǐng)求的操作方法;10)如果有,則執(zhí)行對(duì)應(yīng)的操作;11)如果沒有,則返回錯(cuò)誤結(jié)果,操作結(jié)果(正確或錯(cuò)誤)由對(duì)象實(shí)體處理器重新封裝為JSON格式,并通過(guò)AJAX接口調(diào)用模塊將JSON格式的處理結(jié)果返回給客戶端;12)客戶端的AJAX接口調(diào)用模塊自動(dòng)接收到該JSON格式的服務(wù)器處理結(jié)果,并交給表單數(shù)據(jù)處理器進(jìn)行解析;13)表單數(shù)據(jù)處理器解析操作結(jié)果;14)通過(guò)自定義回調(diào)函數(shù),回填視圖層WEB表單相應(yīng)控件,實(shí)現(xiàn)WEB表單的更新。
2. 根據(jù)權(quán)利要求1所述的適用于AJAX框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法,其特 征在于,所述的步驟6)中的緩沖區(qū)由服務(wù)器啟動(dòng)時(shí)初始化或者通過(guò)惰性初始化完成所有 對(duì)象實(shí)例的生成。
3. 根據(jù)權(quán)利要求1所述的適用于AJAX框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法,其特 征在于,所述的表單數(shù)據(jù)處理器對(duì)WEB表單控件進(jìn)行擴(kuò)展,增加必要的自定義屬性,用于反 映表單和業(yè)務(wù)對(duì)象之間的關(guān)聯(lián)關(guān)系。
4. 根據(jù)權(quán)利要求1所述的適用于AJAX框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法,其特 征在于,所述的AJAX接口調(diào)用模塊隱藏于具體的第三方AJAX框架中,實(shí)現(xiàn)客戶端與服務(wù)器 端之間的數(shù)據(jù)交換。
5. 根據(jù)權(quán)利要求1所述的適用于AJAX框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法,其特 征在于,所述的對(duì)象實(shí)體處理器解析JS0N格式的WEB表單數(shù)據(jù),生成MODEL層對(duì)應(yīng)的業(yè)務(wù) 對(duì)象,執(zhí)行相應(yīng)的業(yè)務(wù)操作,并將操作結(jié)果以JS0N格式返回給客戶端。
全文摘要
本發(fā)明涉及一種適用于AJAX框架的模型層與視圖層數(shù)據(jù)自動(dòng)映射方法,該方法所涉及的硬件包括表單數(shù)據(jù)處理器、AJAX接口調(diào)用模塊、對(duì)象實(shí)體處理器、WEB表單控件、實(shí)體對(duì)象、數(shù)據(jù)源,該方法的步驟包括1)客戶端下載WEB表單等。與現(xiàn)有技術(shù)相比,本發(fā)明具有復(fù)雜度低、通用性強(qiáng)等優(yōu)點(diǎn)。
文檔編號(hào)G06F9/44GK101694618SQ20091019497
公開日2010年4月14日 申請(qǐng)日期2009年9月1日 優(yōu)先權(quán)日2009年9月1日
發(fā)明者周庭梁, 張兵建, 張立鵬 申請(qǐng)人:卡斯柯信號(hào)有限公司;