《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設計應用 > 一種動態(tài)Web自動裝配系統(tǒng)的設計與實現(xiàn)
一種動態(tài)Web自動裝配系統(tǒng)的設計與實現(xiàn)
2014年微型機與應用第13期
陳 岡
武漢紡織大學 管理學院,,湖北 武漢
摘要: 大多數(shù)中小企業(yè)的Web系統(tǒng)屬于輕量級業(yè)務處理,。基于Java Web平臺,,提出了一種輕量化系統(tǒng)開發(fā)架構(gòu),,該架構(gòu)實現(xiàn)了請求形式的改變與業(yè)務處理本質(zhì)的統(tǒng)一,,支持常規(guī)業(yè)務邏輯的自動裝配處理,具有可復用,、標準化,、代碼量低的優(yōu)勢。
關(guān)鍵詞: JavaWeb 裝配 架構(gòu) 設計
Abstract:
Key words :

  摘  要: 大多數(shù)中小企業(yè)的Web系統(tǒng)屬于輕量級業(yè)務處理,?;?a class="innerlink" href="http://forexkbc.com/tags/Java Web" title="Java Web" target="_blank">Java Web平臺,提出了一種輕量化系統(tǒng)開發(fā)架構(gòu),,該架構(gòu)實現(xiàn)了請求形式的改變與業(yè)務處理本質(zhì)的統(tǒng)一,,支持常規(guī)業(yè)務邏輯的自動裝配處理,具有可復用,、標準化,、代碼量低的優(yōu)勢。

  關(guān)鍵詞: Java Web,;裝配;架構(gòu),;設計

  隨著網(wǎng)絡技術(shù),、計算機技術(shù)的發(fā)展,越來越多的中小企業(yè)單位開始走上信息化的道路,。這些企事業(yè)單位不僅需要外部網(wǎng)站的建設,,同時還有內(nèi)部Web信息管理系統(tǒng)的建設(例如人力資源管理系統(tǒng)、考勤管理系統(tǒng)等),。根據(jù)國家工商總局公布的數(shù)據(jù),,2005年我國中小企業(yè)規(guī)模數(shù)量為2 836萬家,而網(wǎng)站總數(shù)量僅為69萬家,;2012年我國中小企業(yè)規(guī)模猛增到5 175萬家,,而網(wǎng)站總數(shù)量僅僅為530萬家。顯然,,企業(yè)內(nèi)外部Web系統(tǒng)數(shù)量遠遠低于企業(yè)現(xiàn)有數(shù)量,。因此,基于Java跨平臺特性,,Java Web系統(tǒng)具有極大地市場需求和開發(fā)潛力,。

  中小企業(yè)內(nèi)外部Web系統(tǒng)具有一些共性特征:動態(tài),、輕量化,例如一般涉及數(shù)據(jù)處理,,且數(shù)據(jù)量不是很大,、業(yè)務處理邏輯也不復雜。其網(wǎng)站常見功能有:單位組織的介紹,、產(chǎn)品的介紹,、用戶管理、新聞管理,、在線咨詢或服務等,。而內(nèi)部Web系統(tǒng)的功能側(cè)重于數(shù)據(jù)的查詢、錄入,、更新,、刪除等,較少涉及復雜的數(shù)據(jù)關(guān)聯(lián)處理,。

  對于上述輕量化的常規(guī)數(shù)據(jù)處理,,研究一種能夠?qū)I(yè)務邏輯處理自動裝配的系統(tǒng)DWAS(Dynamic Web Assembly System),具有良好的現(xiàn)實意義:(1)避免重復編寫數(shù)據(jù)的增刪查改等操作,,自動裝配業(yè)務處理邏輯,,提高復用性,降低開發(fā)成本,;(2)提供一個標準化,、高質(zhì)量、輕量化的業(yè)務邏輯處理基礎平臺,,降低由于開發(fā)人員水平差異帶來的系統(tǒng)質(zhì)量問題,;(3)降低Web系統(tǒng)開發(fā)門檻,用戶只需要進行簡單的系統(tǒng)配置或組裝操作即可完成功能處理要求,。

  1 系統(tǒng)設計架構(gòu)

  1.1 總體架構(gòu)

  DWAS基于MVC架構(gòu),,融合Hibernate、Struts和SpringMVC思想,。系統(tǒng)著重基于B/S模式的輕量級Web系統(tǒng)開發(fā),。DWAS能夠自動裝配常規(guī)SQL操作,用戶無需編寫SQL語句,。DWAS能夠自動裝配組合查詢:對于多條件的組合查詢數(shù)據(jù),,動態(tài)Web自動裝配系統(tǒng)能夠自動適應。系統(tǒng)能夠自適應視圖變化:當視圖層提交數(shù)據(jù)的形式改變(例如增加或刪除頁面表單域)時,,無需修改處理邏輯的程序代碼,。DWAS支持主流數(shù)據(jù)庫和連接池產(chǎn)品,其應用方式也顯示多樣化特征。DWAS總體架構(gòu)如圖1所示,。

