`
hunter090730
  • 浏览: 194765 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Spring2.5.6+Struts2.3.1+Hibernate3的整合

    博客分类:
  • SSH
 
阅读更多

要整合SSH,简言之:将struts的Action交由Spring的容器来管理,hibernate的sessionFactory交由Spring容器来管理,而让web container启动时自动加载相关的Spring容器。

说是很简单,但我在进行整合时也是遇到了一些问题,主要是相关的jar包导入不全或导入的版本不相兼容所至,所以特别的在最后用图的形式贴出来。

如下图:

Struts (Web page) <---> Spring DI <--> Hibernate (DAO) <---> Database
the summary is:

To integrate all those technologies together, you should..

  1. Integrate Spring with Hibernate with Spring’s “LocalSessionFactoryBean” class.
  2. Integrate Spring with Struts via Spring’s ready make Struts plug-in – “ContextLoaderListener“. 如下为项目结构图:见projectView.jpg, 项目用到的lib:见projectViewLibs.jpg。 主要步骤如下: 1,新建一web project后,修改web.xml如下:
  3. <?xml version="1.0" encoding="UTF-8"?>
  4. <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
  5. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  6. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
  7. http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  8. <display-name>java_eBooking</display-name>
  9. <welcome-file-list>
  10. <welcome-file>index.jsp</welcome-file>
  11. </welcome-file-list>
  12. <!--  
  13. 1、指定spring的配置文件,默认从webroot根目录(即webroot/WEB-INF/,跟web.xml要并列同级目录)寻找配置文件,  
  14. 我们可以通过spring提供的classpath*:前缀指定从类路径下寻找  contextConfigLocation
  15. -->
  16. <!-- 
  17. <context-param>
  18. <param-name>contextConfigLocation</param-name>
  19. <param-value>/WEB-INF/classes/applicationContext.xml
  20. </param-value>
  21. </context-param>
  22. -->
  23. <listener>
  24. <listener-class>
  25. org.springframework.web.context.ContextLoaderListener
  26. </listener-class>
  27. </listener>
  28. <context-param>
  29. <param-name>contextConfigLocation</param-name>
  30. <param-value>classpath*:applicationContext.xml</param-value>
  31. </context-param>
  32. <filter>
  33. <filter-name>struts2</filter-name>
  34. <filter-class>
  35. org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  36. </filter-class>
  37. </filter>
  38. <filter-mapping>
  39. <filter-name>struts2</filter-name>
  40. <url-pattern>/*</url-pattern>
  41. </filter-mapping>
  42. </web-app> 2,在src下新建struts.xml.具体如下:
  43. <?xml version="1.0" encoding="UTF-8" ?>
  44. <!DOCTYPE struts PUBLIC
  45.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  46.     "http://struts.apache.org/dtds/struts-2.0.dtd">
  47. <struts>
  48.     <constant name="struts.objectFactory" value="spring" />
  49.     <constant name="struts.devMode" value="true" />
  50.     <package name="product" extends="struts-default">
  51.         <action name="list" class="hellowordAction" method="execute">
  52.             <result>ebooking/list.jsp</result>
  53.             <result name="input">ebooking/list.jsp</result>
  54.         </action>
  55.         <action name="remove" class="hellowordAction" method="remove">
  56.             <result>ebooking/list.jsp</result>
  57.             <result name="input">ebooking/list.jsp</result>
  58.         </action>
  59.         <action name="save" class="hellowordAction" method="save">
  60.             <result>ebooking/list.jsp</result>
  61.             <result name="input">ebooking/list.jsp</result>
  62.         </action>
  63.     </package>
  64. </struts> 3,在src下新建applicationContext.xml.具体如下:
  65. <?xml version="1.0" encoding="UTF-8"?>
  66. <beans xmlns="http://www.springframework.org/schema/beans"
  67. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  68. xmlns:context="http://www.springframework.org/schema/context"
  69. xsi:schemaLocation="http://www.springframework.org/schema/beans
  70.            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  71.            http://www.springframework.org/schema/context 
  72.         http://www.springframework.org/schema/context/spring-context-2.5.xsd">
  73. <bean id="productService"
  74. class="com.ebooking.service.EbookingService" />
  75. <bean id="hellowordService"
  76. class="com.ebooking.service.HelloWordService">
  77. <property name="helloWordDao" ref="helloWordDao"></property>
  78. </bean>
  79. <bean id="eBookingAction"
  80. class="com.ebooking.web.struts.action.EbookingAction"
  81. scope="prototype">
  82. </bean>
  83. <bean id="hellowordAction"
  84. class="com.ebooking.web.struts.action.HelloWordAction"
  85. scope="prototype">
  86. <constructor-arg ref="hellowordService" />
  87. </bean>
  88. <bean id="helloWordDao"
  89. class="com.ebooking.dao.impl.HelloWordDaoImpl">
  90. <property name="sessionFactory" ref="sessionFactory" />
  91. </bean>
  92. <!--加载PropertyPlaceholderConfigurer后,就可以使用${jdbc.username}占位符了-->
  93. <bean
  94. class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  95. <property name="locations">
  96. <value>classpath:conn/jdbc.properties</value>
  97. </property>
  98. </bean>
  99. <bean id="sessionFactory"
  100. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  101. <property name="dataSource" ref="dataSource" />
  102. <property name="mappingResources">
  103. <list>
  104. <value>com/ebooking/model/ebooking.hbm.xml</value>
  105. </list>
  106. </property>
  107. <property name="hibernateProperties">
  108. <props>
  109. <prop key="hibernate.dialect">
  110. org.hibernate.dialect.SQLServerDialect
  111. </prop>
  112. <prop key="hibernate.show_sql">true</prop>
  113. <prop key="hibernate.generate_statistics">true</prop>
  114. </props>
  115. </property>
  116. </bean>
  117. <bean id="dataSource"
  118. class="com.mchange.v2.c3p0.ComboPooledDataSource"
  119. destroy-method="close">
  120. <property name="driverClass" value="${jdbc.driverClassName}" />
  121. <property name="jdbcUrl" value="${jdbc.url}" />
  122. <property name="user" value="${jdbc.username}" />
  123. <property name="password" value="${jdbc.password}" />
  124. <property name="minPoolSize" value="2" />
  125. <property name="initialPoolSize" value="3" />
  126. <property name="maxPoolSize" value="10" />
  127. <property name="maxIdleTime" value="1800" />
  128. <property name="acquireIncrement" value="2" />
  129. <property name="maxStatements" value="3" />
  130. <property name="idleConnectionTestPeriod" value="1800" />
  131. <property name="acquireRetryAttempts" value="3" />
  132. </bean>
  133. </beans>  4,在“src/conn/”新建jdbc.properties:
  134. jdbc.driverClassName=net.sourceforge.jtds.jdbc.Driver
  135. jdbc.url=jdbc:jtds:sqlserver://localhost:1433/jpetstore
  136. jdbc.username=sa
  137. jdbc.password=db*888  5,src目录下新建log4j.xml,具体如下:
  138. <?xml version="1.0" encoding="UTF-8" ?>
  139. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  140. <log4j:configuration>
  141. <appender name="logs"
  142. class="org.apache.log4j.RollingFileAppender">
  143. <param name="Encoding" value="GBK" />
  144. <param name="File" value="logs/logs.log" />
  145. <param name="MaxBackupIndex" value="300" />
  146. <param name="MaxFileSize" value="100000" />
  147. <layout class="org.apache.log4j.PatternLayout">
  148. <param name="ConversionPattern"
  149. value="%d{ISO8601} %p - %m %n" />
  150. </layout>
  151. <filter class="org.apache.log4j.varia.LevelRangeFilter">
  152. <param name="LevelMin" value="info" />
  153. <param name="LevelMax" value="error" />
  154. <param name="acceptOnMatch" value="true" />
  155. </filter>
  156. </appender>
  157. <logger name="com.ebooking.service" additivity="false">
  158. <level value="info" />
  159. <appender-ref ref="logs" />
  160. </logger>
  161.   <root>
  162. <priority value="info" />
  163. <appender-ref ref="logs" />
  164. </root>
  165. </log4j:configuration>
  166. 注意: 由于 我并没有用到事务,所有在web.xml中并没有配置 openSessionInView这个filter, 如有用到或者当进行session.load(id)时必须在web.xml中作如下配置,否则会报错。 报错信息大致如下: org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition. 当有用到事务,但并没有指定用 openSessionInView时,spring就会将所有的事务当作是只读事务来处理,当进行hibernateTemplate.save(ebooking)时就会报一个说是当前session处理于 read only状态,禁止进行写操作。  <filter> <filter-name>openSessionInView</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> <init-param> <param-name>sessionFactoryBeanName</param-name> <param-value>sf</param-value> </init-param> </filter> <filter-mapping> <filter-name>openSessionInView</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
===增加事务配置如下,当然如果有许多服务对象,你想为他们分别设置 完全不同 的事务语义。 在Spring中,你可以通过分别定义特定的 <advisor></advisor> 元素, 让每个advisor采用不同的 'pointcut' 和 'advice-ref' 属性,来达到目的。 <!-- //jdbc datasource txManager <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> --> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean><config><pointcut id="bussinessService" expression="execution(public * com.ebooking.service.*.*(..))"></pointcut><advisor pointcut-ref="bussinessService" advice-ref="txAdvice"></advisor></config><advice id="txAdvice" transaction-manager="txManager"><attributes><method name="list" read-only="true"></method><method name="*" propagation="REQUIRED"></method></attributes></advice>
  • 大小: 59.2 KB
  • 大小: 73.3 KB
分享到:
评论

相关推荐

    SSH2--spring 2.5.6 + struts 2.2.1 + hibernate 3.5.5全部的注解的 M V C

    spring 2.5.6 + struts 2.2.1 + hibernate 3.5.5 内有 AOP 的切面、全部的注解的 M V C 结构,之外还在上网上找了一个同学的学习笔记一起打包,感觉好不错!

    hibernate3.3.2+spring2.5.6+struts2.1.6整合包+anntations

    标题和描述中提到的"hibernate3.3.2+spring2.5.6+struts2.1.6整合包+anntations"是指一个经典的Java Web开发框架集成,通常被称为SSH(Struts2、Spring、Hibernate)框架。这个整合包包含这三个组件的特定版本,用于...

    Struts2.1.8+Spring2.5.6+Hibernate3.3.2项目整合

    Struts2.1.8+Spring2.5.6+Hibernate3.3.2是经典的Java Web开发框架组合,常被称为SSH。这三个框架协同工作,为开发者提供了强大的模型-视图-控制器(MVC)架构支持,使得企业级应用的开发更加高效和模块化。 Struts...

    spring2.5.6+struts2.1.6+hibernate3.3.2+mysql驱动包

    这个集合包含了Spring 2.5.6、Struts2 2.1.6、Hibernate 3.3.2以及适用于MySQL的驱动程序,这些都是构建基于Java的动态Web应用程序的关键组件。 首先,Spring框架是Java企业级应用开发的核心框架,版本2.5.6。...

    Spring2.5.6+struts2.1.8+hibernate3.3.2框架集成

    本项目涉及的是Spring 2.5.6、Struts 2.1.8和Hibernate 3.3.2这三大流行Java企业级框架的集成。下面将详细介绍这三个框架及其集成的关键知识点。 首先,Spring框架(2.5.6版本)是一个轻量级的全面应用框架,它提供...

    Struts2.0.14+Spring2.5.6+Struts.1.3.8+Hibernate3.2

    Struts2.0.14、Spring2.5.6、Struts1.3.8以及Hibernate3.2是四个非常关键的Java Web开发框架,它们在2000年代末到2010年代初广泛应用于企业级应用中。这个压缩包文件包含了这些框架的核心组件,对于学习和理解SSH...

    spring2.5.6 +struts2.1.8+hiernate3.3.2(jar)

    标题中的"spring2.5.6 +struts2.1.8+hiernate3.3.2(jar)"指的是一个集成开发环境,它包含了三个关键的Java Web框架:Spring 2.5.6、Struts 2.1.8和Hibernate 3.3.2。这些框架在Java应用开发中扮演着重要的角色,尤其...

    版本:struts-2.3.14+spring-2.5.6+hibernate3.6.10

    SSH2框架搭建所需jar包,版本:struts-2.3.14+spring-2.5.6+hibernate3.6.10

    Struts2.1.6+Spring2.5.6+Hibernate3.3.2整合包

    综上所述,Struts2.1.6+Spring2.5.6+Hibernate3.3.2的整合提供了全面的Java Web开发解决方案,它简化了开发流程,提高了代码的可维护性和可扩展性。开发者可以通过掌握这三个框架的整合,提升自身在企业级应用开发中...

    JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例

    JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例(已上传) 1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、...

    spring-2.5.6+struts-2.3.4+hibernate-3.6.6

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    spring-2.5.6+struts-1.3.10+hibernate-3.6.6

    本人的此jar合集只能保证SSH2的基础环境,至于更复杂的功能,可能此集合已经包含,或者您可以从您下载的Spring或者hibernate或者struts中寻找您需要的jar包,按要求添加即可。 【因本人能力有限,不能保证此jar集合...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架整合开发

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1框架整合开发 http://www.cnitblog.com/intrl/archive/2009/04/13/56322.aspx 这篇文章的源码由于他的上传的空间用户可能下载失败,作者相当牛而且具有奉献精神

    struts2+spring2.5.6+hibernate3.0+ext整合开发

    在"struts2+spring2.5.6+hibernate3.0+ext"的整合开发中,通常会使用Spring来管理Struts2的Action类,实现业务逻辑的解耦。同时,Spring可以作为Hibernate的事务管理器,处理数据库操作。Ext则用于创建前端用户界面...

    spring2.5.6+hibernate3.3.2+struts2.1.8

    标题 "spring2.5.6+hibernate3.3.2+struts2.1.8" 提供了一个经典的Java Web开发技术栈,这个组合被称为S2SH(Spring、Struts2和Hibernate)。这个版本的集成对于初学者来说是一个很好的起点,因为它包含了三个主要的...

    Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0)架包

    一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0)  1. jar包引入  Spring 2.5.6:spring.jar、spring-webmvc.jar、commons-logging.jar、cglib-nodep-2.1_3.jar  Hibernate 3.6.8:hibernate3.jar...

    ssh2(spring2.5.6+struts2.2.3+hibenate3.2)

    在这个特定的例子中,版本分别对应于Spring 2.5.6、Struts2 2.2.3和Hibernate 3.2。下面将详细解释这三个组件以及它们在项目中的作用。 **Spring框架(2.5.6版)**: Spring是一个全面的Java应用框架,提供依赖注入...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1整合

    ### Struts2.1.6 + Spring2.5.6 + Hibernate3.3.1 整合 在本文中,我们将详细介绍如何将Struts2.1.6、Spring2.5.6以及Hibernate3.3.1进行整合,并构建一个简单的MVC应用。通过这个过程,读者将了解到这三种框架的...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(含JAR包)

    Struts2.1.6、Spring2.5.6和Hibernate3.3.1是Java Web开发中的三个重要框架,合称为SSH(Struts2、Spring、Hibernate)。这个全注解实例详解旨在帮助开发者理解如何在不使用XML配置的情况下,通过注解实现这三大框架...

    Struts2+Spring2.5.6+Hibernate3 用到的jar包

    Struts2+Spring2.5.6+Hibernate3 用到的jar包 antlr-2.7.6.jar asm.jar backport-util-concurrent.jar cglib-nodep-2.1_3.jar commons-collections-3.1.jar commons-dbcp.jar commons-fileupload-1.2.1.jar commons-...

Global site tag (gtag.js) - Google Analytics