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

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

                    --WHjava

1、web項目中如何使用spring?mysql

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

      導入spring.web....jarspring

          

      一、web.xml中添加監聽器sql

          

 View Code

        這樣配置的監聽器,默認加載的是WEB-INF目錄下的xml文件,而咱們的配置文件在src下,因此須要進行下一步的配置。數據庫

      二、web.xml中配置 applicationContext.xml 位置express

          

 View Code

      三、從ServletContext中得到spring容器,建立的容器已經放在ServletContext中了編程

            

 View Code

 

          

2、SSH整合所用到的jar包緩存

      2.一、struts2所需jar

        版本:2.3.15.1

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

            

          總共:13個jar包        

 

      2.二、hibernate

          版本:3.6.10

          所需jar

              一、核心jar:hibernate3.jar

                  

              二、必須:lib/required 全部

                  

              三、jpa :lib\jpa 全部

                  

              四、c3p0 \lib\optional\c3p0

                  

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

                  

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

                   

              七、二級緩存  ehcache-1.5.0.jar  、backport-util-concurrent.jar 本來要導3個,logging包在前面struts包中有了,因此無需在導入

                                  

           hibernate總共:13個jar包

      2.三、spring

          版本:3.2.0

          jar包:

             核心:4個(core、beans、expression、context) + commons-logging..jar(這個jar包在前面不少地方導入過,struts二、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.四、整合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.五、整理jar

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

                

          

3、配置文件

      3.一、hibernate

          hibernate.cfg.xml  核心配置文件

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

      3.二、spring

          applicationContext.xml

          jdbcInfo.properties

          web.xml(ContextLoaderListener)

      3.三、struts2

          struts.xml

          web.xml(前端過濾器  StrutsPrepareAndExecuteFilter)

      

4、spring整合hibernate

       4.一、首先要了解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就配置什麼,給什麼。這樣就簡單明瞭了。

 

5、struts2整合spring

      5.一、struts2本身建立action。而不用spring幫咱們建立

          struts.xml

                     

          action中userService對象的建立就須要讓spring幫咱們建立

                  

          applicationContext.xml

              

          這樣,就能夠了。

      

      5.二、spring幫咱們建立action,struts2什麼也不用作了。‘

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

          

 

      所有整合完後的applicationContext.xml

 View Code

 

 

 

6、總結

       那麼到這裏,手動整合ssh就結束了,其實很是簡單,一步步來,從導包到整合hibernate在整合struts的步驟進行,那麼就能夠成功整合了,上面全部的我都沒有采用接口編程,爲了方便,往後注意一下這點便可。很是簡單。

      可是在整合hibernate時,咱們的你domain都映射文件都是本身手動編寫的,實際開發中確定不須要一個個手動編寫,由於是先有數據庫,而後在來寫你domain,因此以後會說到經過反轉引擎根據數據庫中的表來建立domain和映射文件。

相關文章
相關標籤/搜索