<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    SSH整合--基于Struts+Spring+Hibernate的使用和部署

    基于Struts+Spring+Hibernate的使用和部署

    課題說明:   就現在WEB開發而言,J2EE企業級開發技術比較成熟,開發模式模式也比較繁多,較流行開發模式MVC更是普遍,而基于MVC模式開發的框架也是種類繁多,現在使用最多的可能就是SSH這三種框架,所以展開對這三個框架的糅合使用和淺顯的研究探討。還有由于過去常用的是TomCat的部署和使用,下來學習WebLogic的部署,比較其相同點和不同點。

    研究內容:   主要是研究討論SSH這三種開源框架的糅合使用到底是怎樣實現方法和策略,及各自的優缺點,對以后Domino技術和J2EE技術結合奠定基礎及WebLogic的部署和TomCat的比較。

    需要注意:

    第一:環境的配置,因為SSH使用到的是三種基于java語言實現的開源框架,所以基本要先把JRE配置好即安裝JDK(6.0).

    第二:配置好Struts ,Spring ,Hibernate這三個開源框架的開發環境配置。鑒于簡單起見可以使用MyEclipse6.0 IDE這樣三種開源框架的配置文件IDE已經集成好,直接添加就可以是要用。

    第三:開發使用的部署工具是Tomcat,可以嘗試使用WebLogic,然后對其比較。

    成果方式:

    一:Struts的基礎介紹。

     1: 介紹Struts

    Struts是目前WEB開發中比較流行的一種開源框架,它主要是采用ServletJSP技術實現Model2(Servlet+JSP+JavaBean)類型MVC的設計模式,即是實現 模型-視圖-控制三部分模塊的分離。

    2StrutsMVC的比較

    Struts

    MVC

    M

    JavaBean(業務數據),

    Service Class(業務邏輯)

    M模型

    V

    JSP(動態網頁)

    ActionForm(表單數據操作)

    V視圖

    C

    ActionServlet(接受頁面請求),

    Action(處理請求;控制流程),

    struts-config.xml(配置參數)

    C控制部分

    3Struts的基本工作流程

     基本流程:

    (1):WEB啟動,初始化ActionServlet,讀取struts-config.xml的配置信息,作準備。

    (2):用戶發出一個請求,ActionServlet接受,根據ActionMapping查找相應的Action。

    (3):Action調用JavaBean,并且結合ActionForm,處理數據。

    (4):處理完成后,返回ActionForward,指定轉向的地方。

    二:Spring基礎介紹

    1: 介紹Spring

    Spring框架也是一個開源框架,它的核心概念是依賴注入(Dependency Injection),通過依賴注入機制,可以再運行期間將組件之間的依賴關系由Spring容器注入組件,同時spring框架還提供AOP開發以及事務管理的組件,以及對WEB層和持久層的支持,從而可以很好配合StrutsHibernate框架。

    2Spring框架的組建構成

      Spring框架大體由七個模塊構成:

    A Core模塊。該模塊是其他模塊的功能基礎,在這個模塊中存在BeanFactory類,它是Spring框架的核心,它實現依賴注入,是系統中的各組件的一倆關系從代碼中獨立出來,通過配置文件來實現;BeanFactory也是Spring框架的核心容器,因為他管理容器中對象的生命周期。

    B Context模塊。這個模塊是通過配置文件將各個組件組合在一起,使spring成為框架。其中ApplicationContext類擴展繼承BeanFactory的功能,因此它也可以成為Spring容器。此外該模塊還提供其他的服務。

    C DAO模塊。這個模塊把JDBC代碼中的一些內容抽象出來,簡化JDBC編碼。

    D ORM模塊。這個模塊提供對ORM框架的支持,從而可以擴展Spring框架支持ORM框架。

    E AOP模塊。這個模塊提供AOP(面向切面編程)的功能,通過這個模塊可以將通用功能插入到業務邏輯中。

    FWEB模塊。此模塊提供WEB應用所需要的上下文,可以與Struts等框架相結合。

    GWEBmvc模塊,它提供面向WEB應用的MVC模式,模塊利用依賴注入將控制部分和業務邏輯清晰分離。

    3:理解依賴注入和方式

         依賴注入也就是控制反轉(IoC),把組件之間的依賴關系通過Spring容器來管理和注入。

    組件之間的依賴關系通過配置文件來定義,或者說通過注入來實現的。

    A:配置WebApplicationContext

       兩種方式:

           (1):在web.xml文件中配置WebApplicationContext ,就可以在WEB容器自動加載applicationContext.xml文件,具體的配置方法有兩種:

    a:利用Servlet接口來實現

    具體代碼:

         <context-param>

             <param-name>contextConfigLocation</param-value>

             <param-value>/WEB-INF/applicationContext.xml</param-value>

         </context-param>

         <servlet>

            <servlet-name>context</servlet-name>

    <servlet-class>org.springframework.web.context.ContextLoaderServlet

    </servlet-class>

            <load-on-startup>1</load-on-startup>

         </servlet>

    b:利用Listeners接口來實現

    具體代碼:

    <listener>

     <listener-class>

    org.springframework.web.context.ContextLoaderListener

    </listener-class>

    </listerer>

         <context-param>

             <param-name>contextConfigLocation</param-value>

             <param-value>/WEB-INF/applicationContext.xml</param-value>

         </context-param>

    (2)Struts中實現Spring的插件集成

    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
                    
    <set-propert property="contextConfigLocation"

    value="/WEB-INF/applicationContext.xml"/>
              
    </plug-in>

    BSpringBean

    Bean的定義:

     1Bean的參數配置

              id bean的代號標示

              classBean的對應的類URL

              singleton設置是否為單態

              

    2Bean屬性的配置

           三種類型的Bean屬性配置:一般用<property>屬性來嵌入Bean的引用屬性

             a:基本數據類型     —— 通過<value>元素來表示

             b:其他Bean的引用 —— 通過<ref>元素來表示

             c:對集合的引用      —— 通過<list><set><map>

    3:依賴注入的兩種方式

             a:設置注入。

                   主要是在Bean中通過get()set()方法獲得相應的屬性,在配置文件中通過<property>元素來實現。

             B:構造函數注入。 

                   主要是在Bean中通過Bean的構造方法初始化相應的屬性,在配置文件中通過<constructor-arg>元素來實現。

    C:實例化Bean

          1BeanFactory的實例化

     

                 BeanFactory采用工廠模式實例化和分發Bean。BeanFactory接口路徑為:org.springframework.beans.factory.BeanFactory. 該接口定義4個方法:

               Boolean containsBean(String) 判斷給定的bean是否存在。

               Object getBeanString)返回給定名字的Bean實例。

               Object getBeanString,Class)返回給定名字的Bean,并把該Bean強制轉化為給定的Class類型。

                Boolean isSingleton(String) 判斷給定的名字Bean是否為單態。

    BeanFactory接口有多實現,其中常用的是org.springframework.beans.factory.XmlBeanFactory.

     使用方式:InputStream is=new FileInputStream(“applicationContext.xml”);

                     XmlBeanFactory factory=new XmlBeanFactory(is);

        sampleSpringBean sample=( sampleSpringBean) factory.getBean(“sampleSpringBean”);                

           2:ApplicationContext的實例化

     

                   BeanFactory適應于較為簡單的應用系統,對于復雜的應用系統應該使用ApplicationContext容器,它覆蓋BeanFactory的所有功能,而且提供更多的其他方法。

          ApplicationContext接口位于包org.springframework.context.ApplicationContext中,他繼承BeanFactory接口,它的實現有多個,常用的有3個:

       ClassPathXmlApplicationContext:利用類路徑裝載bean配置文件信息。

       FileSystemXmlApplicationContext:利用文件系統裝載bean配置文件的信息。

       XmlWebApplicationContext:從Web裝載bean配置文件的信息。

                 加載ApplicationContext容器:  

    可以通過兩種方式:

    1:編碼的方式——就是配置WebApplicationContext是講到的。

    2:硬編碼的方式。

    ApplicationContext context = new FileSystemXmlApplicationContext(“applicationContext.xml”)

    ApplicationContext實例化bean的使用方法

    ApplicationContext context= new FileSystemXmlApplicationContext(“applicationContext.xml”);

    sampleSpringBean sample=( sampleSpringBean) context.getBean(“sampleSpringBean”);

    三:StrutsSpring的集成

          Struts框架出現早,對MVC的設計技術比Spring成熟,但是Spring框架的依賴注入和AOP(面向切面),以及聲明事務管理方面優勢顯著,所以可以再業務邏輯方面使用它。

        StrutsSpring的集成實現方式也是比較多的,大體有三種方案:

      A:使用SpringActionSupport類集成Struts

         采用這種方式進行集成的方案是:    修改Struts中的Action,使StrutsAction繼承SpringActionSupport類,這樣Action中定義的業務邏輯對象就可以通過getBean()方法從Spring的配置文件中獲得,從而達到目的。 但是這也有缺點,就是StrutsActionSpring緊密的耦合在一起。

      B:使用SpringAction代理集成Struts

           采用這種方式進行集成的方案是:    需要建立一個SpringAction代理,代理StrutsAction,當Struts執行Action時候就會執行這個代理。代理會在Spring的配置文件中找到真正的StrutsAction,然后交友這個Action去處理,當然首先要在spring的配置文件中跑那個配置這個Action。                  這種集成只需要修改Actiontype屬性為 org.springframework.web.struts.DelegationActionProxy.并且SpringAction配置中的name屬性和StrutsAction配置path相同。       缺點是不容易找到是哪個Action處理的。

      C:修改struts控制器來集成Struts

           采用這種方式進行集成的方案是:   為拉直觀的的在Struts配置中顯示Action對應的處理類,需要修改Strutscontroller,將struts-config.xml中的controller改為org.springframework.web.struts.DelegatingRequestProcessor.

    四:Hibernate的介紹

         Hibernate利用ORM(對象關系映射)的機制解決業務邏輯和數據訪問的相分離的問題,Hibernate封裝數據訪問的細節,簡化數據訪問的復雜程度,把注意力主要在業務邏輯上面,同時通過維護ORM文件,簡單用以維護。

    1:對象持久化的概念

       由于實體域對象存在于內存中,但是不可能永遠存在,很多情況下把實體域對象永久的存儲在數據庫中,這個過程就是對象持久化。 其中被持久化的實體域對象稱為持久化對象,持久化對象對應的產生類稱為持久化類。

     傳統的持久化方法是: 創建連接,執行SQL語句,獲得結果集,關閉結果集,關閉數據庫連接。所以每次都要重復相同的過程,冗余太大。

    2ORM介紹

         ORM就是對象關系映射,主要目的是使業務邏輯和數據庫訪問相分離,ORM中間件封裝數據訪問的細節,開發者只需要進行簡單的操作就可以完成持久化工作。

         ORM的關鍵就是對象和關系的映射關系,因為有這樣的映射關系,所以才可以簡單的持久化對象。在ORM中,這種對應的關系存在于一個XML文件中,稱為對象關系映射文件,這個映射文件起到一個橋梁作用,使得ORM中間件持久化一個對系那個的時候能夠找到目的地,即就是表。

    3Hibernate簡介

    Hibernate就是一個ORM中間件,它是一個開源的框架,對JDBC做啦輕量級的封裝,并且支持主流數據庫,可以提高開發效率。

     AHibernate的核心接口

         Hibernate的核心接口一共五個:分別為Configuration,SessionFactory,SessionQueryCriteria接口,以及Transaction接口。

     1configuration接口主要功能:   它是Hibernate的入口,創建configuration對象主要是把Hibernate的配置文件和ORM文件讀到內存中,并且創建SessionFactory對象,把所有讀到的信息復制給SessionFactory。

     2SessionFactory接口主要功能:   它緩存復制到的所有讀到的信息,以及根據映射信息自動生成的SQL語句,并產生Session對象。一個數據庫只能對應一個SessionFactory。

     3session接口主要功能:          這個接口主要是定義各種持久化操作的方法,比如:Save()CreateQuery();Update();

     4QueryCriteria接口主要功能: 主要數據庫的查詢,HQL語句主要是面向對象的沒他的參數是持久化類的類名和屬性,SQL語句主要是表和字段。

     5Transaction接口的主要功能是:    對底層的數據事務進行封裝。

    BHibernate的配置文件

        Hibernate的配置文件有兩種類型:Hibernate.property ;Hibernate.cfg.xml,或者自定義配置文件。主要功能是配置數據庫連接的相關信息。

             兩種文件的區別是:

    1Hibernate.cfg.xml多個<mapping>元素,這個元素的resource屬性值是ORM文件的路徑。

    2:兩者同時存在時候,configuration接口線加載Hibernate.property 文件,在加載Hibernate.cfg.xml,然后Hibernate.cfg.xml的信息覆蓋掉Hibernate.property的信息。

         CHibernate的初始化過程

              Hibernate的初始化過程主要是遵循五個接口來實現:

            1:建立configuration對象。

                  Configuration config=new Configuration();

                  Config.addClass(持久化類);

           或者 Configuration config=new Configuration().configureHibernate配置文件URL);

            2:建立SessionFactory對象

                  SessionFactory factory=config.buildSessionFactory();

                  12步就完成Hibernate的初始化。

    3:建立Session對象

           Session session=factory.OpenSession();

            Session.save();

           接著就可以完成相關操作。

    DHibernate的一般實例使用。

        1:創建數據庫 2:寫相應的持久化類 3:建立ORM文件 

    4:建立Hibernate配置文件 5:建立數據庫訪問類DAO 6:建立業務邏輯

    五:SpringHibernate的集成策略

     通過對HibernateSpring的基本知識的了解和應用,了解到SpringHibernate的有點鮮明,所以實現兩者的整合對開發效率有很大的提高。

    A:集成方案:   SpringHibernate的集成方案有兩種:

     1:一種是利用Hibernate Synchronizer來自動生成大量數據訪問操作的方法。這些方法封裝了session對象的操作,開發者可以直接利用這些方法來定義DAO,這種DAOSpring是沒有耦合的。

     2:另一種方式是通過Spring提供的Hibernate模板(Hibernate Template)來訪問的。模板對session對象的操作進行啦封裝,在開發過程中可以直接使用模板的方法來實現數據的訪問,而且用戶不需要在定義和事物相關的語句,如開始,提交,回滾事物以及進行事務處理。但是這種方式HibernateSpring的耦合在一起,不利于移植。

    B:第一種方案的介紹

    Hibernate SynchronizerHibernate自帶的一種插件,利用它可以根據數據庫的表自動生成ORM文件,持久化類,DAO類,并且對其中任何一個修改,都可以相應的自動改變。從而提高開發效率。

    在這種集成方式中,Spring的配置文件ApplicationContext.xml文件是SpringHibernate結合的重要部分,它將應用中的各種依賴關系裝配起來,在運行期將這種依賴關系注入內存,還可以注入事務代理等,他就像是SpringHibernate結合的紐帶。

    C:第二種方案的介紹

    這種方案是利用Spring提供那個Hibernate Template來建立DAO類,并通過Spring配置文件將DAO類注入到應用中。

    SpringHibernateDAO提供支持,其中Spring提供的Hibernate Template類以及HibernateDaoSupport類是建立DAO時候用到的兩個類。

    1Hibernate模板類介紹

       Hibernate模板類存在于包org.springframework.orm.hibernate3下,它提供很多方法完成基本的操作??梢酝瓿纱蠖鄶?/span>DAO的基本方法。

    利用Hibernate的自帶的一下方法可以實現簡單的一些數據庫操作,但隨對于復雜的數據庫操作,可以通過下面的方法來實現:

     aObject execute(HibernateCallback  action)

     bList executeFind(HibernateCallback action)

     從上面的方法中可以看到,都有一個HibernateCallback的實例作為參數,因為通過HibernateCallback可以完成完全使用Hibernate的方式訪問數據庫,解決SpringHibernate集成以后不靈活的缺陷。

    HibernateCallback只是一個接口,他只有一個方法doInHibernateorg.hibernate.Session session,這個方法也只有一個參數Session。這樣doInHibernate方法的持久化操作與不使用Spring時的操作完全相同,這樣就可以像使用Hibernate一樣的訪問方式。

    使用方法:首先DAO中聲明HibernateTemplate對象,然后通過該對象執行那個相應的簡單操作。

    2 HibernateDaoSupport

        HibernateDaoSupport類封裝Hibernate Template類的操作,在HibernateDaoSupport類中主要提供兩個方法用于實現DAO。

    Apublic final void setSessionFactory(SessionFactory sessionFactory):這個方法用于接收Spring上下文中的SessionFactory對象的依賴注入。

    BPublic final HibernateTemplate getHibernateTemplate():用于根據SessionFactory產生的session,然后生成HibernateTemplate,從而訪問數據庫。

    使用方法:在DAO的實現中,首先要使DAO集成HibernateDaoSupport類,然后通過Spring上下文注入DAOSessionFactory的依賴,最后使用getHibernateTemplate()方法來完成具體的DAO的操作。

    posted on 2011-03-25 17:08 Mr.lu 閱讀(795) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(2)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 希望影院高清免费观看视频| 国产又黄又爽胸又大免费视频| 性xxxxx大片免费视频| 国产亚洲情侣一区二区无| 免费人成视频在线观看免费| 国产一级淫片a免费播放口之 | 久久久免费的精品| 亚洲精品蜜桃久久久久久| yellow视频免费看| 亚洲中文字幕久久精品无码喷水| 一级做a爰全过程免费视频毛片| 亚洲人成电影在线播放| 国产免费久久久久久无码| 中文字幕亚洲乱码熟女一区二区| XXX2高清在线观看免费视频| 亚洲中文字幕无码中文字在线| 国产高清视频免费在线观看| 亚洲日韩中文无码久久| 久久国产精品免费视频| 亚洲精品日韩中文字幕久久久| 成年黄网站色大免费全看| 亚洲综合成人婷婷五月网址| 又粗又硬又大又爽免费视频播放| 一级毛片免费在线| 久久久久久亚洲av成人无码国产| 毛片免费全部播放无码| 国产精品亚洲综合久久| 男人的天堂亚洲一区二区三区| 亚洲AV无码一区二区三区久久精品 | 亚洲美女大bbbbbbbbb| 最近中文字幕无吗免费高清| 国产成人亚洲午夜电影| 亚洲国产精品成人精品无码区| 最近免费中文在线视频| 亚洲丶国产丶欧美一区二区三区 | 亚洲gv猛男gv无码男同短文| 亚洲电影在线免费观看| 久久亚洲精品11p| 亚洲三级电影网址| 国产一区二区三区在线免费| 免费成人在线电影|