SSH整合实现

在Java中有许多优秀的框架,表示层有Struts、JSF等,持久层有Hibernate、EJB等,将各层的开源框架有机整合在一起作为软件系统的主体框架,使得系统具有更好的扩展性和可维护性。

Spring的开放性,能与大部分的对象关系映射框架较好的整合。Hibernate进行数据持久化操作时,Hibernate的Session接口提供了基本的数据访问方法,获得Hibernate Session对象要实现的Hibernate的SessionFactory实例。SessionFactory复制打开、关闭和管理session,为了解决手动创建SessionFactory实例,使用Spring管理session对象和实现声明式事务管理。那么是如何实现的呢?

在Spring的配置文件ApplicationContext.xml中配置Hibernate对SessionFactory的设置。代码如下:

  1. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  2. <property name="dataSource" ref="dataSource"/>
  3. <!-- 配置hibernate的其他的属性 -->
  4. <property name="hibernateProperties">
  5. <props>
  6. <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
  7. <prop key="hibernate.show_sql">true</prop>
  8. <prop key="hibernate.format_sql">true</prop>
  9. <prop key="hibernate.hbm2ddl.auto">update</prop>
  10. </props>
  11. </property>
  12. <!-- 配置Hibernate的映射文件 -->
  13. <property name="mappingResources">
  14. <list>
  15. <value>cn/itcast/shop/user/vo/User.hbm.xml</value>
  16. </list>
  17. </property>
  18. </bean>

由配置文件可以看出,用声明的方式管理SessionFactory时,可以在不同的数据源切换,持久层服务发生改变,程序代码不需要改变只需改配置文件即可。通过Spring的事务机制进行统一管理事务管理:

  1. <!-- 配置事务管理器 -->
  2. <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  3. <property name="sessionFactory" ref="sessionFactory"/>
  4. </bean>
  5. <!-- 注解事务驱动 -->
  6. <tx:annotation-driven transaction-manager="transactionManager"/>

Spring类似我们之前学习过的MVC,为了让控制器和业务逻辑组件实现分离将Struts中的Action的实例生成交给Spring容器进行管理不再由Struts负责,Struts只单纯扮演控制器的角色。Struts的Action交给Spring框架创建,默认是多例的而Spring容器在管理类的时候默认创建是单例的,单例的方式容易产生线程安全问题所以一定要配置类scope属性:

在Spring的配置文件中:

  1. <bean id="userAction" class="cn.itcast.shop.user.action.UserAction" scope="prototype">
  2. </bean>

在Struts的配置文件中:

  1. <action name="user_*" class="userAction" method="{1}">
  2. </action>

我们知道还有vo、DAO、Service、Action在系统中她们是如何协调的?

在开发时我们一般都先设计实体类,这样对象在各层之间进行传递,利用Hibernate做好领域对象和数据表的映射关系。DAO层是专门独立出来对数据进行持久化,利用Spring对Hibernate提供DAO支持类HibernateDaoSupport来实现,每个DAO组件对应一个数据库表。Service层的开发主要是具体业务组件开发,主要用于处理各类业务逻辑。Action主要是处理Web请求,由Spring进行管理。

时间: 2024-10-23 11:19:25

SSH整合实现的相关文章

SSH整合基础

1.Spring整合Hibernate 整合步骤 导包 配置appliactionContext.xml 创建实体类和映射关系文件 创建DAO接口及实现类 声明DAO组件,注入SessionFactory 2.Spring整合Struts2 导包 配置web.xml 配置applicationContext.xml,开启注解扫描 创建并声明Action 配置Action 创建JSP 3.整合的基本原理 Struts原本使用StrutsObjectFactory来读取struts.xml,根据ac

SSH整合开发时Scope为默认时现象与原理

1.前提知识 1)scope默认值 进行SSH整合开发时,Struts2的action需要用spring容器进行管理,只要涉及到类以bean的形式入到spring容器中,不管是xml配置还是使用注解方式进行配置,都会涉及到spring管理bean的scope,其一共有五种取值,而其默认值为singleton,也就是单例模型,所有对此bean引用为同一个对象. 2)action应为多例 struts2作为MVC中视图(View)层框架,其最主要任务就是接收用户请求,然后调用业务逻辑层进行处理,这种

Spring(八)SSH整合简述

一.Spring与Struts2的整合 1.1.整合步骤 1.2.配置web.xml 1.3.配置spring配置文件applicationContext.xml 1.4.配置struts配置文件 1.5.Action继承ActionSupport类 二.spring与hibernate整合 2.1.步骤 2.2.注入sessionFactory <--数据源--> <bean id="dataSource" class="org.springframewo

SSH整合(配置方式)

工程目录: /SSH1/src/cn/itcast/domain/Book.java package cn.itcast.domain; /** * 图书 */ public class Book { private Integer id; // 图书编号 private String name; // 图书名称 private Double price; // 图书价格 public Integer getId() { return id; } public void setId(Intege

mysql+ssh整合例子,附源码下载

项目引用jar下载:http://download.csdn.net/detail/adam_zs/7262727 项目源码下载地址:http://download.csdn.net/detail/adam_zs/7262749 今天花时间把ssh整合了一下,重新再学习一下,希望对大家有所帮助! 我用的是mysql数据库,建表语句比较简单就不贴出来了,建表的时候记的设置id为自动增加哦. 项目文件位置,项目引用jar包 项目配置文件 web.xml <?xml version="1.0&q

SSH整合(1)异常

信息: No Spring WebApplicationInitializer types detected on classpath 十二月 01, 2016 10:06:12 下午 org.apache.catalina.core.ApplicationContext log 信息: Initializing Spring root WebApplicationContext log4j:WARN No appenders could be found for logger (org.spr

ssh整合例子

今天给大家介绍一下最新版本的SSH(struts2.2.1+ hibernate3.6+spring3.0.5)组合.注意本讲解为手工搭建! 一.为SSH做好准备 struts2-2.2.1-all.zip       hibernate-distribution-3.6.0.Final-dist.zip spring-framework-3.0.5.RELEASE.zip spring-framework-2.5.6-with-dependencies.zip slf4j-1.6.1.zip 

SSH整合之全注解

  SSH整合之全注解 使用注解配置,需要我们额外引入以下jar包 我们下面从实体层开始替换注解 1 package cn.hmy.beans; 2 3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6 import javax.persistence.Table; 7 8 @Entity 9 @Table 10 public c

从MVC和三层架构说到SSH整合开发

相信很多人都认同JavaWeb开发是遵从MVC开发模式的,遵从三层架构进行开发的,是的,大家都这么认同.但是相信大家都会有过这样一个疑问,if(MVC三层模式==三层架构思想)out.println(“请继续观看……”) 1.MVC(MODEL-VIEW-CONTROLLER)设计模式: 首先让我们了解下MVC(Model-View-Controller)的概念: MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写

【Java EE 学习第58-67天】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】

一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar包 (1)jbpm项目/lib目录下的所有jar包和根目录下的jbpm.jar包放入/WEB-INF/lib文件夹下,同时删除tomcat服务器/lib文件夹中的el-api.jar包. 注意:必须删除el-api.jar包,该jar包和jbpm项目中需要使用到的三个jar包冲突了:juel-api