国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Spring框架的Web應用輕量級3S解決方案

2018-06-01 11:43王光瓊鄧小清
關鍵詞:配置文件古建筑架構

梁 弼,王光瓊,鄧小清

(四川文理學院智能制造學院, 四川 達州 635000)

當前,國內外最成熟的分層架構體系應該是J2EE的多層Web應用架構,并以Struts2、Spring和Hibernate為主流技術成為多層架構的典型,即經典SSH的三層架構解決方案[1]。它將整個Web應用系統(tǒng)劃分為表示層、業(yè)務邏輯層及數據持久層,并且每一層分別承擔特定的任務。其中:表示層用來接收/響應用戶請求,同時實現(xiàn)對數據的動態(tài)顯示,該任務由Struts2完成;業(yè)務邏輯層完成應用系統(tǒng)具體的業(yè)務邏輯功能,該任務主要由Spring承擔;數據持久層則完成O-R映射,并以面向對象的方式訪問后臺關系型數據庫,它通過Hibernate實現(xiàn)。這樣Web應用的各層任務便分別由Struts2、Spring及Hibernate(簡稱SSH) 3種不同技術實現(xiàn),彼此相互協(xié)作一起完成整個Web應用的功能[2]。因為這種方案不但有利于任務的分工,而且有利于應用系統(tǒng)后期的開發(fā)、部署、維護和擴展,所以目前已廣泛應用于各種企業(yè)級Web應用,如在線購物平臺、網上訂票系統(tǒng)等[3]。

然而,在經典SSH三層架構解決方案中,由于Struts2、Spring和Hibernate是3種不同類型的開源框架,分別來源于不同的組織機構,并完成三層Web應用中不同層次上的不同任務,當后期進行模塊整合時便會出現(xiàn)不同技術所對應的jar包、XML文件及程序代碼不兼容等情況,從而導致系統(tǒng)難以整合,進而延長系統(tǒng)開發(fā)周期,并且交付后的系統(tǒng)還存在擴展難、維護不方便以及性能差等不良現(xiàn)象[4]。為解決使用經典SSH方案來開發(fā)三層Web應用所產生的這些問題,本文提出了一種以Spring框架為核心的基于3S(Spring MVC+Spring IoC/DI+Spring JDBC)的三層架構輕量級解決方案(簡稱輕量級3S方案),并通過古建筑文物信息管理系統(tǒng)(即ABHIMS)來進行具體實驗。實驗結果表明該方案是可行且有效的。

1 3S技術

3S技術即由Spring MVC、Spring IoC/DI 和 Spring JDBC組合而成,它們是Spring框架中Spring Web MVC、Spring Core和Spring ORM這3個模塊的核心技術,也是本文輕量級3S方案的關鍵技術。

Spring MVC是一個細致完整的MVC框架。其中:Controller主要負責協(xié)調組件之間的控制;Model由應用系統(tǒng)狀態(tài)BeanForm或業(yè)務邏輯的JavaBean來構建;View是由JSP、Velocity或者其他表現(xiàn)層技術實現(xiàn)[5]。Spring MVC采用了一種優(yōu)雅的視圖解析方式,它的Controller返回一個ModelAndView對象,該對象的屬性就是視圖名字和模型,模型提供了Bean的名字以及與其對象的對應關系。它還充分利用Spring非侵入式編程的優(yōu)點,使開發(fā)者只須簡單配置XML文件而無須實現(xiàn)任何Spring有關接口。

Spring IoC是Spring框架的核心技術,它實現(xiàn)了Spring重要的“解耦”思想,并通過DI使類與類之間不再由硬性編碼方式發(fā)生關聯(lián),而是通過XML配置來實現(xiàn)這一過程,屬于Spring Core模塊技術[6]。Spring 通過IoC容器來自動創(chuàng)建應用系統(tǒng)中以后需要的所有Bean對象,并進行對象屬性設置和連接配置,當對象被調用時容器便主動給出。這種自動賦值方式,把對象的生命周期管理、依賴關系等問題都由類本身轉移到IoC容器,這樣減輕了開發(fā)人員的編碼負擔,優(yōu)化了Bean對象的管理方式。

Spring JDBC是一種ORM框架技術,完成對JDBC輕量封裝。它由核心包Core、數據源包Datasource、對象包Object以及支持包Support組成,其中最重要的是核心包Core,該包中最關鍵的類是JdbcTemplate[7]。它通過提供相應的模板和輔助類來完成對數據庫中數據的CRUD操作,有效解決了使用JDBC API對數據庫的繁瑣操作以及代碼冗余的問題;它還替開發(fā)人員自動完成了資源的創(chuàng)建以及釋放工作,從而簡化了對JDBC API的使用:所以Spring JDBC是Spring DAO模塊中的一種技術。