001.jpg

  來自于頁面的業(yè)務處理請求,,先由DWAS的前端控制器接收,然后由控制器工廠自動裝配,??刂破鞴S調(diào)用模型層相應的業(yè)務處理Bean,由后者與數(shù)據(jù)庫進行交互,。最后,,控制器工廠將處理后并按照要求封裝好的結(jié)果數(shù)據(jù)轉(zhuǎn)發(fā)給最終的結(jié)果頁面(例如顯示登錄成功的界面)。

  1.2 與同類產(chǎn)品的比較分析

  目前市場上主流的同類產(chǎn)品主要有Spring MVC,、Struts和Hibernate等,。具體比較分析如表1所示。

003.jpg

  Spring是輕量級的控制反轉(zhuǎn)和面向切面的開源框架,,是為了解決企業(yè)應用開發(fā)的復雜性而創(chuàng)建,。Spring MVC需要配置過多的XML文件。Struts是Apache Jakarta項目的一個頂級項目,,采用了基于Web的MVC模式,。Struts的不足在于過于繁雜的標簽體系和大量不太適用的功能。Hibernate是一個開放源代碼的對象關(guān)系映射框架,,使用對象編程思維來操縱數(shù)據(jù)庫,,但對于批量數(shù)據(jù)的修改刪除操作不太適合。

  DWAS汲取了這些產(chǎn)品的優(yōu)點,,進行了設計思想上的整合,、修正和完善。

  1.3 自動裝配流程

  DWAS裝配流程如圖2所示,。

