牛郎和织女是喜鹊搭桥,SSH有没有这样的感觉?当遇见了你们之后,想知道你们之间是怎样的牵线。终于有机会好好看看你,虽然与你已有了暂时的别离。

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

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

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

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!-- 配置hibernate的其他的属性 --><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property><!-- 配置Hibernate的映射文件 --><property name="mappingResources"><list><value>cn/itcast/shop/user/vo/User.hbm.xml</value></list></property></bean>

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

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

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

在Spring的配置文件中:

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

在Struts的配置文件中:

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

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

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

这样整理一下是不是清晰了许多,看来这个 Struts就是我们的喜鹊桥呀。

网上商城SSH三者间的牵线相关推荐

  1. ssh中c3p0连接mysql_JSP+SSH+Mysql+C3P0实现的传智播客网上商城

    项目简介 本系统是传智播客授课时的开发案例,基于JSP+SSH+Mysql的简单网上商城.在当代开发中,SSH的使用已经逐渐被SSM取代,但不代表我们不需要学习SSH,该系统简单,但功能齐全可以作为S ...

  2. SSH网上商城:回首网上商城

    [前言] 进入Java的世界已经学习了两个阶段(J2SE.J2EE),这两个材料都是偏重于理论和基础知识:真正开始项目练习的就是这网上商城:实战经验还是蛮有用滴,一方面可以巩固基础知识,另外可以在项目 ...

  3. 【SSH网上商城项目实战01】整合Struts2、Hibernate4.3和Spring4.2

    转自:https://blog.csdn.net/eson_15/article/details/51277324 今天开始做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH.这篇博文主要总 ...

  4. 传智168期 SSH网上商城笔记day41~day45(2017年4月15日15:57:30)

    SSH网上商城,笔记只是简略的,主要记录一些注意事项. 链接:http://pan.baidu.com/s/1slO2aHv 密码:3huf 转载于:https://www.cnblogs.com/h ...

  5. [内附完整源码和文档] 基于SSH网上商城的设计与实现

    摘 要 本文讲述了基于SSH框架的网上商城购物系统的设计与实现.所谓的网上商城购物系统是通过网站推广互联企业的商品和技术服务,并使客户随时可以了解企业和企业的产品,为客户提供在线服务和订单处理功能. ...

  6. 【SSH网上商城项目实战】之环境搭建填坑

    此篇主要是记录我在从零开始走一遍倪升武大神的[SSH网上商城项目实战]过程中遇到的一些坑并记录解决方法.关于这个项目,大家可以去倪升武的博客学习了解,SSH网上商城项目实战请戳倪升武的项目实战专题. ...

  7. 【SSH网上商城项目实战16】Hibernate的二级缓存处理首页的热门显示

    转自:https://blog.csdn.net/eson_15/article/details/51405911 网上商城首页都有热门商品,那么这些商品的点击率是很高的,当用户点击某个热门商品后需要 ...

  8. 【SSH网上商城项目实战20】在线支付平台的介绍

    之前已经完成了首页的显示,用户添加购物车,确认订单等功能,下面就是支付功能的开发了.用户确认了订单后会直接跳转到支付页面进行在线支付,在线支付需要第三方的接口,这一节主要介绍一些关于第三方支付的内容, ...

  9. 【SSH网上商城】struts搭建及实例

    [简单介绍]         Struts是最早的java开源框架之一,它是MVC设计模式的一个优秀实现. Struts定义了通用的Controller(控制器),通过配置文件(通常是 Struts ...

最新文章

  1. 原生态纯JavaScript 100大技巧大收集
  2. ibm LTO2代半高磁带机不能弹出磁带
  3. java怎么来用urlrewrite伪静态化和urlrewrite的配置
  4. openssh升级sftp_CentOS6.5升级OpenSSH 8.3版本
  5. 公布一个软件,轻新视频录播程序,H264/AAC录制视音频,保存FLV,支持RTMP直播...
  6. 127.Word Ladder
  7. 网络学习(一)网络版块主题介绍
  8. DataSet.Tables[].Rows[][]的用法
  9. php curl登录,php curl保存登录信息 模拟登录
  10. postgresql学习笔记(五)备份与恢复
  11. 笔记:盖洛普《伟大管理的12要素》中的12原则
  12. GLASS 产品使用(一)
  13. SSM——SpringMVC笔记1
  14. 喜马拉雅.xm转化为.mp3格式
  15. 录音转文字电脑软件有哪些?录音如何转文字?
  16. 温故知新|传感器基础结构与通信原理
  17. AutoFac在WinForm中的使用
  18. MySQL 数据库 User表权限以及用户授权详解
  19. mysql视图高级设置_MySQL 视图高级属性知多少?
  20. lucene查询原理

热门文章

  1. 谷歌Flan-T5诞生!1800种语言任务超大规模微调
  2. 【区块链】(2)区块链概念与体系
  3. PTA浙大版《C语言程序设计(第3版)》练习2-4 温度转换
  4. 非计算机专业学生怎么走上计算机技术之路?
  5. 怎样在家远程访问单位的电脑 如何利用远程桌面进行远程办公 3款软件测评
  6. C/C++中.bss段的解释
  7. 随笔杂记(十二)——_pickle.UnpicklingError: unpickling stack underflow
  8. 解释耳语协议和 Status.im
  9. android studio找不到aar,AndroidStudio 引入aar时常见问题
  10. vue cle新建vue项目