亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Spring框架的Web應(yīng)用輕量級3S解決方案

        2018-06-01 11:43:54王光瓊鄧小清
        關(guān)鍵詞:配置文件古建筑架構(gòu)

        梁 弼,王光瓊,鄧小清

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

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

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

        1 3S技術(shù)

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

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

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

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

        2 方案研究

        2.1 方案的設(shè)計

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

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

        2.2 方案的優(yōu)勢

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

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

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

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

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

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

        2.3 方案的實現(xiàn)

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

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

        3 實驗案例

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

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

        表示層的任務(wù)主要是創(chuàng)建與古建筑文物相關(guān)的頁面來實現(xiàn)它們的展示,并編寫Controller來對用戶Http請求的轉(zhuǎn)發(fā)控制。本文ABHIMS的表現(xiàn)頁面主要通過Html5和JSP技術(shù)來實現(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è)務(wù)邏輯層的實現(xiàn)

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

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

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

        數(shù)據(jù)持久層的主要任務(wù)是把古建筑文物相關(guān)信息持久化到關(guān)系數(shù)據(jù)庫中,實現(xiàn)對數(shù)據(jù)的CRUD操作,這主要通過編寫DAO來實現(xiàn)。本文ABHIMS的數(shù)據(jù)持久層采用Spring JDBC來完成。相關(guān)的DAO類主要有AncientBuildingDAO.java、UseDAO.java、AdminDAO.java及PictureDAO.java等[15]。其中AncientBuildingDAO中獲取所有古建筑文物信息關(guān)鍵偽代碼結(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ā)本案例進(jìn)行比較,實驗所得到的具體數(shù)據(jù)如表1所示。

        表1 2種解決方案應(yīng)用比較

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

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

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

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

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

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

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

        5 結(jié)束語

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

        參 考 文 獻(xiàn)

        [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技術(shù)的Java Web應(yīng)用開發(fā)[J].計算機工程與設(shè)計, 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ā)框架應(yīng)用研究[J]. 自動化技術(shù)與應(yīng)用,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應(yīng)用分層與開發(fā)框架設(shè)計研究[J].計算機工程, 2006,32(11):274-276.

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

        [12] 鄭佳佳,趙軍. 滁州市不可移動文物管理信息系統(tǒng)設(shè)計和實現(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服務(wù)與Ajax整合的中間件實現(xiàn)研究[J]. 計算機應(yīng)用與軟件, 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].西安:西安電子科技大學(xué), 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.

        猜你喜歡
        配置文件古建筑架構(gòu)
        基于FPGA的RNN硬件加速架構(gòu)
        提示用戶配置文件錯誤 這樣解決
        功能架構(gòu)在電子電氣架構(gòu)開發(fā)中的應(yīng)用和實踐
        汽車工程(2021年12期)2021-03-08 02:34:30
        古建筑取名有什么講究
        搭建簡單的Kubernetes集群
        互不干涉混用Chromium Edge
        忘記ESXi主機root密碼怎么辦
        中國古建筑
        視野(2018年18期)2018-09-26 02:47:52
        LSN DCI EVPN VxLAN組網(wǎng)架構(gòu)研究及實現(xiàn)
        山西古建筑修葺與保護
        文物季刊(2017年1期)2017-02-10 13:51:01
        亚洲va无码手机在线电影| 亚洲国产av高清一区二区三区| 久久精品国产亚洲av四叶草| 全免费a敌肛交毛片免费| 欧美大香线蕉线伊人久久| 亚洲人成网站18男男| 亚洲熟女熟妇另类中文| 久久亚洲色一区二区三区| 亚洲爱婷婷色婷婷五月| yy111111少妇影院| 国产色av一区二区三区| 国产午夜手机精彩视频| 四虎成人精品无码永久在线| 漂亮的小少妇诱惑内射系列| 少妇太爽了在线观看免费| 久久99精品久久久久久9蜜桃| 亚洲一区二区三区在线网站| 久久中文字幕av第二页| 色佬精品免费在线视频| 人妻精品动漫h无码网站| 日韩精品网| 日本午夜理论一区二区在线观看| 国产精品日本一区二区在线播放| 久久久久久成人毛片免费看| 欧美丝袜秘书在线一区| 白白色发布的在线视频| 亚洲另类欧美综合久久图片区 | 无码人妻少妇久久中文字幕蜜桃| 久久国产成人精品国产成人亚洲| 国产高潮精品一区二区三区av | 亚洲乱码av乱码国产精品| 狼人香蕉香蕉在线28 - 百度| 中文字幕亚洲综合久久菠萝蜜 | 国产女同va一区二区三区| 在线看片免费人成视频久网下载| 综合无码一区二区三区四区五区| 午夜宅男成人影院香蕉狠狠爱| 中国少妇×xxxx性裸交| 中文字幕无线码中文字幕| 亚洲av套图一区二区| 一个少妇的淫片免费看|