定义
SSH是Struts、Spring、Hibernate的一种集成框架,是目前较为流行的一种web应用程序开源框架,主要帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的web应用程序。
Struts
一种基于JavaEE平台的MVC框架,是用来控制的。在struts框架的模型部分,负责业务跳转。Struts对model、view、controller都提供了对应的组件。Model部分由actionFrom和javaBean组成,其中actionForm用于将用户的请求参数封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。View采用jsp和struts标签库实现。controller有两个部分组成——系统核心控制器,业务逻辑控制器。系统核心控制器,对应上边的ActionServlet。该控制器继承了HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。
Spring
主要是用来管理Struts和Hibernate,是一个轻量级的控制反转和面向切面的容器框架。这个具体可以参考博客Spring框架解析。
Hibernate
一种ORM框架,对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲得使用对象编程思维来操纵数据库。Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。其中重点说一下SessionFactory.
SessionFactory接口:SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
SSH与SSM
SSH与SSM就差一个字母,那他们之间到底有什么联系呢?
SSM:Spring-MVC,Spring,MyBatis,详细的区别请clickSSH和SSM两个框架的浅显的区别。
SSH配置文件说明
Struts标签库:通过它可以存取对象的任艺术型、调用对象的方法、遍历整个对象的结构图,实现字段类型转换等功能。
JSP:HTML文件插入java程序段和JSP标记。
web.xml:struts核心过滤器和监听器。
struts.xml:管理应用中的Action映射,以及Action处理结果和物理资源的映射。
applicationContext.xml:spring配置文件,整合了struts和Hibernate。
*.hbm.xml:ORM映射文件,实体和表的映射关系通过XML来描述的文件。
SSH框架优缺点
优点
1.SSH架构各层之间分工特别清晰,极大程度解耦合,灵活,可维护,可扩展。
2.spring管理对象的实例化,把对象的创建和获取放到了外部,更加灵活方便。
3.Hibernate避免了JDBC连接数据库的冗余复杂。
缺点
1.struts层面太多,对小应用不适用,远不如javaBean+JSP简洁快速。
2.spring使得jsp中要写很多代码,控制器过于灵活,缺少一个公用控制器。
3.Hibernate在处理批量数据时ORM框架不适用。
业务流程
系统的基本业务流程是: 在表示层中,首先通过JSP页面实现交互界面,负责接收请求(Request)和传送响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。