首页 常见问题 什么是ssh框架原理及流程

什么是ssh框架原理及流程

Sep 02, 2019 am 09:46 AM
ssh 原理 框架 流程

什么是ssh框架原理及流程

Struts2工作原理:

1.初始化一个指向servlet容器的请求。

2.请求经过web.xml中配置的过滤器过滤,FilterDispatcher(struts2控制器的核心)询问ActionMapper是否需要调用某个Action来处理这个请求。如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。

3.ActionProxy通过配置文件Struts.xml配置文件找到需要调用的Action类。

4.ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。

5.Action执行完毕后,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果result。

相关推荐:《常见问题

即开发人员通过发送http请求,这个请求经过web.xml的过滤器过滤看看是否要调用某个action,如果有则在Struts.xml找到该请求的实现的方法,然后返回运行的结果。如图:

qq.jpg

Hibernate工作原理:

1. 读取并解析配置文件

2.读取并解析映射信息,创建SessionFactory 

3. 打开Sesssion 

4.创建事务Transation 

5. 持久化操作

6.提交事务 

7.关闭Session 

8. 关闭SesstionFactory 

即通过spring管理的Hibernate初始化时加载了xxx.hbm.xml然后读取解析映射信息,创建了SessionFactory。

然后打开session,通过session对事物进行操作并提交。最后关闭session,关闭SessionFactory。如图:

ww.jpg

Hibernate中bean的三种状态

Hibernate对象分为三种状态:瞬时态(new 出来的或者实例化时session无关的),持久态(session关联)与游离态(曾经与session关联)。其中持久态的对象是PO,瞬时态、托管态的对象可作为VO。(PO不应该直接用作v层)所以在使用中应该注意三态的转化。

如:

在进行数据操作的一系列过程中,save或者saveorupdate操作可以把瞬时态或者游离态的对象转换成持久态,而

delete或者session的close、flush等操作将会把session相关联的持久态对象转换成游离态。

Hibernate对象的状态和生命周期

使用new操作符初始化的对象是一个瞬时态的(Transient)(没有任何跟数据库表相关联的行为,只要应用不再引用这些对象,它们的状态就会丢失,并由垃圾回收机制回收);

瞬时态对象经过save(),saveOrUpdate会转换成持久态,由session统一管理,持久态对象的操作与数据库同步;

持久态对象经过evict(),close(),clear()等会转换成游离态,这时虽然被持久化,但是不在session缓存中,通过lock(),

update(),saveOrUpdate又会转换成持久态。 通过get(),load(),find(),iterate()获得的对象直接就是持久态的。

Spring的工作原理:

在SSH框架中spring充当了管理容器的角色。我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,

程序员在与数据库进行交互时可以不用书写大量的SQL语句。Struts是用来做应用层的,他它负责调用业务逻辑serivce层。

所以SSH框架的流程大致是:Jsp页面----Struts------Service(业务逻辑处理类)---Hibernate(左到右) 

struts负责控制Service(业务逻辑处理类),从而控制了Service的生命周期,这样层与层之间的依赖很强,属于耦合。

这时,使用spring框架就起到了控制Action对象(Strus中的)和Service类的作用,两者之间的关系就松散了,Spring的Ioc机制(控制反转和依赖注入)正是用在此处。 Spring的Ioc(控制反转和依赖注入):

控制反转:就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控。

依赖注入:组件之间的依赖关系由容器在运行期决定 ,由容器动态的将某种依赖关系注入到组件之中。

使用Spring的第二个好处(AOP应用):

事务的处理: 

在以往的JDBCTemplate 中事务提交成功,异常处理都是通过Try/Catch 来完成,而在Spring中。

Spring容器集成了TransactionTemplate,她封装了所有对事务处理的功能,包括异常时事务回滚,操作成功时数据提交等复杂业务功能。这都是由Spring 容器来管理,大大减少了程序员的代码量,也对事务有了很好的管理控制。

Hibernate中也有对事务的管理,hibernate 中事务管理是通过SessionFactory 创建和维护Session 来完成。而Spring 对SessionFactory配置也进行了整合,不需要在通过hibernate.cfg.xml来对SessionaFactory进行设定。

这样的话就可以很好的利用Sping对事务管理强大功能。

避免了每次对数据操作都要现获得Session实例来启动事务/提交/回滚事务还有繁琐的Try/Catch操作。

