SSH不是一个框架,而是多个框架(struts+spring+hibernate)的集成,是目前较流行的一种Web应用程序开源集成框架,用于构建灵活、易于扩展的多层Web应用程序。web
集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短时间内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts做为系统的总体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring作管理,管理struts和hibernate。spring
SSH框架的系统是基于MVC的。Struts 是一个很好的MVC框架,主要技术是Servlet和Jsp。Struts的MVC设计模式可使咱们的逻辑变得很清晰,让咱们写的程序井井有条。基于Struts开发能够简化开发难度,提升开发效率。数据库
Spring 提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使咱们的产品在最大程度上解耦。编程
Hibernate 是用来持久化数据的,提供了彻底面向对象的数据库操做。Hibernate对JDBC进行了很是轻量级的封装,它使得与关系型数据库打交道变得很是轻松。设计模式
在Struts+Spring+Hibernate系统中,对象之间的调用流程以下:服务器
Struts——>Spring——>Hibernate架构
JSP——>Action——>Service——>DAO——>Hibernate框架
a.启动服务器,加载工程以及web.xml.ssh
(实例化Lisener,Filter等组件,将Spring容器和Struts2控制建立)jsp
b.客户端发送请求,全部请求进入Struts2控制器。控制器根据请求类型不一样,分别处理。
(action请求,*.action会进入struts.xml寻找<action>配置.
其余请求,*.jsp会直接调用请求资源,生成响应信息)
c.Struts2控制器根据<action>配置调用一个Action对象处理。
整合方法一:将Action交给Spring容器
(Action对象由struts2-spring-plugin.jar插件提供的
StrutsSpringObjectFactory负责去Spring容器获取)
(Action对象由struts2-spring-plugin.jar插件提供的
StrutsSpringObjectFactory负责建立,而后到Spring容器中寻找与Action属性匹配的Bean对象,给Action对象注入。(默认采用名称匹配规则)
d.Struts2控制器执行defaultStack拦截器、Action对象、Result等组件处理.
e.执行Action的execute业务方法时,若是使用Service或DAO采用Spring的IoC机制调用。
f.执行Result生成响应信息,执行后续拦截器处理
g.将响应信息输出。