1. 程式人生 > >spring(四) 手動整合web項目(SSH)

spring(四) 手動整合web項目(SSH)

log4 height current and cfg.xml web pen 總結 對象

      清楚了spring的IOC 和 AOP,最後一篇就來整合SSH框架把,記錄下來,以後應該會用的到。

                    --WH

一、web項目中如何使用spring?

      當tomcat啟動時,就應該加載spring的配置文件,而不是每次都要手動使用new ClassPathXmlApplicationContext來加載xml。所以,spring提供了一個ContextLoaderListener。有了它,tomcat啟動時,就會加載配置文件。

      導入spring.web....jar

          技術分享

      1、web.xml中添加監聽器

          技術分享

技術分享 View Code

        這樣配置的監聽器,默認加載的是WEB-INF目錄下的xml文件,而我們的配置文件在src下,所以需要進行下一步的配置。

      2、web.xml中配置 applicationContext.xml 位置

          技術分享

技術分享 View Code

      3、從ServletContext中獲得spring容器,創建的容器已經放在ServletContext中了

          技術分享  

技術分享 View Code

          

二、SSH整合所用到的jar包

      2.1、struts2所需jar

        版本:2.3.15.1

        位置:struts-2.3.15.1\apps\struts2-blank\WEB-INF\lib

            技術分享

          總共:13個jar包        

      2.2、hibernate

          版本:3.6.10

          所需jar

              1、核心jar:hibernate3.jar

                  技術分享

              2、必須:lib/required 所有

                  技術分享

              3、jpa :lib\jpa 所有

                  技術分享

              4、c3p0 \lib\optional\c3p0

                  技術分享

              5、 log4j 整合jar  slf4j-log4j12-1.7.2.jar

                  技術分享

              6、mysql驅動包  mysql-connector-java-5.1.22-bin.jar

                   技術分享

              7、二級緩存  ehcache-1.5.0.jar 、backport-util-concurrent.jar 原本要導3個,logging包在前面struts包中有了,所以無需在導入

                    技術分享              

           hibernate總共:13個jar包

      2.3、spring

          版本:3.2.0

          jar包:

             核心:4個(core、beans、expression、context) + commons-logging..jar(這個jar包在前面很多地方導入過,struts2、hibernate的二級緩存、spring都需要,只需要導一份即可)

                  技術分享

              aop:aop聯盟、spring aop、aspectj、spring-aspect

                  aop聯盟:spring-framework-3.0.2.RELEASE-dependencies\org.aopalliance\com.springsource.org.aopalliance\1.0.0

                  spring aop和spring-aspect:在核心包中

                  aspectj:spring-framework-3.0.2.RELEASE-dependencies\org.aspectj\com.springsource.org.aspectj.weaver\1.6.8.RELEASE     

              jdbc:2個 spring-jdbc、spring-tx

              web:1個 spring-web

              test:1個 spring-test (整合測試)

          總共:12個

      2.4、整合jar

          spring3 整合hibernate3,spring提供整合jar : spring-orm...jar

          struts2 整合 spring3 ,struts提供整合jar:struts2-spring-plugin-2.3.15.1.jar

              位置:struts-2.3.15.1\lib

          總共:2個

        

      2.5、整理jar

          前面拿到總共39個,去除一個重復的,剩下總共38個。

                技術分享

          

三、配置文件

      3.1、hibernate

          hibernate.cfg.xml  核心配置文件

          *.hbm.xml 映射文件(domain)

      3.2、spring

          applicationContext.xml

          jdbcInfo.properties

          web.xml(ContextLoaderListener)

      3.3、struts2

          struts.xml

          web.xml(前端過濾器  StrutsPrepareAndExecuteFilter)

      

四、spring整合hibernate

      4.1、首先要了解hibernate的配置文件,和hibernate需要什麽,然後如何將其讓spring來管理。

          hibernate.cfg.xml

            技術分享

            技術分享

        通過這兩個圖,可以知道,spring需要幫hibernate獲取session,而獲取session則先要獲得sessionFactory,獲取sessionFactory則需要加載配置文件。所以spring就需要提供兩個東西,一個sessionFactory,一個session。spring如何做的呢?

            技術分享

技術分享 View Code

        使用:

            技術分享 

        這樣一來,就可以將hibernte.cfg.xml給刪除掉了。

        還有一個問題,事務的處理。

        簡單,之前一篇文章我們就講解了spring如何進行事務管理的,那時候使用的是jdbc管理器,現在換一個即可,使用hibernate事務管理器

            技術分享

        所以整合完hibernate後,spring的配置文件就成了這樣

技術分享 View Code

      總結:其實非常簡單,一開始整合肯定毫無頭緒,不知道從哪裏下手,那麽就先將一個最簡單的hibernate操作對象的小demo寫出來,看看hibernate需要什麽,然後spring就配置什麽,給什麽。這樣就簡單明了了。

五、struts2整合spring

      5.1、struts2自己創建action。而不用spring幫我們創建

          struts.xml

              技術分享       

          action中userService對象的創建就需要讓spring幫我們創建

              技術分享    

          applicationContext.xml

              技術分享

          這樣,就可以了。

      

      5.2、spring幫我們創建action,struts2什麽也不用做了。‘

            前提:需要導入struts-spring-plugin...jar

          技術分享

      全部整合完後的applicationContext.xml

技術分享 View Code

六、總結

      那麽到這裏,手動整合ssh就結束了,其實非常簡單,一步步來,從導包到整合hibernate在整合struts的步驟進行,那麽就可以成功整合了,上面所有的我都沒有采用接口編程,為了方便,日後註意一下這點即可。非常簡單。

      但是在整合hibernate時,我們的你domain都映射文件都是自己手動編寫的,實際開發中肯定不需要一個個手動編寫,因為是先有數據庫,然後在來寫你domain,所以之後會說到通過反轉引擎根據數據庫中的表來創建domain和映射文件。

        

spring(四) 手動整合web項目(SSH)