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和映射文件。

相关文章
相关标签/搜索