首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。

集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层)。

Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持。Spring一方面作为一个轻量级的IoC容器,负责查找、定位、创建和管理对象及对象之间的依赖关系,另一方面能使Struts和Hibernate更好地工作。

由SSH构建系统的基本业务流程是:

1、在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。

2、在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。

3、在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。

下面我们再详细看一下组成SSH的这三个框架

一、Spring

1、什么是Spring?

简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

2、Spring的特性

具体自己百度吧

所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码

3、为什么使用Spring?

Spring的以上特性使得开发人员使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

二、Struts

1、什么是Struts?

它通过采用 Java Servlet/JSP 技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。

2、Struts1的核心构成

在 Struts1 中,由一个名为 ActionServlet 的 Servlet 充当 控制器(Controller)的角色,根据描述模型、视图、控制器对应关系的 struts-config.xml 的配置文件,转发视图(View)的请求,组装响应数据模型(Model)。

在 MVC 的模型(Model)部分,经常划分为两个主要子系统(系统的内部数据状态与改变数据状态的逻辑动作),这两个概念子系统分别具体对应 Struts 1里的 ActionForm 与 Action 两个需要继承实现超类。在这里,Struts 1可以与各种标准的数据访问技术结合在一起,包括Enterprise Java Beans(EJB), JDBC 与 JNDI。

在 Struts 1的视图(View) 端,除了使用标准的JavaServer Pages(JSP)以外,还提供了大量的标签库使用,同时也可以与其他表现层组件技术(产品)进行整合,比如 Velocity Templates,XSLT 等。

通过应用 Struts 的框架,最终用户可以把大部分的关注点放在自己的业务逻辑(Action)与 映射关系的配置文件(struts-config.xml)中。

3、Struts1的基本执行流程

详见《STRUTS基本工作流程》

4、什么是struts2

Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品

5、strut2的体系结构

解析:

当Web容器收到请求(HttpServletRequest)它将请求传递给一个标准的的过滤链包括  流程(ActionContextCleanUp)过滤器,然后经过Other filters(SiteMesh ,etc),

接下来需要调用FilterDispatcher核心控制器,然后它调用ActionMapper确定请求那个Action,ActionMapper返回一个收集Action详细信息的ActionMaping对象。

接下来FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager) 从配置文件中读取配置信息(struts.xml),然后创建ActionInvocation对象,ActionInvocation在调用Action之前会依次的调用所用配置拦截器(Interceptor N) 一旦执行结果返回结果字符串ActionInvocation负责查找结果字符串对应的(Result)然后执行这个Result Result会调用一些模版(JSP)

来呈现页面,之后拦截器(Interceptor N)会在被执行(顺序和Action执行之前相反)最后响应(HttpServletResponse)被返回在web.xml中配置的那些过滤器和(核心控制器)(FilterDispatcher)。

6、为什么使用Struts?

首先,Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展,减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化

另外, struts具有页面导航功能,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。

7、 Struts1和Struts2的区别

详见《Struts1 和 Struts2》

三、Hibernate

1、什么是Hibernate?

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任

2、Hibernate核心构成

具体就不展开了

3、Hibernate基本执行流程

为什么使用Hibernate?

1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2、Hibernate是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作,将软件开发人员从大量相同的数据持久层相关编程工作中解放出来,使开发更对象化了。

3、移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变hibernate代码。

4、支持透明持久化,因为hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性。所以说它是一个轻量级框架。

最后附上SSH1和SSH2框架搭建的实例,点击即可下载

SSH1框架搭建实例(spring2+struts1+hibernate3)采用旧版本,详见代码中注释, 链接http://download.csdn.net/detail/shan9liang/5298211

SSH2框架搭建实例(spring3.2+strust2.3.4+hibernate4.2)全部采用最新版本,详见代码中注释,链接http://download.csdn.net/detail/shan9liang/5298185

