前几日敲完了ssh网上商城,虽然现在已经敲完了整个系统,却发现自己对于ssh,了解的一点都不多,什么是struts2,什么是spring,什么是hibernate,自己都是稀里糊涂,然后看了一下后面的学习资料,都是对于struts2,jsp啊,hibernate的这些讲解,突然觉得课程安排的果然是很合理,不过在开始后面的学习之前,也需要总结一下自己前面的学习。
ssh这个词,是由struts+spring+hibernate缩写而成的,ssh是目前较流行的一种Web应用程序开源框架。下面咱们来了解一下这个框架。
集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data Access Objects)接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。
上面这段是百度百科的内容,其实我还看不太懂,不过这个不妨碍我会用,从上面这段话可以看出来,ssh框架其实相当于以前学过的.net三层架构,但是用到了反射,而且是面向对象的(目前我能看出这么多。。。)。
Struts2
在网上商城的项目中,我能感觉到的跟struts2有关的就是项目一开始,引入了一些jar包,然后创建了一个struts2的xml文件,每次需要页面跳转的地方,就到xml文件里面配置一下,感觉好像用到了反射。
Spring
struts2的jar包中包括了spring的包。spring在SSH框假中spring充当了管理容器的角色。简单来说就是解耦用的。
Spring的Ioc(控制反转和依赖注入)
控制反转:就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码接操控。
依赖注入:组件之间的依赖关系由容器在运行期决定 ,由容器动态的将某种依赖关系注入到组件之中。
Hibernate
hibernate是用来操作数据库的,像这种.hbm.xml文件都归他管。当然vo中的文件也都归他管。
总结
在ssh中,对象的调用流程是jsp→Action→Service→DAO→Hibernate。
数据的流向是ActiongFormBean接收用户的数据,Action将数据从ActionFromBean中取出,封装成VO或者PO,然后调用业务层的Bean类,完成各种业务处理后再 forward 。而业务层 Bean 收到这个 PO 对象之后,会调用 DAO 接口方法,进行持久化操作。