2 方案研究

2.1 方案的設計

本文源于經典SSH三層架構解決方案的思想[8-9],使用輕量級的3S技術來取而代之,即:采用Spring MVC及JSP技術來實現(xiàn)表示層,完成對用戶請求的轉發(fā)控制,并使用Java反射機制調用業(yè)務邏輯層組件進行業(yè)務處理;在業(yè)務邏輯層,通過使用Spring IoC/DI來簡化業(yè)務組件Bean的編寫,并調用數據持久層接口來訪問后臺關系數據庫,實現(xiàn)Web應用中具體的業(yè)務邏輯功能和事務處理;在數據持久層,讓Spring JDBC負責與關系數據庫通信,并編寫DAO類來完成對關系數據的CRUD操作。其方案的總體設計如圖1所示。這樣,以Spring為核心的3S技術便完成了三層Web應用的任務。

圖1 輕量級3S的三層架構解決方案圖

2.2 方案的優(yōu)勢

從圖1可見,與經典SSH的三層架構解決方案相比,該輕量級3S方案主要使用Spring相關技術(即3S)來實現(xiàn),所采用的技術及開發(fā)思路更為單一;因此在后期進行整合時不論是Java代碼整合還是XML文件整合都相對容易,而且避免了不同框架技術整合時jar、XML等文件不兼容的情況發(fā)生。具體優(yōu)勢有下面幾點。

1)取消了Hibernate的映射文件*.hbm.xml,將O-R映射任務交由更為靈活的Spring JDBC來完成,而不需要專門編寫XML映射文件來完成對象和關系的轉換任務,從而減少了配置文件的數量,為后續(xù)整合帶來了便利。

2)取消了Hibernate.cgf.xml和Struts.xml配置文件,由Spring的配置文件Spring.xml來統(tǒng)一配置相關信息,并通過自動掃描功能component-scan使該配置文件變得更為簡單,這是本文3S方案最大的優(yōu)點。它將SSH方案中Spring技術、Hibernate技術和Struts技術中的XML配置文件融合為一個配置文件(即Spring.xml),這不僅縮減了Web應用的配置文件數量而且大大縮減了XML代碼量。

3)通過靈活使用Spring的注解功能,如@Transaction、@RequestMapping等,有效縮減程序中Java代碼量以及Spring.xm中的配置量,提高了代碼編寫效率,使編譯和調試更加方便和快捷,從而縮短了軟件的開發(fā)周期并節(jié)約了軟件開發(fā)成本。

4)通過使用Spring IoC/DI技術簡化了Bean的編寫、組裝以及對大量Bean的管理,也減小了XML配置的復雜度,且易于學習和掌握,這很好地讓Web程序開發(fā)人員從以前繁瑣的Bean編寫、配置和維護中解放出來,進而減輕了開發(fā)人員的負擔和壓力。

同時,基于該方案所構建的三層Web應用程序是一種弱耦合結構,層與層之間的聯(lián)系很少,這有利地提高了完成各層功能的靈活性,有效地實現(xiàn)了“高內聚低耦合”的軟件開發(fā)目標。

2.3 方案的實現(xiàn)

對本方案實現(xiàn)首先要搭建它所需的開發(fā)環(huán)境,包括導入相關jar包,配置Web.xml及Spring.xml;接著在表示層通過JSP實現(xiàn)交互界面,并通過Spring MVC分發(fā)來自客服端的用戶請求,根據前端控制器DispatcherServlet接收到的請求委派相應的后端控制器Controller,Controller只負責向業(yè)務邏輯層傳遞參數和指定要調用的業(yè)務服務Bean,IoC容器會主動向Controller提供其需要的具體Bean。在業(yè)務邏輯層,根據Web應用具體的業(yè)務邏輯,裝配相應的DAO以完成某個業(yè)務模塊功能,同樣該層仍由IoC容器主動提供所需要的DAO組件來完成業(yè)務功能,并提供事務管理、緩沖池等組件來提高Web應用的性能[10]。最后數據持久層的DAO依賴于Spring JDBC對數據庫的強大交互能力來處理DAO組件請求的數據,并按順序依次返回處理結果給客戶端用戶。這樣輕量級3S方案便實現(xiàn)了對用戶請求的處理[11],其處理的基本流程如圖2所示。

圖2 基于3S的三層架構請求處理流程圖

3 實驗案例