SSH框架总结(框架分析+环境搭建+实例源码下载相关推荐

  1. SSH框架总结(框架分析+环境搭建+实例源码下载)

     版权声明:本文为博主原创文章,未经博主允许不得转载. 首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用 ...

  2. SSH框架总结(框架分析+环境搭建+实例源码下载) 《转》

    这篇文章比较易懂,易理解: 首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层W ...

  3. 《在(虚拟机)ubuntu16.04上进行openwrt环境搭建及源码下载》

    广西·河池学院 广西高校重点实验室培训基地 系统控制与信息处理重点实验室 本篇博客来之河池学院:OpenWrt无线路由组 写作时间: 2020年7月30日21:00:51 <在(虚拟机)ubun ...

  4. effective java英文版pdf_Java之Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse...

    框架学习前言 这个模块是面向Spring的,Spring的学习我是这么想的: 1.简单介绍Spring,主要是从网上借鉴一些重点 2.尽量说明清楚Spring的使用方法以及细节点 3.尽量以自己的理解 ...

  5. irule jar包无法导入_Java之Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse...

    框架学习前言 这个模块是面向Spring的,Spring的学习我是这么想的: 1.简单介绍Spring,主要是从网上借鉴一些重点 2.尽量说明清楚Spring的使用方法以及细节点 3.尽量以自己的理解 ...

  6. java rcp 开发 eclipse_eclipse rcp 开发实例 (源码下载)

    评论 # re: eclipse rcp 开发实例 (源码下载) 2007-05-18 16:27 BeanSoft 支持一下,谢谢分享!  回复  更多评论 # re: eclipse rcp 开发 ...

  7. 小明分享| SigmastarSSD201环境搭建及源码编译

    本文以目前最新版本(TAKOYAKI_DLS00V008)的 SDK 为例,讲述 SigmastarSSD201/202 环境搭建 源码下载 下载 kernel 源码 从 https://mirror ...

  8. Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】...

    在Silverlight程序(非Out of Browser模式)中是无法直接调用DLL的,但是很多的计算或者其他应用程序的调用中我们需要用到DLL的加载.比如调用DLL来识别身份证读卡器传输过来 ...

  9. SSH框架总结(框架分析+环境搭建+实例源代码下载)

    首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是眼下较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...

  10. ssh mysql环境搭建 myeclipse_MyEclipse整合ssh三大框架环境搭载用户注册源码下载

    前言 SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...

最新文章

  1. 【每日一学】复杂度分析
  2. 全球智慧医疗产业发展现状
  3. 让机器听懂世界,触及人类梦想还有多远?
  4. Maven实战系列文章目录
  5. the largest issue in management
  6. 95后程序员晒出工资单:狠补了这个,真香…
  7. python google buffer_python调用Google Protocol Buffer
  8. 棍子节快乐~ 顺便转一篇weka源码分析解析~【转自weka中文网】
  9. php递归操作目录 递归对参数转义
  10. 层次聚类 matlab代码_聚类算法解析一
  11. node.js学习文档_学习NodeJs从每天一个小知识点开始
  12. macos删除快捷键的各种区别用法
  13. linux应用程序调用aplay,linux - 在播放整首歌曲之前,aplay退出 - 堆栈内存溢出
  14. Android Framework 音频子系统(11)耳麦插拔之声音通道切换
  15. 新能源车车牌识别c++
  16. Parameter 'cId' not found. Available parameters are [id, param1]
  17. Mybatis-Plus eq、ne、gt、lt、ge、le
  18. 1、Centos之常见目录作用介绍
  19. visual studio 2019安装教程(详细的很)
  20. mysql count里select_select count()和select count(1)的区别和执行方式讲解

热门文章

  1. JAVA开发类似冒险岛的游戏Part1
  2. linux下安装指定版本的nodejs(升级到指定版本)
  3. 美国欲投 2.58 亿美元与中国争夺超算霸主地位
  4. Laravel debug bar 调试利器
  5. 渠道效果五步优化,让采购的流量物超所值
  6. android listview多视图嵌套多视图
  7. linux junit
  8. 解决linux下cocos2dx不能播放声音
  9. GoldenGate实施参考
  10. 坐标的先对转化clienttoscreen与screentosclient