SSH(Struts2+Spring+Hibernate)框架的项目,该架构重要分为三个条理:
(1)Struts2:担任web层
(2)Spring:营业层的治理
(3)Hibernate:担任数据耐久化
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找到该要求的完成的要领,然后返回运转的效果。
相干引荐:《java开辟教程》
Hibernate事情道理:
1. 读取并剖析设置文件
2.读取并剖析映射信息,建立SessionFactory
3. 翻开Sesssion
4.建立事件Transation
5. 耐久化操纵
6.提交事件
7.封闭Session
8. 封闭SesstionFactory
即经由过程spring治理的Hibernate初始化时加载了xxx.hbm.xml然后读取剖析映射信息,建立了SessionFactory。然后翻开session,经由过程session对事物举行操纵并提交。末了封闭session,封闭SessionFactory。
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的第二个优点(AOP运用):
事件的处置惩罚:
在以往的JDBCTemplate 中事件提交胜利,非常处置惩罚都是经由过程Try/Catch 来完成。Spring容器集成了TransactionTemplate,它封装了一切对事件处置惩罚的功用,包含非常时事件回滚,操纵胜利时数据提交等庞杂营业功用。这都是由Spring 容器来治理,大大减少了顺序员的代码量,也对事件有了很好的治理掌握。Hibernate中也有对事件的治理,hibernate 中事件治理是经由过程SessionFactory 建立和保护Session 来完成。而Spring 对SessionFactory设置也举行了整合,不须要在经由过程hibernate.cfg.xml来对SessionaFactory举行设定。
如许的话就能够很好的应用Sping对事件治理壮大功用。
避免了每次对数据操纵都要现取得Session实例来启动事件/提交/回滚事件另有烦琐的Try/Catch操纵。
这些也就是Spring中的AOP(面向切面编程)机制很好的运用。一方面使开辟营业逻辑更清楚、专业分工越发轻易举行。
另一方面就是运用Spirng AOP断绝降低了顺序的耦合性使我们能够在差别的运用中将各个切面结合起来运用大大提高了代码重费用。
以上就是ssh框架道理及流程是什么的细致内容,更多请关注ki4网别的相干文章!