【SSH2框架(理论篇)】 这⼏天⼀直在学习使⽤SSH2框架,对于框架本⾝的使⽤并不是很困难,相信经过多锻炼就能够熟练的掌握框架的使⽤,让我匪夷所思的是在使⽤框架的时候感觉很熟悉,好像在哪⾥⽤过似得。就在某次查看代码的时候突然闪现了⼀个想法,SSH2框架和经典三层很相似,当然经过翻阅资料发现我的想法还是有理论依据的,接下来将会证实该猜想。⼀、SSH2初识 我们通常所说的SSH2框架其实是有三种框架集成的,它们分别是基于MVC模式的Struts2框架和基于IoC模式的 Spring框架以及对象/关系映射框架Hibernate,之所以会产⽣这么框架是因为J2EE的诟病,因为J2EE的多层结构过于复杂,想要更加效率的开发⼤型的J2EE项⽬就必须运⽤其它的框架和设计模式来整合这种多层结构提⾼软件的质量。 Note:框架⼀般具有即插即⽤的可重⽤性、成熟的稳定性以及良好的团队协作性。 想要深⼊了解SSH框架就必须来看看它的框架图,从它的框架图上来讨论分析它的执⾏过程。如下图为SSH框架的基本结构图。 系统的基本业务流程:在表⽰层中,⾸先通过JSP页⾯实现交互界⾯,负责接收请求(Request)和传送响应(Response),然后Struts根据配置⽂件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。⽽在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。 具体的内部框架的请求过程会在下篇博客中详细讨论。⼆、SSH2 Vs 经典三层 先来回顾下经典的三层架构,在开发时为了实现程序解耦的⽬的,我们把程序分成了三个层次,分别是显⽰层(User Show Layer)、业务逻辑层(Business Logic Layer)、数据持久层(Data Access Layer)。这是最基础的开发架构,也就是将程序按照我们通常理解的那样拆分开,每⼀层只专注⼀种事物,这样每⼀层只要实现相应的接⼝就能很好的降低了程序集之间的耦合。 Note:在有的教程中三层架构可能会有实体层(Entity Layer),其实它是三层中的参数,各层之间进⾏参数传递时需要采⽤的即为实体层中的表实体。 联系经典的三层我们不难看出SSH2框架的实现其实就是经典的三层结构,只不过在三层结构中的每⼀层中集成的是单独的框架,尤其是在表⽰层中采⽤的是基于MVC模式的Struts2来配置,当页⾯进⾏请求后Struts会根据配置⽂件(Struts2中为Struts2.xml)将ActionServlet接收到的Request请求委托给相应的Action处理。然后在业务层中,管理服务组件的Spring IoC负责向Action提供业务模型(Model)组件等来完成业务逻辑。⽽在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。结语 通过上⾯的对⽐不难发现其实SSH2框架采⽤的是经典的三层模式,将J2EE分层结构进⾏了良好的整合,在开发时很⽅便。但是对于每个框架的内部执⾏机制没有做过多的讨论,相信在理解上可能会有很多疑惑,为了解决疑惑,将会在下篇⽂章中重点讨论Struts、Spring、Hibernate框架的内部执⾏机制。