关于struts:详解SSH-框架中对象调用流程
摘要:SSH=Struts+Spring+HibernateSSH不是一个框架,而是多个框架(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 。 点击关注,第一工夫理解华为云陈腐技术~