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

        ?

        基于開源組合框架構(gòu)建企業(yè)級Web應(yīng)用系統(tǒng)研究

        2008-12-31 00:00:00何寒暉
        電腦知識與技術(shù) 2008年16期

        摘要:主要研究了如何整合當(dāng)前比較流行的基于MVC模式的Struts開源框架、基于IoC模式的Spring開源框架和基于ORM模式的Hibernate開源框架來共同構(gòu)建企業(yè)級的Web應(yīng)用,為企業(yè)級Web應(yīng)用提供了一種輕量級J2EE解決方案。通過一個實際的項目案例展示了如何基于開源組合框架進(jìn)行實際的企業(yè)級Web應(yīng)用開發(fā)。

        關(guān)鍵詞:企業(yè)級Web應(yīng)用;開源;框架;J2EE

        中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)16-21252-03

        The Research of the Construction of Enterprise Web Application System Based on Integration of Open Source Frameworks

        HE Han-hui1, DING Yong2

        (1.Zhejiang Medical College,Hangzhou 310053,China;2.Dept of information technology,Zhejiang Institute of Economic Technology,Hangzhou 310018,China)

        Abstract:This thesis did research on how to combine three open source frameworks (Struts framework based on MVC model, Spring framework based on IoC model and Hibernate framework based on ORM model), which are widely used currently, to construct Enterprise Web Application. It provides a lightweight solution of J2EE for Enterprise Web Application. In the end of the thesis, a project is implemented by the application of the integration of open source frameworks.

        Key words:Enterprise Web Application;Open Source;Frameworks;J2EE

        1 引言

        MVC(Model View Controller的縮寫)是一種常用的設(shè)計模式,它有效地減弱了業(yè)務(wù)邏輯接口和數(shù)據(jù)接口之間的耦合,提高了軟件的可擴(kuò)展性、可維護(hù)性。Struts+Spring+Hibernate開源組合框架為開發(fā)基于J2EE的企業(yè)級Web應(yīng)用提供了一種輕量級解決方案。它不僅實現(xiàn)了視圖、控制器與模型的徹底分離,而且還實現(xiàn)了業(yè)務(wù)邏輯層與持久層的分離。而且由于不同層之間耦合度小,有利于團(tuán)隊成員并行工作,大大提高了開發(fā)效率。本文通過我們?yōu)檎憬贾菽持b公司開發(fā)的一個較為大型的進(jìn)銷存系統(tǒng)展示了如何進(jìn)行基于SSH框架的Web應(yīng)用開發(fā)。

        2 MVC設(shè)計模式

        MVC即Model-View-Controller的縮寫,MVC設(shè)計模式將應(yīng)用程序進(jìn)行了分層,視圖和模型通過控制器連接,從而減少了用戶界面和業(yè)務(wù)邏輯之間的耦合,使程序設(shè)計更加清晰、靈活,也提高了軟件的可擴(kuò)展性、可維護(hù)性。MVC的工作原理,如圖1所示。

        圖1 MVC模型

        2.1 視圖(View)

        視圖提供了用戶界面,是用戶和應(yīng)用程序的交互的窗口,既接受用戶輸入,也把模型數(shù)據(jù)狀態(tài)顯示給用戶,但是視圖不負(fù)責(zé)任何業(yè)務(wù)邏輯處理,僅僅是將用戶輸入數(shù)據(jù)傳遞給控制器或?qū)⒛P蛿?shù)據(jù)顯示給用戶。

        2.2 控制器(Controller)

        控制器連接了模型和視圖,根據(jù)用戶請求判斷將請求交給哪個模型來完成,然后調(diào)用視圖來顯示模型處理后的用戶請求結(jié)果。

        2.3 模型(Model)

        模型封裝了用戶數(shù)據(jù)和處理數(shù)據(jù)的業(yè)務(wù)邏輯,體現(xiàn)了應(yīng)用程序的當(dāng)前狀態(tài),而且可以將用戶數(shù)據(jù)狀態(tài)的變化提供給多個顯示該數(shù)據(jù)的視圖共用。模型是應(yīng)用程序的核心。

        3 開源框架

        3.1 Struts開源框架

        Struts框架主要分為模型(Model)、視圖(Viewer)和控制器(Controller)三部分,其主要的設(shè)計理念是通過控制器實現(xiàn)表現(xiàn)邏輯和業(yè)務(wù)邏輯松耦合,從而提高系統(tǒng)的可重用性、可擴(kuò)展性和可維護(hù)性。

        3.1.1 Struts中的視圖(View)

        Struts構(gòu)架主要采用了JSP作為視圖的實現(xiàn)。Struts自身包含了一組標(biāo)記庫(TagLib),這也是Struts的精華之一,靈活運用它們可以簡化JSP頁面的代碼,提高開發(fā)效率。而且引入了ActionForm組件(實質(zhì)為JavaBean)作為用戶表單的封裝來完成數(shù)據(jù)的傳輸。

        3.1.2 Struts中的控制器(Controller)

        Struts框架中采用了ActionServlet和Action類以及Struts-config.XML配置文件作為控制器的實現(xiàn)。當(dāng)用戶提出請求,ActionServlet類最先對請求進(jìn)行處理,它將根據(jù)Struts-config.xml配置文件將用戶請求映射到具體的Action類;而當(dāng)Action類調(diào)用模型組件處理好用戶請求,并返回了處理結(jié)果后,仍然由ActionServlet類根據(jù)Struts-config.xml配置文件將結(jié)果轉(zhuǎn)發(fā)到視圖提供給用戶,或者轉(zhuǎn)發(fā)另外一個Action做進(jìn)一步處理。

        3.1.3 Struts中的模型(Model)

        模型以一個或多個Java bean的形式存在。Struts沒有定義具體Model層的實現(xiàn),Model層通常是和業(yè)務(wù)邏輯緊密相關(guān)的,有持久化的要求。Struts框架實現(xiàn)了MVC設(shè)計模式,但是它是典型的表現(xiàn)層框架,對模型的實現(xiàn)是不足的,所以有必要引入其他架構(gòu)加強(qiáng)對模型的實現(xiàn)。這也就是說開發(fā)人員有更多自由來選擇合適量級的持久化技術(shù),比如Hibernate、EJB等等。

        3.2 Spring開源框架

        Spring是一個解決了許多J2EE開發(fā)中常見問題并能夠替代EJB技術(shù)的強(qiáng)大的輕量級框架。Spring框架的核心是控制翻轉(zhuǎn)IoC(Inversion of Control)/依賴注入DI(Dependence Injection)機(jī)制。IoC是指由容器中控制組件之間的關(guān)系而非傳統(tǒng)實現(xiàn)中由程序代碼直接操控,這種將控制權(quán)由程序代碼到外部容器的轉(zhuǎn)移,稱為“翻轉(zhuǎn)”。DI是對IoC更形象的解釋,即由容器在運行期間動態(tài)地將依賴關(guān)系注入到組件之中。Spring采用設(shè)值注入和構(gòu)造子注入的機(jī)制,通過配置文件管理組建的協(xié)作對象,創(chuàng)建可以構(gòu)造組件的IoC容器。Spring框架的結(jié)構(gòu)如圖2所示。

        Spring框架可以成為企業(yè)級應(yīng)用程序一站式的解決方案,同時它也是模塊化的框架,允許開發(fā)人員自由地挑選適合自己應(yīng)用的模塊進(jìn)行開發(fā)。Spring框架式是一個松耦合的框架,框架的部分耦合度被設(shè)計為最小,在各個層次上具體選用哪個框架取決于開發(fā)者的需要。

        3.3 數(shù)據(jù)持久層框架Hibernate

        O/R mapping技術(shù)是為了解決關(guān)系型數(shù)據(jù)庫和面向?qū)ο蟮某绦蛟O(shè)計之間不匹配的矛盾而產(chǎn)生的。Hibernate是目前最為流行的O/R mapping框架,它在關(guān)系型數(shù)據(jù)庫和Java對象之間做了一個自動映射,使得程序員可以以非常簡單的方式實現(xiàn)對數(shù)據(jù)庫的操作。Hibernate工作原理如圖3所示。

        圖2Spring 框架的結(jié)構(gòu) 圖3Hibernate工作原理

        Hibernate通過對JDBC的封裝,向程序員屏蔽了底層的數(shù)據(jù)庫操作,使程序員專注于OO程序的開發(fā),有助于提高開發(fā)效率。程序員訪問數(shù)據(jù)庫所需要做的就是為持久化對象編制xml映射文件。

        底層數(shù)據(jù)庫的改變只需要簡單地更改初始化配置文件(hibernate.cfg.xml或者h(yuǎn)ibernate.properties)即可,不會對應(yīng)用程序產(chǎn)生影響。

        Hibernate有自己的面向?qū)ο蟮牟樵冋Z言HQL,HQL功能強(qiáng)大,支持目前大部分主流的數(shù)據(jù)庫,如Oracle、DB2、MySQL、Microsoft SQL Server等,是目前應(yīng)用最廣泛的O/R映射工具。Hibernate為快速開發(fā)應(yīng)用程序提供了底層的支持。

        4 基于SSH組合框架的Web應(yīng)用開發(fā)實例

        下面將通過我們?yōu)檎憬贾菽持b公司所開發(fā)的一個大型的進(jìn)銷存系統(tǒng)來展示如何進(jìn)行基于SSH框架的Web應(yīng)用開發(fā)。由于本系統(tǒng)功能模塊較多、業(yè)務(wù)邏輯復(fù)雜,限于篇幅原因,下面我們將以“渠道管理模塊”為例來概要地說明系統(tǒng)的開發(fā)與實現(xiàn)過程。

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

        本系統(tǒng)的數(shù)據(jù)持久層由Hibernate實現(xiàn)。Hibernate通過映射(Mapping)文件將對象(Object)與關(guān)系型數(shù)據(jù)(Relational)相關(guān)聯(lián)。有了Java持久化類后就可以在此基礎(chǔ)上實現(xiàn)數(shù)據(jù)訪問類。在Spring框架中,數(shù)據(jù)訪問類可以從輔助類HibernateDaoSupport繼承,這極大地方便了Hibernate框架在Spring中的使用,相應(yīng)的部分代碼如下:

        public class ChannelDAO extends HibernateDaoSupport {

        private static final Log log = LogFactory.getLog(ChannelinfoDAO.class);

        // property constants

        ……

        public void save(Channelinfo transientInstance) {

        log.debug(\"saving Channelinfo instance\");

        try {

        getHibernateTemplate().save(transientInstance);

        log.debug(\"save successful\");

        } catch (RuntimeException re) {

        log.error(\"save failed\", re);

        throw re;

        }}

        ……

        }

        4.2 業(yè)務(wù)邏輯層的實現(xiàn)

        業(yè)務(wù)邏輯層由Spring框架支持。由于數(shù)據(jù)持久層實現(xiàn)了Java持久化類并且封裝了數(shù)據(jù)訪問對象(DAO),因此可以在Model組件中方便地調(diào)用DAO組件來存取數(shù)據(jù)。Spring的IoC容器負(fù)責(zé)統(tǒng)一管理Model組件和DAO組件以及Spring所提供的事務(wù)處理、緩沖連接池等服務(wù)組件。

        在用戶管理模塊中,通過業(yè)務(wù)建模創(chuàng)建了用戶模型ChannelService類,封裝了對用戶的權(quán)限管理以及積分管理等功能。ChannelService類通過調(diào)用數(shù)據(jù)訪問類ChannelDao實現(xiàn)對用戶數(shù)據(jù)的操作。這些組件的關(guān)系將通過配置Spring框架的applicationContext.xml聯(lián)系起來,配置文件的主要內(nèi)容如下:

        <!-- ===創(chuàng)建業(yè)務(wù)模型組件ChannelService,并調(diào)用ChannelDao組件作為協(xié)作對象=== -->

        < bean id= \"ChannelService\" class= \"com.ebcss.hibernate.ChannelService\">

        <property name= \"ChannelDao\"> ref local= \"ChannelDao\"/> </property >

        <bean>

        <!--===創(chuàng)建數(shù)據(jù)訪問組件ChannelDao,并調(diào)用Hibernate的Session工廠作為協(xié)作對象===-->

        < bean id= \" ChannelDao \" class= \" com.ebcss.hibernate.dao.ChannelDao \">

        <property name= \" SessionFactory \"> ref local= \" SessionFactory \"/> </property >

        <bean>

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

        表示層結(jié)合JSP和Struts的TagLib庫處理顯示功能,利用ActionServlet將請求(*.do)映射到相應(yīng)的Action,并由Action調(diào)用業(yè)務(wù)邏輯的服務(wù)組件,然后根據(jù)處理結(jié)果跳轉(zhuǎn)到Forward對象指定的響應(yīng)頁面。

        業(yè)務(wù)流程的部署由struts-config.xml完成。下面以一個顯示所有渠道信息的請求(ListChannel.do)為例來說明配置文件的使用。

        <!- 請求調(diào)用ListChannelAction,并根據(jù)返回的Forward對象的狀態(tài)來轉(zhuǎn)到相應(yīng)的頁面-->

        <struts-config>

        <form-beans> <form-bean name=\"channelForm\" type=\"com.ebcss.struts.form.ChannelForm\"/>

        </form-beans>

        <action-mappings>

        <action path = \"/ListChannel.do\"

        type= \" com.ebcss.hibernate.action.ListChannelAction \"

        name= \"channelForm\"

        scope = \"request\"

        validate = \"true\"

        input= \"/index.jsp\"

        <forward name=\"Success\" path=\"/successListChannel.jsp\" />

        <forward name=\"Failure\" path=\"/error.jsp\" />

        </action>

        </action-mappings>

        <message-resources parameter=\"com.ebcss.struts.applicationResources\"/>

        </struts-config>

        一個好的架構(gòu)可以避免重復(fù)設(shè)計,減少開發(fā)風(fēng)險,增強(qiáng)軟件的可擴(kuò)展性、可維護(hù)性及可移植性,提高軟件質(zhì)量和性能效率。本文通過整合Struts+Spring+Hibernate開源框架,提出了一種利用輕量級開源框架來快速搭建Web應(yīng)用的解決方案,并且通過其在實際項目中的應(yīng)用,證明了采用此方案可以幫助開發(fā)人員在短時間內(nèi)建立結(jié)構(gòu)清晰、可重用性好、維護(hù)擴(kuò)展方便的Web應(yīng)用程序。

        參考文獻(xiàn):

        [1] JOHNSON R,HOELLER J,ARENDSEN A,et al.Java/J2EE application framework reference document V1.1[M].2004.

        [2] CRAIG WALLS,RYAN BREIDENBACH.Spring in Action[M].2005.

        [3] Matt Raibler.Spring Live[S].SourceBeat,LLC,2004.

        [4] 夏昕,曹曉鋼,唐勇.深入淺出Hibernate[M].北京:電子工業(yè)出版社,2005.

        [5] 孫衛(wèi)琴.精通Struts:基于MVC的Java Web設(shè)計與開發(fā)[M].北京:電子工業(yè)出版社,2004.

        注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。

        WWW拍拍拍| 久久久久国色av∨免费看| 精品久久有码中文字幕| 久久国产成人精品av| 久久久久人妻精品一区三寸| 中文 在线 日韩 亚洲 欧美| 欧美黑吊大战白妞| 久久久久亚洲av无码专区体验| 国产精品露脸视频观看| 免费a级毛片无码a∨免费| 91蜜桃精品一区二区三区毛片| 青青草免费视频一区二区| 亚洲岛国一区二区三区| 三级黄色片免费久久久| 国产亚洲精品美女久久久m| 国产在线精品一区二区中文| 国产亚洲精品久久久ai换| 永久免费无码av在线网站| 亚洲熟妇色xxxxx欧美老妇| 亚洲电影久久久久久久9999| 日韩熟女一区二区三区| 99亚洲女人私处高清视频| 性感女教师在线免费观看| 日韩国产人妻一区二区三区| 中文字幕日韩一区二区不卡| 国产精品美女久久久久久久久| 国产久视频国内精品999| 亚洲中文字幕巨乳人妻| 一区二区视频网站在线观看| 国产一区二区三区男人吃奶| 国产av91在线播放| 澳门精品一区二区三区| 青青草视频是针对华人| 丝袜美腿亚洲一区二区| 天堂新版在线资源| 精品第一页| 亚欧免费无码AⅤ在线观看| 中文字幕文字幕一区二区| 亚洲av永久无码精品一福利| 亚洲人成网7777777国产 | 天天天综合网|