【SSH学习笔记】浅谈SSH框架
说在前面
本学期我们有一门课叫做Java EE,由陈老师所授,主要讲的就是Java EE 中的SSH框架。 由于陈老师授课风格以及自己的原因导致学了整整一学期不知道在讲什么,所以才有了自己重新学习总结的博客,其中可能会有一些错误和描述解释不恰当的地方,望读者能及时提出。
什么是SSH框架
官方的说法:SSH是 struts+spring+hibernate的一个集成框架,是目前较流行的一种web应用程序开源框架。
SSH不是一个框架,而是把多个框架(Struts、Spring以及Hibernate)紧密的结合在一起,用于构建灵活、易于扩展的多层Web应用程序。
Java EE架构大致分为以下几个层次:
- 实体层(POJO层)
- 数据访问层(DAO层)
- 业务逻辑层(Service层)
- 控制器层(Controller层)
- 表现层(View层)
其中SSH框架的系统从职能上分大致可以分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层)。
由SSH构建系统的基本业务流程是:
1、在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。
2、在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。
3、在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。
采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。
浅谈Struts
什么是Struts
从简单性来看,Struts是这三个框架中最简单的一个,它是基于MVC的框架。它通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC的一个具体实现或着说是MVC的一个具体产品。
Struts的核心构成
Struts的核心同样也是MVC的核心,Struts是MVC的一个具体产品。
(1)Model
由Action、ActionForm以及JavaBean组成,其中ActionForm用于将用户请求的参数,封装成为ActionForm对象,我们可以理解为实体,由ActionServlet转发给Action,Action处理用户请求,将处理结果返回到界面。
(2)View
该部分采用JSP+大量的taglib,实现页面的渲染。
(3)Controller
Controller是Struts的核心控制器,负责拦截用户请求,通过调用Model来实现处理用户请求的功能。
为什么使用Struts
首先,Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展,减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化
另外, struts具有页面导航功能,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
浅谈Hibernate
什么是Hibernate
Hibernate是一种Java语言下的ORM(Object-Relation Mapping)的解决方案的一种框架,实现了数据持久化功能。Hibernate能将对象模型所表示的JOPO实体映射到基于SQL的关系模型结构中,对JDBC进行了最大限度地对象封装,使得程序员可以通过面向对象地编程思维来操作数据库。
其实在Struts2里面也是用到了很多映射的思想,比如:execute()方法,这个以后再例子中大家能很好地体会到,这里就不详谈。
Hibernate的核心构成
- 会话工厂(SessionFactory)
配置对象被用于创造一个SessionFactory对象,使用提供的配置文件为应用程序依次配置Hibernate,并允许实例化一个会话对象。SessionFactory是一个线程安全对象并由应用程序所有的线程所使用。
SessionFactory是一个重量级对象所以通常它都是在应用程序启动时创造然后留存为以后使用。每个数据库需要一个SessionFactory对象使用一个单独的配置文件。所以如果你使用多种数据库那么你要创造多种SessionFactory对象。
- 会话(Session)
一个会话被用于与数据库的物理连接。Session对象是轻量级的,并被设计为每次实例化都需要与数据库的交互。持久对象通过 Session
对象保存和检索。Session 对象不应该长时间保持开启状态因为它们通常情况下并非线程安全,并且它们应该按照所需创造和销毁。
- 事务(Transaction)
事务对象指定工作的原子单位,它是一个可选项.org.hibernate.Transaction接口提供事务管理的方法。
- Query 对象
Query对象使用SQL或者Hibernate查询语言(HQL)字符串在数据库中来检索数据并创造对象。一个查询的实例被用于连结查询参数,限制由查询返回的结果数量,并最终执行查询。
- Criteria 对象
Criteria对象被用于创造和执行面向规则查询的对象来检索对象。
- Configuration 对象
配置对象是你在任何Hibernate应用程序中创造的第一个Hibernate对象,并且经常只在应用程序初始化期间创造。它代表了Hibernate所需一个配置或属性文件,配置对象提供了两种基础组件。
数据库连接:由Hibernate支持的一个或多个配置文件处理。这些文件是hibernate.properties和hibernate.cfg.xml。
类映射设置:这个组件创造了 Java类和数据库表格之间的联系。
浅谈Spring
Spring是J2EE应用程序框架,是轻量级的IoC(Inversion of Control,控制反转)和AOP(Aspectted Programming,面向切面)的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,Hibernate框架等组合使用。
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式。
- IoC(Inversion of Control)控制反转
对象创建责任的反转,在spring中BeanFacotory是IoC容器的核心接口,负责实例化,定位,配置应用程序中的对象及建立这些对象间的依赖。
XmlBeanFacotory实现BeanFactory接口,通过获取xml配置文件数据,组成应用对象及对象间的依赖关系。
spring中有三种注入方式,一种是set注入,一种是接口注入,另一种是构造方法注入。
- AOP面向切面编程
面向方面的编程,即AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP
的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
为什么使用Spring
没有Spring,Struts和Hibernate可以很好的运行,我称这样的模式为“独木桥”,但是有了Spring,Struts和Hibernate能够更好的结合在一起,协调的工作。我称这样的模式为“阳光大道”。Spring的核心思想是IoC和AOP,Spring使得管理对象更加方便,极大的降低组件之间的耦合度,实现了软件各层之间的解耦。Spring的优点还有很多,我们就不再累述了。
后言
这里只是浅谈了一些关于SSH框架的基础知识,便于大家宏观来了解认识什么是SSH框架,其实要想体会框架的精妙之处还得自己做一做简单例子才能体会,后续我会将我做的小例子以我个人学习过程分享出来。
本文资源图文部分来源于网络,这里特别感谢