写点什么

详解 SSH 框架中对象调用流程

发布于: 2021 年 02 月 22 日

摘要:SSH=Struts+Spring+Hibernate


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


集成 SSH 框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的 Web 应用程序。其中使用 Struts 作为系统的整体基础架构,负责 MVC 的分离,在 Struts 框架的模型部分,控制业务跳转,利用 Hibernate 框架对持久层提供支持,Spring 做管理,管理 struts 和 hibernate。


SSH 框架的系统是基于 MVC 的。Struts 是一个很好的 MVC 框架,主要技术是 Servlet 和 Jsp。Struts 的 MVC 设计模式可以使我们的逻辑变得很清晰,让我们写的程序层次分明。基于 Struts 开发可以简化开发难度,提高开发效率。


Spring 提供了管理业务对象的一致方法,并鼓励注入对接口编程而不是对类编程的良好习惯,使我们的产品在最大程度上解耦。


Hibernate 是用来持久化数据的,提供了完全面向对象的数据库操作。Hibernate 对 JDBC 进行了非常轻量级的封装,它使得与关系型数据库打交道变得非常轻松。


在 Struts+Spring+Hibernate 系统中,对象之间的调用流程如下:



 Struts——>Spring——>Hibernate


 JSP——>Action——>Service——>DAO——>Hibernate


比如:


1.Spring 的配置文件 bean.xml





2.Struts 的配置文件 struts.xml



3.Hibernate 其中的一个配置文件:



Spring 框架的作用和好处:


Spring 框架提供了一个容器,该容器可以管理应用程序的组件,还提供了 IoC 和 AoP 机制,实现组件之间解耦,提高程序结构的灵活性,增强系统的可维护和可扩展性。


在 SSH 整合开发中,利用 Spring 管理 Service、DAO 等组件,利用 IoC 机制实现 Action 和 Service,Service 和 DAO 之间低耦合调用。利用 AoP 机制实现事务管理、以及共通功能的切入等。


功能是整合,好处是解耦。


Hibernate 中操作并发处理(乐观锁和悲观锁)


Hibernate 框架可以使用锁的机制来解决操作并发。


a.悲观锁


在数据查询出来时,就给数据加一个锁,锁定。这样其他用户再执行删、改操作时不允许。当占用着事务结束,锁会自动解除。


Hibernate 采用的是数据库锁机制实现悲观锁控制。


缺点:将并发用户操作同步开,一个一个处理。当一个用户处理时间比较长时,效率会比较低。


b.乐观锁


允许同时更新提交,但是最快的会成功,慢的失败。


在记录中追加一个字段值,用该字段值当做版本。当最先提交者提交后,会自动将版本字段值提升,这样其他用户提交,会发现版本低于数据库记录目前版本,因此抛出异常提示失败。


特点:允许用户同时处理,但只能有一个成功,其他失败,以异常方式提示。


SSH 工作流程


a.启动服务器,加载工程以及 web.xml.


(实例化 Lisener,Filter 等组件,将 Spring 容器和 Struts2 控制创建)


b.客户端发送请求,所有请求进入 Struts2 控制器。控制器根据请求类型不同,分别处理。


(action 请求,*.action 会进入 struts.xml 寻找配置.


其他请求,*.jsp 会直接调用请求资源,生成响应信息)


c.Struts2 控制器根据配置调用一个 Action 对象处理。


整合方法一:将 Action 交给 Spring 容器


(Action 对象由 struts2-spring-plugin.jar 插件提供的


StrutsSpringObjectFactory 负责去 Spring 容器获取)


整合方法二:将 Action 置于 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.将响应信息输出。


本文分享自华为云社区《SSH 组合框架模式小知识分享》,原文作者:Jack20 。


点击关注,第一时间了解华为云新鲜技术~


发布于: 2021 年 02 月 22 日阅读数: 15
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
详解SSH 框架中对象调用流程