古建筑文物是祖先為我們留下的珍貴文化瑰寶,我們應該使用現(xiàn)代信息技術來有效管理它們。本文將所提出的輕量級3S方案應用于ABHIMS實例[12]中。該實例由前臺和后臺2部分組成,前臺實現(xiàn)古建筑文物展示,后臺完成對古建筑文物相關數據的管理。依據該方案中所涉及到的技術需求,先搭建本系統(tǒng)的開發(fā)環(huán)境,以MyEclipse 9.0為開發(fā)平臺,Tomcat 7.0為后臺服務器,SQL Server 2008為數據庫工具,并使用Spring MVC、Spring IoC/DI、Spring JDBC及JSP等技術按照其層次任務依次實現(xiàn)ABHIMS,同時導入相關的jar包,其具體實現(xiàn)過程如下。

3.1 表示層的實現(xiàn)

表示層的任務主要是創(chuàng)建與古建筑文物相關的頁面來實現(xiàn)它們的展示,并編寫Controller來對用戶Http請求的轉發(fā)控制。本文ABHIMS的表現(xiàn)頁面主要通過Html5和JSP技術來實現(xiàn),具體有index.html、ancientBuildingDetail.html、register.jsp、login.jsp、user.jsp等;Controller功能則通過Spring MVC來實現(xiàn),主要的控制文件有AncientBuildingController.java、UseController.java、AdminController.java及PictureController.java等[13],其中PictureController.java的偽代碼格式如下:

……@Controller@RequestMapping("/picture")

public class PictureController {

@RequestMapping("/center")

public String center(){return "picture";}

@InitBinder

public void initBinder( WebDataBinder initbinder ){

binder.registerCustomEditor(……);} }……

其他控制文件格式類同。

3.2 業(yè)務邏輯層的實現(xiàn)

業(yè)務邏輯層的主要任務是編寫與古建筑文物操作相關的Bean,實現(xiàn)ABHIMS的業(yè)務功能。該系統(tǒng)的業(yè)務邏輯層主要通過Spring IoC/DI來簡化業(yè)務Bean的編寫以及對它們的管理。相關的業(yè)務Bean主要有AncientBuildingService.java、UseService.java、AdminService.java和PictureService.java等。此層中關鍵任務是配置Spring.xml,它是整個Web應用的基礎和核心[14],通過它將上下各層有機地融合在一起,其配置模板形式如下:

p:dataSource-ref="dSource"/>……

3.3 數據持久層的實現(xiàn)

數據持久層的主要任務是把古建筑文物相關信息持久化到關系數據庫中,實現(xiàn)對數據的CRUD操作,這主要通過編寫DAO來實現(xiàn)。本文ABHIMS的數據持久層采用Spring JDBC來完成。相關的DAO類主要有AncientBuildingDAO.java、UseDAO.java、AdminDAO.java及PictureDAO.java等[15]。其中AncientBuildingDAO中獲取所有古建筑文物信息關鍵偽代碼結構如下:

……jdbcTemplate.query(sql, new RowCallbackHandler() { @Override public void processRow(ResultSet rs) throws SQLException {

AncientBuilding ancientBuilding=new

AncientBuilding();

ancientBuilding.setBuilding_content(rs.getString(

"building_content"));…….}});……

4 實驗結果分析

通過使用本文所提出的輕量級3S方案來實現(xiàn)ABHIMS,在開發(fā)周期、代碼行數、配置文件種類及軟件大小等方面與經典SSH的三層架構解決方案在相同的環(huán)境下開發(fā)本案例進行比較,實驗所得到的具體數據如表1所示。

表1 2種解決方案應用比較

由表1可知,相對于經典SSH的三層架構解決方案來講,使用輕量級3S方案來開發(fā)相同的ABHIMS所需的開發(fā)周期縮短了33.51%,整合時的出錯率減少了14.27%,其優(yōu)勢得到了很好的證實。

同時,使用目前主流的LoadRunner測試工具[16-17]對它們各模塊分別進行了性能測試,主要包括響應時間、吞吐量、CPU利用率及事務通過率等,其中查詢操作的響應時間和吞吐量測試結果如表2所示。

表2 查詢操作測試結果

由表2可以看出,在相同實驗條件下,采用輕量級3S方案來實現(xiàn)的ABHIMS查詢操作不論是響應速度還是吞吐量都比經典SSH方案開發(fā)得好,并且輕量級3S的平均吞吐量是經典SSH的1.46倍。對于不同的并發(fā)數,它們所得到的響應時間和吞吐量測試結果如圖3—4所示。

圖3 不同并發(fā)數的平均響應時間

圖4 不同并發(fā)數的平均吞吐量

對其他操作模塊進行性能測試也取得類似結果。由此可見,基于輕量級3S方案來實現(xiàn)的ABHIMS具有較好的性能。

5 結束語

