SSH框架总结(帧分析+环境结构+示例源代码下载)
首先,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的用途不仅限于server端的开发。
从简单性、可測试性和松耦合的角度而言,不论什么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的基本运行流程
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的差别
三、Hibernate
1、什么是Hibernate?
Hibernate是一个开放源码的对象关系映射框架,它对JDBC进行了很轻量级的对象封装,使得Java程序猿能够随心所欲的使用对象编程思维来操纵数据库。 Hibernate能够应用在不论什么使用JDBC的场合,既能够在Java的client程序使用。也能够在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)採用旧版本号,详见代码中凝视
SSH2框架搭建实例(spring3.2+strust2.3.4+hibernate4.2)所有採用最新版本号。详见代码中凝视
开发环境搭建,參照我的还有一篇博客
《Win7(64) + eclipse(64)+ tomcat7(64)+ jdk7(64)开发环境配置》
一些说明: 索要代码的邮箱,我基本上都发过了,假设有漏发。请联系我。 还是希望大家去csdn下载页去下载。假设速度慢。能够去这里http://pan.baidu.com/s/1eQh7FXo 开发环境配置。 http://blog.csdn.net/shan9liang/article/details/8807784 在war中,找到application-common.xml。改动数据源。指定自己的数据库就可以。 项目部署后。会自己主动映射表。 <!--配数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
<property name="username" value="ssh" />
<property name="password" value="ssh" />
</bean> 以上是oracle的配置。 假设使用其它数据库,请在lib文件夹下,增加驱动包。并改动数据源。 强烈建议: https://code.csdn.net/shan9liang/tgb
这是在CSDN CODE托管的,採用ssh搭建的一个考勤管理系统。maven工程。也就是说超过了原规范,我们推荐使用此,我将继续更新,逐步增加各种主流框架,相信我。
。只是不eclipse工程,需要手动导入eclipse。最近特别喜欢用intellij。直接推荐git clone。
SSH框架总结(帧分析+环境结构+示例源代码下载)的更多相关文章
- SSH框架总结(框架分析+环境搭建+实例源代码下载)
首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是眼下较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...
- orcal 数据库 maven架构 ssh框架 的全xml环境模版 及常见异常解决
创建maven项目后,毫不犹豫,超简单傻瓜式搞定dependencies(pom.xml 就是maven的依赖管理),这样你就有了所有你要的包 <project xmlns="http ...
- orcal 数据库 maven架构 ssh框架 的全注解环境模版 maven中央仓库批量删除lastupdated文件后依然是lastupdated解决方法 mirror aliyun中央仓库
批量删除文件,得用批处理文件,文件名随便,路径改成你的Repository,代码如下 rem 这里写你的仓库路径 set REPOSITORY_PATH=d:\repo rem 正在搜索... for ...
- SSH框架整合详细分析【执行流程】
struts1和spring有两种整合的方法 一种是action和spring bean映射:一种是将action交给spring初始化 第一种方式:访问.do的URL->tomcat接收到r ...
- SSH框架——(二)四层结构:DAO,Service,Controller,View层
1. DAO层: 主要任务:做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此. DAO层的设计:首先是设计DAO层的接口,然后再Spring的配置文件中定义此接口的实现类,然后就可以在模块 ...
- SSH框架总结(环境搭建+框架分析+实例源码下载)
一.SSH框架简介 SSH是struts+spring+hibernate集成的web应用程序开源框架. Struts:用来控制的,核心控制器是Controller. Spring:对Struts和H ...
- SSH框架总结(框架分析+环境搭建+实例源码下载) 《转》
这篇文章比较易懂,易理解: 首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层W ...
- SSH框架总结(框架分析+环境搭建+实例源码下载)
来源于: http://blog.csdn.net/shan9liang/article/details/8803989 首先,SSH不是一个框架,而是多个框架(struts+spring+hiber ...
- [Java] SSH框架笔记_框架分析+环境搭建+实例源码下载
首先,SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活.易于扩展的多层Web应用程序. 集成SSH框 ...
随机推荐
- ORACLE单字符函数的函数
1. ASCII(C) 说明:返回C的首字符在ASCII码中相应的十进制 举例: SQL>SELECT ASCII('A') A,ASCII('a') B,ASCII( ...
- Blend4精选案例图解教程(三):一键拖拽
原文:Blend4精选案例图解教程(三):一键拖拽 拖拽效果,常规实现方法是定义MoveLeftDwon.MoveLeftUp.MouseMove事件,在Blend的世界里,实现对象的拖拽,可以不写一 ...
- VS2012 编译程序时报无法载入PDB文件错误解决方式
VS2012 编译程序时报无法载入PDB文件错误解决方式 "ConsoleApplication1.exe"(Win32): 已载入"C:\Users\hp\Docume ...
- Android开发框架SmartAndroid2.0 强劲框架
SmartAndroid 是一个功能强劲的 Android 框架,作为一个简单而"优雅"的工具库包,它能够为 Android 开发人员建立功能完好的Android 应用程序. 经过 ...
- [LeetCode169]Majority Element求一个数组中出现次数大于n/2的数
题目: Given an array of size n, find the majority element. The majority element is the element that ap ...
- Android Framework 其中A记录
一个简短的引论 以往的研究太偏应用层的功能,实现了,原则上不进入非常理解,现在,研究人员framework该框架层. 创纪录的 1.下载源代码,文件夹例如以下: 2.Android系统的层次例如以下: ...
- iOS 7 新特性
iOS7更新了很多引人注目的功能.用户界面完全重新设计了.iOS7为开发2D,2.5D游戏引入了全新的动画系统.加强多线程,点对点连接,以及许多其他重要的功能让iOS7成为有史以来最有意义的一次发 ...
- C#多线程编程实例 螺纹与窗口交互
C#多线程编程实例 螺纹与窗口交互 代码: public partial class Form1 : Form { //声明线程数组 Thread[] workThreads = new Thread ...
- 2015最新iherb海淘攻略-图文入门教程
IHerb是美国最热门的海淘海购网站之中的一个,适合不爱担心,怕麻烦的朋友入门海淘,由于它有中文页面,可直邮中国,上千个母婴用品.化妆品.保健品品牌,最重要的是!首次下单,价值$40及以上的订单会马上 ...
- LayoutDemo
package swing.ui; import java.awt.BorderLayout; import java.awt.GridLayout; import javax.swing.JButt ...