002.jpg

  系統(tǒng)準備:JDK,、服務器環(huán)境的配置、數(shù)據(jù)庫服務器的安裝,、DWAS系統(tǒng)JAR文件的配置等;編寫實體類和XML配置文件:與業(yè)務處理邏輯對應的實體類,、描述業(yè)務處理的標識或SQL語句的XML配置文件,;視圖頁面和運行結(jié)果頁面:前者是業(yè)務處理請求界面,后者則是反饋執(zhí)行結(jié)果的界面,。

  對第①部分的處理,,使用一些文本編輯器即可完成,并不需要開發(fā)設計人員具有較高的開發(fā)水平,。因此,,即使是系統(tǒng)前臺的設計人員稍作培訓,都可以完成。而第②部分,,則由DWAS負責自動完成,。

  1.4 應用方式

  DWAS的應用方式很靈活,既可以將其擴展成獨立的IDE平臺,,也可采用插件方式與第三方IDE集成,。

  2 實踐應用展示

  2.1應用場景

  為簡化說明,假定這樣的幾個應用場景:學生信息查詢(不定條件),、學生注冊,。考察在視圖發(fā)生變化的情況下,,DWAS自適應這種變化的處理能力,。

  對于不同的應用場景,表單域發(fā)生改變時,,業(yè)務處理標識不變,,結(jié)果頁面不變(只需要回傳數(shù)據(jù)到頁面)。用戶只需要編寫XML配置描述,,指定Bean,、動作標識、處理成功(失?。┺D(zhuǎn)發(fā)頁面,、返回數(shù)據(jù)屬性名,DWAS即可實現(xiàn)自適應視圖變化的處理,,而無需修改后臺業(yè)務處理代碼,。當應用場景僅僅是表單域發(fā)生改變時(例如應用場景從根據(jù)“姓名”查詢變更為根據(jù)“姓名、班級”查詢),,業(yè)務處理的本質(zhì)(學生基本信息的查詢)并未發(fā)生改變,,因此采用相同的業(yè)務處理標識。至于結(jié)果頁面,,從圖1可以看到,,控制器工廠將封裝后的處理結(jié)果數(shù)據(jù)轉(zhuǎn)發(fā)給最終結(jié)果頁面,后者只是顯示傳送過來的數(shù)據(jù)包而已,,因此結(jié)果頁面不與表單域嚴密耦合,。而“學生注冊”這種應用場景,由于屬于另外一種業(yè)務處理,,因此采用不同的業(yè)務處理標識,。具體如表2、表3所示,。

  無論是業(yè)務處理標識,,還是XML描述,,使用外部文本編輯器即可進行編輯,其形式的改變并不會影響DWAS內(nèi)部處理代碼,,因而視圖形式與內(nèi)在邏輯實現(xiàn)了良好解耦,。

  2.2 部分關(guān)鍵實現(xiàn)

  DWAS要獲取請求數(shù)據(jù)的鍵值對,代碼如下,。

  protected Map<String,,String[]>getRequestDataMap(){

  //鍵值對

  Map<String,String[]>map=request.getParameterMap(),;

  try{

  Method method=map.getClass().getMethod("setLocked",,new Class[]{boolean.class});//接觸map鎖定

  method.invoke(map,,new Object[]{new Boolean(false)}),;//反射

  map.remove("action");

  List<String> list=getParametersName(),;//請求參數(shù)名

  …

  }catch (Exception e){e.printStackTrace(),;}

  return map;

  }

  對請求參數(shù)進行解析,,代碼如下,。

  protected List<String> getParametersName(){

  List<String>temp=new ArrayList<String>();

  Set<Entry<String,,String[]>>set=map.entrySet(),;

  for(Entry<String,String[]>m:set){

  String o=m.getKey(),;

  String[] value=m.getValue(),;

  if(SysCfgEntity.getAction().equals(Constants.query))

  continue;

  else

  temp.add(o),;

  }

  return temp,;

  }

  根據(jù)Bean名稱獲取數(shù)據(jù)表字段并進行裝配,代碼如下,。

  protected String getTablePrimaryKey(){

  …

  Connection conn=DBFactory.getInstance().getConnection(),;

  rs=conn.getMetaData().getPrimaryKeys(null,null,,

  getTableName()),;

  primaryKey=rs.getString("COLUMN_NAME");

  //反射實體

  ReflectEntity entity=new ReflectEntity(),;

  Field[]fields=entity.getFields(),;

  Object instance=entity.getInstance(),;//實例

  BeanUtils.populate(instance,,map);

  //獲取參數(shù)名列表

  List<String>list=getParametersName();

  int i=1,;

  String primaryKeyValue=null,;

  for(String s:list){

  for(Field e:entity.getFields()){

  if(e.getName().equals(s)){

  e.setAccessible(true);

  ps.setObject(i,,e.get(instance));//賦參數(shù)值

  if(s.equals(primaryKey))

  primaryKeyValue=(String)e.get(instance),;

  i++,;

  }

  }

  }

  return getAutoParams();

  }

  DWAS系統(tǒng)著重關(guān)注業(yè)務處理的本質(zhì),,并將用戶請求形式的外在改變與業(yè)務處理的本質(zhì)特征統(tǒng)一起來,,從而實現(xiàn)系統(tǒng)處理的優(yōu)化。從實踐應用情況來看,,得到了用戶和開發(fā)人員的肯定,,效果良好。

  參考文獻

  [1] OSGi Alliance corporation. OSGi Technology[EB/OL]. http://www.osgi.org/osgi_technology/index.asp section=2.

  [2] Announcing the ADVANCED ENCRYPTION STANDARD (AES). Federal information processing standards publication 197[C]. United States National Institute of Standards and Technology(NIST),, 2001.

  [3] 陳岡.Java開發(fā)入行真功夫[M].北京:電子工業(yè)出版社,,2009.

  [4] 于慶梅.OSGi平臺服務動態(tài)更新的發(fā)布/訂閱策略[J].計算機應用與軟件,2012(6):17-32.

  [5] 黃晗.基于R-OSGi的平臺容錯架構(gòu)設計與實現(xiàn)[J].計算機與現(xiàn)代化,,2013(9):66-73.

  [6] 龍軍,,趙貴虎,張祖平.一種支持動態(tài)管理的SCA服務模型研究[J].計算機科學,,2012(12):114-117.

  [7] 張語涵,,劉淑華,周永鑫.Java Web應用中錯誤和異常處理方法研究[J].現(xiàn)代計算機(專業(yè)版),,2013(23):61-64.

  [8] 張耀民.SSH框架在Web項目開發(fā)中的構(gòu)建和應用實踐[J].微型機與應用,,2013(15):18-21.

  [9] 司飆.MVC模式下的考試系統(tǒng)建模研究[J].計算機科學,2013(S1):403-406.

  [10] 張原,,張昭,,劉蕊.基于MVC設計模式的虛擬實驗平臺模塊化設計[J].計算機工程與科學,2013(8):125-129.

  [11] 梁員寧,,陳喆,,謝立軍.Web服務組合的可靠性動態(tài)評估模型[J].計算機應用研究,2012(3):955-960.

  [12] 劉淑華.J2EE項目中一種新的錯誤處理方法[J].計算機應用與軟件,,2013(7):143-145.

  [13] 黃永慧,,陳程凱. HTML5在移動應用開發(fā)上的應用前景[J].計算機技術(shù)與發(fā)展,2013(7):207-210.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。