从网上商城项目中,学习了SSH框架,之前对这个Java框架憧憬已久,现在项目临近尾声,也对它有了一个比较清晰的实践上的认识。
其实通过学习了之前.Net的三层或七层框架、MVC+WCF+AOP等,对这个SSH接触起来也不是很难,甚至可以说比较轻松的,只是它的配置环节开始接触的时候可能觉得比较复杂一些。
对于它的发布环境,开始我们最先使用了.Net发布环境IIS,后来由于MyEclipse-2014自带Tomcat,所以发不起来也很容易,而且JBoss也用过了,用起这个来就更轻松了。
下面谈谈我对SSH的理解。
集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层),对应到我们的项目里也就是Action、Server、Dao和Vo里封装的实体。
一、Struts负责Web层,它是通过采用 Java Servlet/JSP 技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架。
Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展,减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。
另外, struts具有页面导航功能,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系。
二、Spring负责业务层管理。
Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架,同时它也是面向接口的。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。
Spring的以上特性使得开发人员使用基本的JavaBean来完成以前只可能由EJB完成的事情。
总结一下它的几个作用:1、service 为 action 提供统计的调用接口,封装持久层的DAO;2、可以写一些自己的业务方法。3、统一的 javabean 管理方法。4、声明式事务管理。5、集成 Hiberante。
三、Hiberante ,负责持久化层,完成数据库的增删改查操作。
为什么要使用Hibernate?
还记得我们在做ITOO的时候,都是自己封装的查询数据的底层方法,Hibernate干的就是这个事儿。
1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
2、Hibernate是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作,将软件开发人员从大量相同的数据持久层相关编程工作中解放出来,使开发更对象化了。
3、移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变hibernate代码。
4、支持透明持久化,因为hibernate操作的是纯粹的java类,没有实现任何接口,没有侵入性。
小结:Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持。Spring一方面作为一个轻量级的IOC容器,负责查找、定位、创建和管理对象及对象之间的依赖关系,另一方面也使Struts和Hibernate更好地工作。