SSH各自作用

Spring:主要特点Spring的Ioc(控制反转和依赖注入)


控制反转:就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直
接操控。
依赖注入:组件之间的依赖关系由容器在运行期决定 ,由容器动态的将某种依赖关系注
入到组件之中。


在SSH框架中spring充当了管理容器的角色。我们都知道Hibernate用来做持久层(持久层 即是对数据进行持久化操作,简单来说就是修改数据库数据),因
为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语
句。Struts是用来做应用层的,他它负责调用业务逻辑serivce层(对页面的请求进行处理)。所以SSH框架的流程大致
是:Jsp页面----Struts------Service(业务逻辑处理类)---Hibernate(左到右)struts
负责控制Service(业务逻辑处理类),从而控制了Service的生命周期,这样层与层之间的
依赖和强,属于耦合。这时,使用spring框架就起到了控制Action对象(Strus中的)和
Service类的作用,两者之间的关系就松散了,Spring的Ioc机制(控制反转和依赖注入)正
是用在此处。




从上面我们不难看出:从头到尾Action仅仅是充当了Service的控制工具,这些具体的
业务方法是怎样实现的,他根本就不会管,也不会问,他只要知道这些业务实现类所提供的
方法接口就可以了。而在以往单独使用Struts框架的时候,所有的业务方法类的生命周期,
甚至是一些业务流程都是由Action来控制的。层与层之间耦合性太紧密了,既降低了数据访
问的效率又使业务逻辑看起来很复杂,代码量也很多。,Spring容器控制所有Action对象和
业务逻辑类的生命周期,由与上层不再控制下层的生命周期,层与层之间实现了完全脱耦,
使程序运行起来效率更高,维护起来也方便。
使用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隔离降低了
程序的耦合性使我们可以在不同的应用中将各个切面结合起来使用大大提高了代码重用度。




1。struts是框架的表现层,Struts是对MVC构架的具体实现


Struts的MVC三层结构:


(1)视图层:Struts采用JSP作为MVC的视图。每一视图都是采用了定制标签库的JSP页面,这些定制标签库则由Struts框架提供。全部表单元素都是用定制标签编码的,所以这些页面能够很方便地同控制器交互。每一个表单都通过映射JSP到Servlet的请求这一方式指向控制器特定入口点。


(2)控制层:控制器就是Java Servlet,由Struts框架提供,负责视图和模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的Java类以进行相应的处理,控制器还指定下一个视图的位置。


(3)模型层:JavaBean就是模型的代表。对进入控制器的每个入口点来说,Bean的作用是存储从视图获取的信息,同时被称为“动作类”,一种Java类则被指定为对表单输入采取行动。动作类(Action Class)实现了业务逻辑。




下面是Struts在框架结构中所负责的工作: 


(1) 为用户管理请求和响应;


(2) 提供一个控制器代理调用业务逻辑和其它上层处理;
(3) 处理从其它层掷出给一个Struts Action的异常;
(4) 为显示提供一个模型;


(5) 执行用户接口验证。


2.Spring实现了反转控制(Inversion of Control)和面向方面编程(Achievement-Oriented Programming)。
Spring框架的能实现应用的分层架构,在应用中要使用的对象可以被一个简单的XML文件连在一起,
这个XML文件含有到像事务管理器、对象工厂、包含业务逻辑的服务对象、和数据存取对象这些对象的引用。


Spring 框架是一个分层架构,由 7 个定义良好的模块组成。
Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,其主要优势有如下几点:


(1) Spring能有效地组织你的中间层对象。 


(2) 通过一种在不同应用程序和项目间一致的方法来处理配置文件,消除各种自定义格式的属性文件的需要,仅仅需要看看类的JavaBean属性。反转控制的使用帮助完成了这种简化。


(3) Spring能够帮助我们真正意义上实现针对接口编程。


(4) Spring的设计会让使用它创建的应用尽可能少的依赖于它的APIs,在Spring应用中的大多数业务对象没有依赖于Spring。 


(5) 使用Spring构建的应用程序易于单元测试。 


(6) Spring使EJB成为一个实现选择,而不是必需的选择。你可以用POJO或当地EJB来实现业务接口,却不会影响到调用代码。 


(7) Spring能使用AOP提供声明性事务管理,可以不直接操作JTA也能够对事务进行管理。


(8) Spring为数据存取提供了一个一致的框架,不论是使用JDBC还是O/R mapping的产品。


(9) MVC Web框架,提供一种清晰,无侵略性MVC实现方式。


Spring业务层在框架中负责下面这些事情:


(1) 管理事务;


(2) 预留和其它层交互的接口;


(3) 管理业务层对象之间的依赖;


(4) 增加在表现层和持久层之间的灵活性,使它们互不直接通讯;


(5) 从表现层中提供一个上下文给业务层获得业务服务;


(6) 管理从业务逻辑到持久层的实现;


(7) 处理应用程序的业务逻辑和业务验证;




Hibernate是一种ORM映射工具,它不仅提供了从Java类到数据表之间的映射,
也提供了数据查询和恢复机制。相对于使用JDBC和SQL来手工操作数据库,使用Hibernate,可以大大减少操作数据库的工作量。
Hibernate可以和多种Web服务器或者应用服务器良好集成。




Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,
使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,
既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,Hibernate还可以在应用EJB的J2EE架构中取代CMP,
完成数据持久化的重任。
Hibernate框架的优势有下面几点:


(1) Hibernate具有可扩展性;


(2) Hibernate既适用于独立的Java程序,也适用于Java Web应用,而且还可以在J2EE架构中取代CMP,完成持久化任务,Hibernate能集成到会话EJB和基于BMP的实体EJB中;


(3) Hibernate可以和多种WEB服务器,应用服务器良好集成,并且支持所有的数据库服务器;


(4) Hibernate有详细的参考文档,使用方便,容易上手。


下面是Hibernate持久层在框架中所负责的工作:


(1) 查询相关的信息成为对象。


Hibernate通过HQL的面向对象的查询语言或者使用条件表达式API来做这个事情。
HQL非常类似于SQL。只是把SQL里的table和columns用Object和它的fields代替;


(2) 保存、更新、删除储存在数据库中的信息; 


Hibernate这样的高级“对象-关系”映射框架提供对大多数主流SQL数据库的支持,它们支持“父/子”关系、事务处理、继承和多态。




域对象层主要做两件事:


(1) 编写相关接口: DAO类一般要使用Spring的声明式事务机制,而声明式事务机制是使用Spring AOP来实现的。
Spring AOP默认使用的Java动态代理必须基于接口。本系统是面向接口编程;


(2)实现相关接口:在实现接口的同时,需要继承HibernateDaoSurpport类,这样可以省去对SessionFactory与HibernateTemplate的处理。


二。总概括spring+hibernate+struts作用




1.struts就是一个mvc的架构,在控制器,视图和模型方面都有其特定的组件,
所以我们在SSH组合中,更多的是利用了controller这个组件。很多人感觉上是利用Struts的View层,
的确是这样的,因为我们应用了很多struts的标签,
整个页面的工作核心还是在表单提交给action controller的动作上,
而在struts的定义中,这是属于C这一层的。所以我们利用的确是controller。


2.spring的话最主要的功能还是它的ioc和aop,即注入依赖和面向切面编程它也有其自己的mvc,
当然你可以用struts框架而不用spring的mvc. 
3.Hibernate还可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任,
使用Structs+Spring+Hibernate的项目主要是在web层利用了struts的mvc框架,在数据库层用hibernate的数据库访问功能,


在bean管理和服务方面利用spring的ioc和aop.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值