Struts2+Spring2.5+Hibernate3.5的整合开发

三大框架Struts2+Spring2.5+Hibernate3.5的整合开发

第一步:

下面给出整合开发时Struts2、Hibernate3.5、Spring2.5需要的jar。

 

Struts2所需要的jar如下:

 

      1、struts2-core-2.x.x.x.jar :Struts 2框架的核心类库
      2、xwork-2.x.x.jar :XWork类库,Struts 2在其上构建
      3、ognl-2.x.x.jar :对象图导航语言(Object Graph Navigation Language),struts2框架通过其读写对象的属性
      4、freemarker-2.3.x.jar :Struts 2的UI标签的模板使用FreeMarker编写
      5、commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。
      6、commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后必须加入此文件
      7、struts2-json-plugin.jar   struts2与json的插件
      8、struts2-spring-plugin.jar    struts2与spring的插件


Hibernate3.5所需要的jar如下:
 
  hibernate核心安装包下的jar
     1、hibernate3.jar
     2、lib\required\*.jar
  hibernate注解安装包下的jar
  hibernate针对JPA的实现包
 

Spring安装包下的jar

   1、spring.jar
   2、aspectjrt.jar
   3、aspectjweaver.jar
   4、c3p0-0.9.1.2.jar
   5、cglib-nodep-2.1_3.jar  
   6、common-annotations.jar
   7、commons-logging.jar
   8、log4j-1.2.15.jar

 

   等等。具体情况因具体而定。如下图的jar

 

第二步:


在源文件夹下新建Spring配置文件beans.xml,在配置文件中配置c3p0数据源:

 

Xml代码   收藏代码
  1. <!-- 数据库连接池 -->  
  2.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  
  3.         destroy-method="close">  
  4.         <property name="driverClass" value="com.mysql.jdbc.Driver" />  
  5.         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/s2sh?useUnicode=true&amp;characterEncoding=UTF-8" />  
  6.         <property name="user" value="root" />  
  7.         <property name="password" value="root" />  
  8.         <!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->  
  9.         <property name="initialPoolSize" value="1" />  
  10.         <!--连接池中保留的最小连接数。-->  
  11.         <property name="minPoolSize" value="1" />  
  12.         <!--连接池中保留的最大连接数。Default: 15 -->  
  13.         <property name="maxPoolSize" value="300" />  
  14.         <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->  
  15.         <property name="maxIdleTime" value="60" />  
  16.         <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->  
  17.         <property name="acquireIncrement" value="5" />  
  18.         <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->  
  19.         <property name="idleConnectionTestPeriod" value="60" />  
  20.     </bean>  
  21.   
  22.   
  23. <!-- 连接工厂 -->  
  24.     <bean id="sessionFactory"  
  25.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  26.         <property name="dataSource" ref="dataSource" />  
  27.         <property name="mappingResources">  
  28.             <list>  
  29.                 <value>cn/z_xiaofei168/domain/User.hbm.xml</value>  
  30.             </list>  
  31.         </property>  
  32.         <property name="hibernateProperties">  
  33.             <props>  
  34.                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>  
  35.                 <prop key="hibernate.hbm2ddl.auto">update</prop>  
  36.                 <prop key="hibernate.show_sql">true</prop>  
  37.                 <prop key="hibernate.format_sql">false</prop>  
  38.             </props>  
  39.         </property>  
  40.     </bean>  

 

 
第三步:

实体bean配置模板.hbm.xml

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC   
  3.     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  4.     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <hibernate-mapping>  
  6.     <class name="cn.z_xiaofei168.domain.User" table="users">  
  7.         <id name="id">  
  8.             <generator class="native" />  
  9.         </id>  
  10.         <property name="name" />  
  11.         <property name="pass" />  
  12.         <property name="email" />  
  13.         <property name="rdate" />  
  14.     </class>  
  15. </hibernate-mapping>  

 

 

   第四步:

  在web容器中实例化spring容器和配置struts2

 

