Struts2 Hibernate Spring 整合的基本流程和步骤及其相关配置细节

配置Hibernate环境

1、 把Hibernate的相关jar包复制到lib目录下:

① HIBERNATE_HOME/lib 下的相关的依赖的第三方包 ② HIBERNATE_HOME/hibernate3.jar Hibernate的核心实现 ③ 引入入相关的JDBC驱动

2、 在src目录下创建相关的配置文件:hibernate.cfg.xml 可以从以下目录中拷贝过来修改:

HIBERNATE_HOME \etc\ hibernate.properties 旧版本的Hibernate实用的核心配置文件,这个文件列举了相关的Hibernate配置,在配置文件时可以参考该文件。 HIBERNATE_HOME \etc\ hibernate.cfg.xml 如果存在这个文件则会覆盖上面的properties文件 HIBERNATE_HOME\hibernate-3.2\etc 日志记录文件

3、 编写hibernate.cfg.xml文件:



com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/数据库名称
用户
密码
org.hibernate.dialect.MySQLDialect
true
<!–
true
–>


4、 编写*.hbm.xml等实体映射文件









创建完映射文件之后,记得把hbm.xml文件添加到hibernate.cfg.xml文件中


(在session-factory标签里property标签后)

5、 生成数据库 创建hibernate.cfg.xml中指定的数据库 可以使用SchemaExport生成相关表

Configuration cfg = new Configuration().configure();
SchemaExport export = new SchemaExport(cfg);
export.create(true, true);

也可以在hibernate.cfg.xml中进行相关的配置使之自动生成

create

配置Spring环境:

1、 把spring相关的jar包复制到lib目录中

SPRING_HOME\dist\spring.jar spring核心jar包 SPRING_HOME \lib\log4j\log4j-1.2.14.jar 记录日志 SPRING_HOME \lib\jakarta-commons\commons-logging.jar

2、 在WEB-INF下建立applicationContext.xml

可从SPRING_HOME\ samples\jpetstore\war\WEB-INF\目录下拷贝applicationContext.xml

3、 提供log4j.properties配置文件 可从下面目录中拷贝:

G:\software_programming\Java\SSH\spring\spring-framework-2.0.8-with-dependencies\spring-framework-2.0.8\samples\jpetstore\war\WEB-INF\ log4j.properties

4、把初始化Hibernate的SessionFactory接口交给spring管理




注意:这里的数据库相关配置信息是写到了hibernate.cfg.xml文件中,也可以通过在spring配置jdbc datasource对数据库进行管理,然后通过datasource注入sessionFactory的方式来创建会话工厂。

5、配置spring为hibernate配置的数据库访问操作的封装类hibernateTemplate



6、在applicationContext.xml文件中配置数据库的事务(也可以使用AOP进行配置)

<!-- 事务拦截器bean需要依赖注入一个事务管理器 –>




<!\-\- 设置事务传播特性,对应于AOP中的 <tx:advice />  -->
<bean id="transactionInterceptor"
   class="org.springframework.transaction.interceptor.TransactionInterceptor">
   <property name="transactionManager">
       <ref bean="transactionManager" />
   </property>
   <property name="transactionAttributes">
       <props>
          <prop key="get*">PROPAGATION_REQUIRED, readOnly
          </prop>
          <prop key="*">PROPAGATION_REQUIRED</prop>
       </props>
   </property>
</bean>   
 <!\-\- 定义BeanNameAutoProxyCreator,配置哪些类和哪些方法使用事务对应于AOP中的 <aop:pointcut /> -->   
<bean
   class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
   <!\-\- 指定对满足哪些bean name的bean自动生成业务代理 -->
   <property name="beanNames">
       <!\-\- 下面是所有需要自动创建事务代理的bean-->   
       <list>
           <value>userDAO</value>             
          <value>provinceDAO</value>
          <value>cityDAO</value>
          <value>sexDAO</value>
          <value>statusDAO</value>
       </list>
       <!\-\- 此处可增加其他需要自动创建事务代理的bean-->
   </property>
   <property name="interceptorNames">
       <!\-\-  下面定义BeanNameAutoProxyCreator所需的事务拦截器-->   
       <list>
          <value>transactionInterceptor</value>
           <!\-\- 此处可增加其他新的Interceptor -->
       </list>
   </property>
</bean>

7、在applicationContext.xml中配置相关的数据访问层Dao,注意创建时要给spring提供一个借口,方便其代理





8、在applicationContext.xml中配置相关的业务逻辑层Service,其构造函数中的参数指向器数据访问层bean





9、在web.xml中配置如下信息


org.springframework.web.context.ContextLoaderListener


contextConfigLocation
classpath:applicationContext.xml,applicationContext-*.xml

其中的param-value根据自己的applicationContext.xml存放位置决定。

配置Struts2环境

1、 把相关jar文件拷贝到项目中

STRUTS_HOME /apps/struts2-blank-2.1.8/WEB-INF/lib 目录下的相关jar文件 STRUTS_HOME/lib/struts2-spring-plugin-2.1.8.jar

2、 配置web.xml文件 可以从STRUTS_HOME /apps/struts2-blank-2.1.8/WEB-INF/web.xml文件中拷贝:


struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


struts2
/*

另外可以这样配置字符编码过滤器:


encodingFilter
org.springframework.web.filter.CharacterEncodingFilter

encoding
UTF-8


forceEncoding
true


encodingFilter
*.action

3、 在struts.xml中配置项拦截器




ext-comp-.*


另外在struts.xml文件中常配置的两个常量:


4、 在struts.xml中配置相关的Action


/{1}-{2}.jsp
/WEB-INF/exam/{1}-{2}.jsp
<!--
/error.jsp –>
arthinking wechat
欢迎关注itzhai公众号