999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2018-06-01 11:43:54王光瓊鄧小清
西華大學學報(自然科學版) 2018年3期
關鍵詞:解決方案

梁 弼,王光瓊,鄧小清

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

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

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

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é)調(diào)組件之間的控制;Model由應用系統(tǒng)狀態(tài)BeanForm或業(yè)務邏輯的JavaBean來構(gòu)建;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對象,并進行對象屬性設置和連接配置,當對象被調(diào)用時容器便主動給出。這種自動賦值方式,把對象的生命周期管理、依賴關系等問題都由類本身轉(zhuǎn)移到IoC容器,這樣減輕了開發(fā)人員的編碼負擔,優(yōu)化了Bean對象的管理方式。

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

2 方案研究

2.1 方案的設計

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

圖1 輕量級3S的三層架構(gòu)解決方案圖

2.2 方案的優(yōu)勢

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

1)取消了Hibernate的映射文件*.hbm.xml,將O-R映射任務交由更為靈活的Spring JDBC來完成,而不需要專門編寫XML映射文件來完成對象和關系的轉(zhuǎn)換任務,從而減少了配置文件的數(shù)量,為后續(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應用的配置文件數(shù)量而且大大縮減了XML代碼量。

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

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

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

2.3 方案的實現(xiàn)

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

圖2 基于3S的三層架構(gòu)請求處理流程圖

3 實驗案例

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

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

表示層的任務主要是創(chuàng)建與古建筑文物相關的頁面來實現(xiàn)它們的展示,并編寫Controller來對用戶Http請求的轉(zhuǎn)發(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 數(shù)據(jù)持久層的實現(xiàn)

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

……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 實驗結(jié)果分析

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

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

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

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

表2 查詢操作測試結(jié)果

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

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

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

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

5 結(jié)束語

構(gòu)建有效的三層架構(gòu)解決方案是Web應用研究中一個非常重要的內(nèi)容,方案的優(yōu)劣將直接影響Web應用系統(tǒng)后期的開發(fā)、運行及維護。本文不僅提出了一種基于3S的三層架構(gòu)輕量級解決方案,還將其應用于古建筑文物信息管理系統(tǒng)進行具體實驗。實驗結(jié)果表明,該輕量級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] 周相兵,蘭青青,江瑜清. 基于分層結(jié)構(gòu)的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.

猜你喜歡
解決方案
手持激光雷達應用解決方案
北京測繪(2022年5期)2022-11-22 06:57:43
艾默生自動化解決方案
解決方案和折中方案
S700K-C轉(zhuǎn)轍機防水解決方案探討
簡潔又輕松的Soundbar環(huán)繞聲解決方案
ABS塑件的常見缺陷及解決方案
模具制造(2019年3期)2019-06-06 02:10:58
通信用UPS電源常見問題及解決方案
5G高頻室內(nèi)覆蓋解決方案研究
4G LTE室內(nèi)覆蓋解決方案探討
7大睡眠問題解決方案
母子健康(2015年1期)2015-02-28 11:21:44
主站蜘蛛池模板: 天天综合网亚洲网站| 国产网友愉拍精品| 免费视频在线2021入口| A级全黄试看30分钟小视频| 亚洲av无码专区久久蜜芽| 一级黄色网站在线免费看| 老司机久久99久久精品播放| 片在线无码观看| 精品无码国产自产野外拍在线| 久久中文无码精品| a毛片免费在线观看| 在线免费观看AV| 国产国语一级毛片在线视频| 国产日韩欧美中文| 久久精品国产一区二区小说| 国产成人亚洲精品无码电影| 亚洲日韩图片专区第1页| WWW丫丫国产成人精品| 国产人人射| а∨天堂一区中文字幕| 国产粉嫩粉嫩的18在线播放91| 国产av无码日韩av无码网站| 欧美中文字幕在线视频| 天天色天天综合| 亚洲精选高清无码| 热99精品视频| 亚洲V日韩V无码一区二区| 热99精品视频| 国产主播福利在线观看| 欧美午夜小视频| 国产一区二区三区免费观看| 九九线精品视频在线观看| 国产精品亚欧美一区二区三区| 五月天在线网站| 亚洲愉拍一区二区精品| 中文国产成人精品久久一| 特级欧美视频aaaaaa| 欧美精品成人一区二区视频一| 亚洲人妖在线| 黄色福利在线| 综1合AV在线播放| 国产精品xxx| 四虎永久免费地址| 亚洲成在线观看 | 久久成人免费| 在线播放91| 国产小视频免费观看| 99在线免费播放| 国内精品久久九九国产精品| 国产黄在线观看| 国产精品无码作爱| 国产精品久久自在自线观看| 国产偷国产偷在线高清| 欧美一级夜夜爽| 午夜国产大片免费观看| 老司机午夜精品视频你懂的| 日韩精品久久久久久久电影蜜臀| 国产亚洲精久久久久久无码AV| 成人免费视频一区| 成人午夜在线播放| 2021天堂在线亚洲精品专区| 激情六月丁香婷婷四房播| 国产在线观看91精品亚瑟| 伊人久久久久久久| 国产一级毛片在线| 精品亚洲国产成人AV| 国产主播一区二区三区| 欧美在线视频a| 国产SUV精品一区二区6| 久热re国产手机在线观看| 又黄又湿又爽的视频| 亚洲男女在线| 国产麻豆va精品视频| 亚洲人成色在线观看| 91精品亚洲| 成人无码一区二区三区视频在线观看| 国产麻豆永久视频| 欧美日韩国产在线人成app| 日韩国产 在线| 亚洲国产欧美目韩成人综合| 欧美日韩一区二区三| 亚洲永久色|