劉云香
摘要:該文分別研究Spring、DWR與EXT三個框架的特點(diǎn),并結(jié)合組合下拉框的三級聯(lián)動實(shí)例來研究如何整合這三種框架來提高開發(fā)效率和改善用戶體驗(yàn)。
關(guān)鍵詞:Spring;DWR;EXT;三級聯(lián)動
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)15-0103-02
Spring提供了簡單而有效的JDBC應(yīng)用并且能和其他一些開源框架進(jìn)行無縫結(jié)合,比如DWR。AJAX能實(shí)現(xiàn)頁面局部刷新, DWR是一個用于改善web頁面與Java類交互的遠(yuǎn)程服務(wù)器端Ajax開源框架,它允許開發(fā)人員直接在瀏覽器端直接調(diào)用后臺java代碼。但是,DWR很難構(gòu)建出漂亮的視圖層頁面。而EXT是一個用于客戶端創(chuàng)建豐富多彩的web應(yīng)用程序界面的Ajax框架,正好可以彌補(bǔ)DWR的缺陷。所以spring+dwr+ext三個框架用于web應(yīng)用開發(fā)中,理論上是非常不錯的。
1 Spring JDBC模板設(shè)計模式
Spring內(nèi)置了一組數(shù)據(jù)訪問框架,可以針對JDBC、Hibernate、MyBaties等常見數(shù)據(jù)訪問技術(shù)提供簡化操作,讓我們把精力集中在核心的數(shù)據(jù)管理上面。常見的DAO碼中,大部分都是管道代碼(重復(fù)的),只要少數(shù)幾句核心代碼是每個方法不相同的。Spring利用“模板方法”設(shè)計模式,把管道代碼預(yù)先定義好,然后通過接口,把方法的特定細(xì)節(jié)(變化部份)委托到外部交給程序員后期實(shí)現(xiàn)?!澳0宸椒ā痹O(shè)計模式的定義是:在方法里預(yù)先定義算法的骨架,將一些步驟延遲到其子類去實(shí)現(xiàn)。Spring JDBC模塊為開發(fā)人員提供了一系列的抽象類,我們在寫DAO類時只要繼承于這些抽象類,并實(shí)行其中的相應(yīng)方法即可。這樣,大大簡化了DAO的開發(fā)步驟,基本上一些DAO操作只需要一兩句代碼即可。 并且,Spring還封裝了一些異常,因此,開發(fā)人員編碼時也無需自己編寫捕獲各種特定的異常的代碼,從而大大簡化了DAO方法的編寫。
2 DWR技術(shù)原理介紹
DWR(Direct Web Remoting)是位于服務(wù)器端的AJAX框架,用于處理客戶端的請求并進(jìn)行異步處理,將及時處理結(jié)果反饋于客戶端瀏覽器中。它包含2個主要部分:一個運(yùn)行在服務(wù)器端的Java Servlet,它處理請求并且向?yàn)g覽器發(fā)回響應(yīng)。另一個是運(yùn)行在瀏覽器端的JavaScript,它發(fā)送請求而且還能動態(tài)更新網(wǎng)頁。DWR工作原理是通過動態(tài)把Java類生成為Javascript。它的代碼就像Ajax魔法一樣,感覺調(diào)用就像發(fā)生在瀏覽器端,但是實(shí)際上代碼調(diào)用發(fā)生在服務(wù)器端,DWR負(fù)責(zé)數(shù)據(jù)的傳遞和轉(zhuǎn)換。這種從Java到JavaScript的遠(yuǎn)程調(diào)用功能的方式使DWR用起來有種非常像RMI或者SOAP的常規(guī)RPC機(jī)制,而且DWR的優(yōu)點(diǎn)在于不需要任何的網(wǎng)頁瀏覽器插件就能運(yùn)行在網(wǎng)頁上。
3 EXT技術(shù)特點(diǎn)
Ext是一個前臺頁面開發(fā)框架,可以用來開發(fā)富客戶端的AJAX應(yīng)用,是純Html/CSS+JS,擁有豐富的跨瀏覽器UI組件,采用靈活的JSON/XML數(shù)據(jù)源開發(fā),減輕了服務(wù)端表示層的負(fù)荷,真正實(shí)現(xiàn)客戶端的MVC應(yīng)用,并且每一個組件都擁有漂亮的樣式及布局,經(jīng)過簡單的調(diào)用與配置就可以實(shí)現(xiàn)不錯的界面布局,。是開發(fā)頁面不錯的技術(shù)選擇
4 Spring、DWR與EXT的整合及應(yīng)用
4.1 三種框架的整合工作原理
Spring、DWR與EXT整合工作流程:Spring JdbcTemplate封裝了JDBC的流程,包括了SQL的執(zhí)行、查詢結(jié)果的轉(zhuǎn)換和異常的捕捉等等。在java程序中使用了JdbcTemplate的類中采用依賴注入jdbcTemplate,然后就直接調(diào)用JdbcTemplate中的數(shù)據(jù)庫方法,如查詢queryForList,更新update等。Spring JdbcTemplate負(fù)責(zé)應(yīng)用系統(tǒng)數(shù)據(jù)庫的操作。DWR負(fù)責(zé)將后臺的java對象轉(zhuǎn)化成前臺頁面的js 對象,讓開發(fā)人員可以在客戶端腳本語句中直接調(diào)用。開發(fā)人員在前臺ext代碼中調(diào)用后臺java函數(shù)時,DWR 會將此轉(zhuǎn)換成對應(yīng)的請求發(fā)送到服務(wù)器端。當(dāng)服務(wù)器處理完請求后,dwr還會將處理的結(jié)果返回給前臺ext,EXT負(fù)責(zé)將后臺傳過來的數(shù)據(jù)呈現(xiàn)在漂亮的客戶端界面上。
4.2 實(shí)例的應(yīng)用
本實(shí)例是自己教學(xué)過程中用Spring+DWR+EXT框架開發(fā)web應(yīng)用程序經(jīng)常用到的的組合框的三級聯(lián)動,通過實(shí)例來分析如何整合這三種框架,以其來提高開發(fā)效率和改善用戶體驗(yàn)。
項(xiàng)目中要用到Spring,DWR,EXT框架,首先需要在項(xiàng)目中添加spring 、dwr 以及extjs所需的jar 包。并將包放到合適目錄下。
1)在web.xml中配置Spring與DWR
在web應(yīng)用中添加Spring支持,需要在web.xml中配置spring啟動的監(jiān)聽器:(代碼略)。
在Spring框架之下,每個Java對象將會以bean的方式存在。
2)編寫具體的類ResourceGISDistributeDao,實(shí)現(xiàn)數(shù)據(jù)庫的業(yè)務(wù)處理。列出部分代碼說明:
/*查詢營業(yè)部數(shù)據(jù)*/
public List queryyingyebu(String cityid) {
try { return this.jdbcTemplate.queryForList(this.yingyebuString, new Object[]{cityid});} catch (Exception ex) {
ex.printStackTrace();
return null;}
}
3)編寫spring配置文件
在spring配置文件中,我們主要是用來配置數(shù)據(jù)源和操作數(shù)據(jù)庫的dao,以便在dwr配置文件中進(jìn)行引入訪問。
<!—數(shù)據(jù)源配置 -->
略
<!-- 查詢市數(shù)據(jù) -->
略
<!-- 查詢營業(yè)部數(shù)據(jù) -->
SELECT DISTINCT T.TOWN_ID,T.TOWN_DESC FROM APP.RS_CHL_NET_CELL_BASIC T WHERE T.CITY_ID=?
<!-- 查詢片區(qū)數(shù)據(jù) -->
略
4)編寫dwr.xml配置文件
Dwr配置文件與web.xml在同一目錄下,配置將要被調(diào)用的java類。部分代碼如下:
<!-- 獲取資源GIS分析模塊信息的DAO -->
5)創(chuàng)建視圖層
最后,創(chuàng)建視圖層。視圖層項(xiàng)目中采用jsp技術(shù)。在jsp頁面中要引用dwr的engine.js和util.js,還要引用dwr自動生成的js,如dwr/interface/ResourceGISDistributeDao.js,注意js名字要和dwr.xml配置的一樣。這樣就可以在jsp頁面中通過腳本代碼來調(diào)用在服務(wù)器端dao層ResourceGISDistributeDao代碼,函數(shù)比在java代碼中多了個參數(shù)function(data),用來callback返回的數(shù)據(jù),如下:ResourceGISDistributeDao. queryyingyebu (function(data){
DwrReturnData = data; });
最終組合下拉框三級聯(lián)動效果圖圖1。實(shí)踐發(fā)現(xiàn),采用spring+dwr+ext三個框架相結(jié)合的異步讀取的方式,能使多級聯(lián)動的數(shù)據(jù)不需要一次性地從數(shù)據(jù)庫中讀取出來,而會在頁面初始化的時候只讀出第一級組合框(市級)的數(shù)據(jù),再根據(jù)用戶的選擇讀出相應(yīng)的下一級(營業(yè)部)組合框數(shù)據(jù),極大地提高了用戶體驗(yàn)。且EXT的組合框控件有緩存機(jī)制,再次點(diǎn)擊時會去緩存中讀取數(shù)據(jù),提升了響應(yīng)速度。對于開發(fā)人員而言,JavaScript代碼量及復(fù)雜度大大降低,極大地減輕了編程負(fù)擔(dān)。
5 結(jié)束語
DWR框架響應(yīng)迅速、交互性強(qiáng) ,EXT能夠創(chuàng)建豐富多彩的web應(yīng)用程序界面, Spring框架將DWR與EXT框架有機(jī)地整合起來,使JAVA應(yīng)用更加靈活,因此基于Spring+DWR+EXT框架的能很好地進(jìn)行web應(yīng)用開發(fā)。
參考文獻(xiàn):
[1] 林信良. Spring3.0技術(shù)手冊[M]. 北京: 電子工業(yè)業(yè)出版社, 2012.
[2] 董鑫. 基于AJAX的動態(tài)Web開發(fā)技術(shù)探討[D]. 鄭州: 河南大學(xué), 2010.
[3] 李健, 郭宇明, 石桂名. 基于DWR的Ajax技術(shù)研究與實(shí)現(xiàn)[J]. 現(xiàn)代計算機(jī):專業(yè)版, 2013(7): 132-133.
[4] 王霓虹, 金興. Ajax技術(shù)及其DWR框架實(shí)現(xiàn)[J]. 自動化技術(shù)與應(yīng)用, 2012, 26(12): 92-94.
[5] 張栗, 張鳳元, 危勝軍. 基于DWR框架的Web應(yīng)用的設(shè)計與實(shí)現(xiàn)[J]. 計算機(jī)技術(shù)與發(fā)展, 2012, 18(8): 84-87.
[6] 李瑞, 伍新華. 基于EXT的Java EE快速開發(fā)研究[J]. 軟件導(dǎo)刊, 2010, 8(3): 67-68.