構建有效的三層架構解決方案是Web應用研究中一個非常重要的內容,方案的優(yōu)劣將直接影響Web應用系統(tǒng)后期的開發(fā)、運行及維護。本文不僅提出了一種基于3S的三層架構輕量級解決方案,還將其應用于古建筑文物信息管理系統(tǒng)進行具體實驗。實驗結果表明,該輕量級3S方案是正確可行的。它為軟件開發(fā)人員提供了一種新的開發(fā)策略。該策略進一步解決了軟件開發(fā)中周期長、整合不兼容等問題,為編寫配置少、規(guī)模小、速度快、性能好以及用戶體驗強的Web應用提供了技術支持,因此值得進一步推廣和使用;然而這種方案在一定程度上降低了代碼的可讀性,使得系統(tǒng)后期的可維護性減弱。它以犧牲系統(tǒng)可維護來換取系統(tǒng)性能為代價,因此在實際使用中應該把握一個度,這是后續(xù)研究中一個關鍵問題。

參 考 文 獻

[1] MOHAMED Ghetas, CHAN Huah Yong, PUTRA Sumari. A survey of quality of service in multi-tier web applications [J]. KSII Transactions on Internet and Information Systems, 2016, 10(1):238-256.

[2] 諶湘倩,狄文輝,孫冬.基于SSH框架與Ajax技術的Java Web應用開發(fā)[J].計算機工程與設計, 2009,30(10):2590-2591.

[3] YANG Liangtao. Management system of teaching resource based on ssh framework [C]//Information Technology and Computer Science:Proceedings of 2012 National Conference on Information Technology and Computer Science. Lanzhou: Service Academy Conference Center(SACC-China),2012:803-806.

[4] Introduction to the Spring Framework [EB/OL].[2017-09-21].http://spring.io/docs/reference.

[5] 徐金虎,宋斌,丁銳.Spring MVC+Hibernate+jQuery模式開發(fā)框架應用研究[J]. 自動化技術與應用,2015,34(3):42-46.

[6] MUKHERJEE Anshuman, TARI Zahir, BERTOK Peter. A Spring based framework for verification of service composition [C]//2011 IEEE International Conference on Services Computing. Washington, DC, USA:IEEE,2011:258-265.

[7] Spring JDBC reference documentation. introduction to the Spring JDBC [EB/OL]. [ 2017-09-21].http://docs.spring.io/spring-data/jdbc/docs/.

[8] LIANG Bi. Study on a novel and lightweight five-layer architecture and its application [C]//2016 2nd International Conference on Energy Equipment Science and Engineering (ICEESE 2016). Guangzhou: CRC Press, 2016:1085-1090.

[9] ZHANG Dandan, WEI Zhiqiang, YANG Yongquan. Research on lightweight MVC framework based on Spring MVC and Mybatis [C]//2013 Sixth International Symposium on Computational Intelligence and Design. Hangzhou:IEEE,2013:350-353.

[10] 李守振,張南平,常國鋒. Web應用分層與開發(fā)框架設計研究[J].計算機工程, 2006,32(11):274-276.

[11] 閆宏印,張衛(wèi)爭,劉超慧. 開源框架下Web應用分層的設計與實現(xiàn)[J].計算機工程與設計, 2008,29(23):6023-6028.

[12] 鄭佳佳,趙軍. 滁州市不可移動文物管理信息系統(tǒng)設計和實現(xiàn)[J].地理空間信息, 2009,7(5):45-47.

[13] Spring-MVC-Chat. A chat sample using Spring MVC 3, Servlet-based, async request processing [EB/OL]. [ 2017-09-21]https://github.com/rstoyanchev/spring-mvc-chat.

[14] 周相兵,蘭青青,江瑜清. 基于分層結構的Web服務與Ajax整合的中間件實現(xiàn)研究[J]. 計算機應用與軟件, 2008,25(11):97-99.

[15] PAN HaiLan, CHEN Jian, WU Cuihong. The network platform based on Struts2 + JPA + Spring Framework [C]//2010 International Conference on Educational and Information Technology (ICEIT 2010). Chongqing:IEEE, 2010:69-71.

[16] 袁琳. 基于在線注冊Web系統(tǒng)的性能測試及優(yōu)化[D].西安:西安電子科技大學, 2015.

[17] LIANG Bi. The study and application of the new control layer for Enterprise-Class web applications [J]. Journal of Computers (taiwan), 2017, 28(6):151-162.

猜你喜歡
配置文件古建筑架構
基于FPGA的RNN硬件加速架構
從Windows 10中刪除所有網絡配置文件
功能架構在電子電氣架構開發(fā)中的應用和實踐
用軟件處理Windows沙盒配置文件
古建筑取名有什么講究
互不干涉混用Chromium Edge
基于云服務的圖書館IT架構
基于Zookeeper的配置管理中心設計與實現(xiàn)
中國古建筑
WebGIS架構下的地理信息系統(tǒng)構建研究