spring(四) 手動整合web項目(SSH)
清楚了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)