近日学习了ssh2的整合,整合过程觉得蛮好玩的,所以写下这个ssh2的整合文档.
什么叫整合,在我自己看来,就是融合,先后将三个(struts2/spring/hibernate)框架配置到一个容器中,将各自的功能融合在一起。(算是自己顾名思义的一点小定义吧)
整合过程中,三个框架的整合没有先后顺序,这里先从struts2开始。
下面开始整合过程。
1.整合struts2
a. 导入jar包(struts的空项目下的所有jar包struts-2.3.3-all\struts-2.3.3\apps\struts2-blank\WEB-INF\lib)
此外同时要加入struts2-spring-plugin-**.jar这个jar包
路径为:struts-2.3.3-all\struts-2.3.3\lib
b.struts2的配置文件(struts-2.3.3-all\struts-2.3.3\apps\struts2-blank\WEB-INF\classes\struts.xml)
粘贴复制到web工程的src目录下
删掉不必要的,留下package属性,然后加入常量struts.objectFactory的配置默认是spring。
将Struts2的核心配置文件(web.xml)里面的过滤器复制到web工程下的web.xml里面
2. 整合hibernate
a.导jar包
核心jar包hibernate3.jar,
Required下的所有jar包
Jpa下的一个jar包
跟日志相关的log4j-1.2.16.jar、slf4j-log4j12-1.7.2jar
数据库的驱动mysql-connector.java-3.1.12-bin.jar
b.hibernate的配置文件
hibernate.cfg.xml(跟数据库有关)和log4j.properties(日志相关)
3.整合spring
a.导入jar包
spring核心jar包spring.jar
与aspectj相关(两个)
和cjlib相关
dom4j
雅加达相关commons-logging.jar
j2ee
如果使用了注解,还需要下列jar文件
lib\j2ee\common-annotations.jar
b.核心配置文件
applicationContext-beans.xml()
applicationContext-tx.xml(事务管理)
c.启动spring的生命周期
web.xml文件中加入启动spring框架的配置
<context-param>
<param-name>contextConfigLocation</param-name>
<!-- 这里可以添加多个配置文件,以‘,’隔开 -->
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
4.解决web项目中session延迟加载问题的配置
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意:这个filter的配置要求放在struts2的核心Filter配置之前
5.配置过滤器解决中文乱码问题(放在步骤4放的位置之前)
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
6.配置数据源
在spring2.5中提供了名为c3p0-0.9.1.2.jar的jar包
将数据源的文件配置到applicationContext-ds.xml中
<beanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource"destroy-method="close">
<propertyname="driverClass" value="com.mysql.jdbc.Driver"/>
<propertyname="jdbcUrl"value="jdbc:mysql://localhost:3306/ssh2012?useUnicode=true&characterEncoding=UTF-8"/>
<propertyname="user" value="root"/>
<propertyname="password" value="123456"/>
<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<propertyname="initialPoolSize" value="1"/>
<!--连接池中保留的最小连接数。-->
<propertyname="minPoolSize" value="1"/>
<!--连接池中保留的最大连接数。Default: 15 -->
<propertyname="maxPoolSize" value="300"/>
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<propertyname="maxIdleTime" value="60"/>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<propertyname="acquireIncrement" value="5"/>
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<propertyname="idleConnectionTestPeriod" value="60"/>
</bean>
7.将hibernate的一些属性配置到applicationContext-tx.xml中。
这个视具体情况配置。不做赘述。
即配置hibernate的sessionFactory
至此,整合完成。部署工程,启动服务器,没错误,整合成功!