这些也就是Spring中的AOP(面向切面编程)机制很好的应用。一方面使开发业务逻辑更清晰、专业分工更加容易进行。

另一方面就是应用Spirng AOP隔离降低了程序的耦合性使我们可以在不同的应用中将各个切面结合起来使用大大提高了代码重用度。

以上是什么是ssh框架原理及流程的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何评估Java框架商业支持的性价比 如何评估Java框架商业支持的性价比 Jun 05, 2024 pm 05:25 PM

评估Java框架商业支持的性价比涉及以下步骤:确定所需的保障级别和服务水平协议(SLA)保证。研究支持团队的经验和专业知识。考虑附加服务,如升级、故障排除和性能优化。权衡商业支持成本与风险缓解和提高效率。

PHP 框架的学习曲线与其他语言框架相比如何? PHP 框架的学习曲线与其他语言框架相比如何? Jun 06, 2024 pm 12:41 PM

PHP框架的学习曲线取决于语言熟练度、框架复杂性、文档质量和社区支持。与Python框架相比,PHP框架的学习曲线更高,而与Ruby框架相比,则较低。与Java框架相比,PHP框架的学习曲线中等,但入门时间较短。

PHP 框架的轻量级选项如何影响应用程序性能? PHP 框架的轻量级选项如何影响应用程序性能? Jun 06, 2024 am 10:53 AM

轻量级PHP框架通过小体积和低资源消耗提升应用程序性能。其特点包括:体积小,启动快,内存占用低提升响应速度和吞吐量,降低资源消耗实战案例:SlimFramework创建RESTAPI,仅500KB,高响应性、高吞吐量

Astar质押原理、收益拆解、空投项目及策略 & 操作保姆级攻略 Astar质押原理、收益拆解、空投项目及策略 & 操作保姆级攻略 Jun 25, 2024 pm 07:09 PM

目录Astar Dapp 质押原理质押收益 拆解潜在空投项目:AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap 质押策略 & 操作“AstarDapp质押”今年初已升级至V3版本,对质押收益规则做了不少调整。目前首个质押周期已结束,第二质押周期的“投票”子周期刚开始。要获取“额外奖励”收益,需把握此关键阶段(预计持续至6月26日,现余不到5天)。我将细致拆解Astar质押收益,

Java框架的性能比较 Java框架的性能比较 Jun 04, 2024 pm 03:56 PM

根据基准测试,对于小型、高性能应用程序,Quarkus(快速启动、低内存)或Micronaut(TechEmpower优异)是理想选择。SpringBoot适用于大型、全栈应用程序,但启动时间和内存占用稍慢。

golang框架文档最佳实践 golang框架文档最佳实践 Jun 04, 2024 pm 05:00 PM

编写清晰全面的文档对于Golang框架至关重要。最佳实践包括:遵循既定文档风格,例如Google的Go编码风格指南。使用清晰的组织结构,包括标题、子标题和列表,并提供导航。提供全面准确的信息,包括入门指南、API参考和概念。使用代码示例说明概念和使用方法。保持文档更新,跟踪更改并记录新功能。提供支持和社区资源,例如GitHub问题和论坛。创建实际案例,如API文档。

如何为不同的应用场景选择最佳的golang框架 如何为不同的应用场景选择最佳的golang框架 Jun 05, 2024 pm 04:05 PM

根据应用场景选择最佳Go框架:考虑应用类型、语言特性、性能需求、生态系统。常见Go框架:Gin(Web应用)、Echo(Web服务)、Fiber(高吞吐量)、gorm(ORM)、fasthttp(速度)。实战案例:构建RESTAPI(Fiber),与数据库交互(gorm)。选择框架:性能关键选fasthttp,灵活Web应用选Gin/Echo,数据库交互选gorm。

golang框架开发实战详解:问题答疑 golang框架开发实战详解:问题答疑 Jun 06, 2024 am 10:57 AM

在Go框架开发中,常见的挑战及其解决方案是:错误处理:利用errors包进行管理,并使用中间件集中处理错误。身份验证和授权:集成第三方库并创建自定义中间件来检查凭据。并发处理:利用goroutine、互斥锁和通道来控制资源访问。单元测试:使用gotest包,模拟和存根进行隔离,并使用代码覆盖率工具确保充分性。部署和监控:使用Docker容器打包部署,设置数据备份,通过日志记录和监控工具跟踪性能和错误。