Xml代码   收藏代码
  1. <strong><!--  
  2.         1、指定spring的配置文件,默认从web根目录寻找配置文件,  
  3.         我们可以通过spring提供的classpath:前缀指定从类路径下寻找  
  4.     -->  
  5.     <context-param>  
  6.         <param-name>contextConfigLocation</param-name>  
  7.         <param-value>classpath:beans.xml</param-value>  
  8.     </context-param>  
  9.     <!-- 对Spring容器进行实例化 -->  
  10.     <listener>  
  11.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  12.     </listener>  
  13.   
  14.   
  15.   
  16.     <!-- 2、配置struts2启动时用的Filter -->  
  17.     <filter>  
  18.         <filter-name>struts2</filter-name>  
  19.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  20.     </filter>  
  21.     <filter-mapping>  
  22.         <filter-name>struts2</filter-name>  
  23.         <url-pattern>/*</url-pattern>  
  24.     </filter-mapping></strong>  

 

  第五步:

struts2的配置文件模板struts.xml如下。常量struts.objectFactory=spring明确指出将由spring负责创建Action实例。

Xml代码   收藏代码
  1. <strong><?xml version="1.0" encoding="UTF-8" ?>  
  2.  <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.1.7.dtd">  
  5. <struts>  
  6.     <package name="z_xiaofei168" extends="struts-default" namespace="/csdn">  
  7.         <global-results>  
  8.             <result name="input">/index.jsp</result>  
  9.         </global-results>  
  10.         <!--  
  11.             beans.xml中  
  12.             id="userAction"中的userAction必须与struts.xml中的class="userAction"中相一致  
  13.         -->  
  14.         <action name="user_*" class="userAction" method="{1}">  
  15.             <result name="insert" type="chain">user_findAll</result>  
  16.             <result name="delete" type="chain">user_findAll</result>  
  17.             <result name="findById">/user/user_update.jsp</result>  
  18.             <result name="update" type="chain">user_findAll</result>  
  19.             <result name="findAll">/user/user_list.jsp</result>  
  20.   
  21.         </action>  
  22.     </package>  
  23. </struts></strong>  

 

 

  第六步:

为了能从spring容器中寻找到Action bean,要求action配置的class属性值和spring中bean的名称相同。如下:

 

 

Xml代码   收藏代码
  1. <package name="z_xiaofei" extends="json-default" namespace="/csdn">  
  2.         <global-results>  
  3.             <result name="input">/index.jsp</result>  
  4.         </global-results>  
  5.         <!--  
  6.             beans.xml中  
  7.             id="userAction"中的userAction必须与struts.xml中的class="userAction"中相一致  
  8.         -->  
  9.         <action name="user_*" class="userAction" method="{1}">  
  10.             ...  
  11.         </action>  
  12.     </package>  

 

 
第七步:

使用spring解决struts2乱码问题。

 

Xml代码   收藏代码
  1. <!-- 使用spring解决struts2乱码问题 -->  
  2.     <filter>  
  3.         <filter-name>encoding</filter-name>  
  4.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  5.         <init-param>  
  6.             <param-name>encoding</param-name>  
  7.             <param-value>UTF-8</param-value>  
  8.         </init-param>  
  9.     </filter>  
  10.     <filter-mapping>  
  11.         <filter-name>encoding</filter-name>  
  12.         <url-pattern>/*</url-pattern>  
  13.     </filter-mapping>  

 

 第八步:

使用spring解决hibernate因session关闭导致的延迟加载例外问题。

Xml代码   收藏代码
  1. <!-- 使用spring解决hibernate因session关闭导致的延迟加载例外问题 -->  
  2.     <filter>  
  3.         <filter-name>OpenSessionInViewFilter</filter-name>  
  4.         <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>  
  5.         <init-param>  
  6.             <!--  
  7.                 指定org.springframework.orm.hibernate3.LocalSessionFactoryBean  
  8.                 在spring配置文件中的名称,默认值为sessionFactory.  
  9.                 如果LocalSessionFactoryBean在spring中的名称不是sessionFactory,  
  10.                 该参数一定要指定,否则会出现找不到sessionFactory的例外  
  11.             -->  
  12.             <param-name>sessionFactoryBeanName</param-name>  
  13.             <param-value>sessionFactory</param-value>  
  14.         </init-param>  
  15.     </filter>  
  16.     <filter-mapping>  
  17.         <filter-name>OpenSessionInViewFilter</filter-name>  
  18.         <url-pattern>/*</url-pattern>  
  19.     </filter-mapping>  

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值