Struts2 + Spring + Hibernate 入门 1

来源:互联网 发布:php __isset 在哪用 编辑:程序博客网 时间:2024/05/17 07:35

用工具之前先了解工具,SSH不是一个框架的三部分,而是三个不同框架集成使用,它们既可以单独使用,也可以与其他工具进行搭配,三者之间比较好的遵循了设计模式里的“高内聚低耦合”原则,学习和使用比较方便,尤其是利于快速开发web应用程序,构建灵活、易于扩展,目前比较流行。


基于MVC的分层原理,一个集成了SSH的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和实体层。

下面是一个大致的示意图:



以web应用为例,整个业务流程大致是这样的:

1在表示层中,首先通过JSP或html等类型的页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts2根据配置文件(struts.xml)将Request委派给相应的Action处理。

2在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。

3在持久层中,则依赖于Hibernate的配置文件(*.hbm.xml)来完成对象化映射和数据库交互,用户无需在具体代码中暴露类SQL语句,处理DAO组件请求的数据,并返回处理结果。


有上述内容可以看出,Struts2主要负责MVC中C的职能。



一、Struts2

 表面上看,与很多向后兼容的框架不同,Struts1和Struts2是两种差别巨大的产品,可以参考下面文章:

《 Struts1与Struts2的区别》

Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品而非Struts1的升级。


二、Spring

百度出来的结果:Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。


为了达成IoC,就有赖Spring的核心机制:依赖注入。依赖注入使应用中的各种组件不需要以硬编码方式耦合,甚至无须使用工厂模式。当一个实例需要另一个实例时,通过Spring框架的配置文件(*.bean.xml),系统自动提供所需要的实例,无须.java程序显式获取。这种解耦方式类似于EJB(EJB上手困难),但Spring使得开发人员使用基本的JavaBean来完成以前只可能由EJB完成的事情,而且其用途不仅限于服务器端的开发,从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。


在编码实践中,Spring又很像中间层容器,向上与MVC框架整合,向下与持久层框架(例如Hibernate)整合,大大提高开发速度。


三、Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。

Hibernate执行流程如下:



使用Hibernate的主要原因:

1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2、很大程度的简化DAO层的编码工作,将软件开发人员从大量相同的数据持久层相关编程工作中解放出来,开发更对象化,减少冗余代码和工作量。

3、移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变原hibernate代码。

4、支持透明持久化,因为hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性(不改变原有model的代码结构)。

0 0
原创粉丝点击