APP下载

基于J2EE的轻量级SSH框架应用

2017-11-09曹静李梅付惠茹李沂桥严开

电子技术与软件工程 2017年19期
关键词:面向对象

曹静++李梅++付惠茹++李沂桥++严开

摘 要针对当前Web应用程序开发面临的问题,结合目前比較流行的开源框架Spring、Struts和Hibernate,提出了一种开发J2EE Web应用的轻量级解决方案,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。通过分析Struts、Spring、Hibernate各个框架自身的特点,优势和不足,依照需求对框架进行组合搭建,以MVC分层思想实现Web系统上的不同分层,表示层用Struts实现,用Hibernate框架将实现数据的持久化,业务逻辑层用Spring框架实现,同时对SSH整合框架的整体性能进行了改进和优化。引入框架技术,大大降低了企业的开发成本,同时提高了开发效率。

【关键词】SSH J2EE 面向对象 Web开发

大型企业级Web应用系统的开发通常要求有一个良好的软件架构、便于协作开发和扩展升级,而传统的开发模式不能很好地满足这些要求。本文针对当前Web应用程序开发面临的问题,结合目前比较流行的开源框架SSH(Spring、Struts、Hibernate),提出一种开发J2EE 企业级Web应用的轻量级解决方案,并通过案例具体说明如何将这一方案应用到实际项目中。

1 框架技术

框架一般具有即插即用的可重用性、成熟的稳定性以及良好的团队协作性。J2EE复杂的多层结构决定了大型的J2EE项目需要运用框架和设计模式来控制软件质量。目前,市场上出现了一些商业的、开源的基于J2EE的应用框架,其中主流的框架技术有:基于MVC模式的Struts框架和基于IoC模式的Spring框架以及对象/关系映射框架Hibernate等。

1.1 表示层框架Struts

Struts是一个在JSP Model2基础上实现的MVC框架,主要分为模型(Model)、视图(Viewer)和控制器(Controller)三部分,其主要的设计理念是通过控制器将表现逻辑和业务逻辑解耦,以提高系统的可维护性、可扩展性和可重用性。Struts框架的体系结构如下:

1.1.1 视图

视图部分主要由JSP页面组成,其中没有流程逻辑、业务逻辑和模型信息,只有标记。Struts自身包含了一组标记库(TagLib),这也是Struts的精华之一,灵活运用它们可以简化JSP页面的代码,提高开发效率。

1.1.2 控制器

Struts中的Controller主要是其自身提供的ActionServlet。ActionServlet接收所有来自客户端的请求并根据配置文件(struts-config.xml)中的定义将控制转移到适当的Action对象。

1.1.3 模型

Struts没有定义具体Model层的实现,Model层通常是和业务逻辑紧密相关的,有持续化的要求。目前在商业领域和开源世界,都有一些优秀的工具可以为Model层的开发提供便利。

1.2 业务逻辑层框架Spring

Spring是一个解决了许多J2EE开发中常见问题并能够替代EJB技术的强大的轻量级框架。这里所说的轻量级指的是Spring框架本身,而不是指Spring只能用于轻量级的应用开发。Spring的轻盈体现在其框架本身的基础结构以及对其他应用工具的支持和装配能力。与EJB这种庞然大物相比,Spring可使程序研发人员把各个技术层次之间的风险降低。

Spring框架的核心是控制翻转IoC(Inversion of Control)/依赖注入DI(Dependence Injection)机制。IoC是指由容器中控制组件之间的关系(这里,容器是指为组件提供特定服务和技术支持的一个标准化的运行时的环境)而非传统实现中由程序代码直接操控,这种将控制权由程序代码到外部容器的转移,称为“翻转”。DI是对IoC更形象的解释,即由容器在运行期间动态地将依赖关系(如构造参数、构造对象或接口)注入到组件之中。Spring采用设值注入(使用Setter方法实现依赖)和构造子注入(在构造方法中实现依赖)的机制,通过配置文件管理组建的协作对象,创建可以构造组件的IoC容器。这样,不需要编写工厂模式、单例模式或者其他构造的方法,就可以通过容器直接获取所需的业务组件。

1.3 数据持久层框架Hibernate

O/R mapping技术是为了解决关系型数据库和面向对象的程序设计之间不匹配的矛盾而产生的。Hibernate是目前最为流行的O/R mapping框架,它在关系型数据库和Java对象之间做了一个自动映射,使得程序员可以以非常简单的方式实现对数据库的操作。

Hibernate通过对JDBC的封装,向程序员屏蔽了底层的数据库操作,使程序员专注于OO程序的开发,有助于提高开发效率。程序员访问数据库所需要做的就是为持久化对象编制xml映射文件。

底层数据库的改变只需要简单地更改初始化配置文件(hibernate.cfg.xml或者hibernate.properties)即可,不会对应用程序产生影响。

Hibernate有自己的面向对象的查询语言HQL,HQL功能强大,支持目前大部分主流的数据库,如Oracle、DB2、MySQL、Microsoft SQL Server等,是目前应用最广泛的O/R映射工具。Hibernate为快速开发应用程序提供了底层的支持。

2 集成SSH的新型,轻量级的J2EE架构

集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层。其中使用Struts作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,利用Hibernate框架对持久层提供支持,业务层用Spring支持。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring完成业务逻辑。

系统的基本业务流程是: 在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。而在持久层中,则依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

采用上述开发模型,不仅实现了视图、控制器与模型的彻底分离,而且还实现了业务逻辑层与持久层的分离。这样无论前端如何变化,模型层只需很少的改动,并且数据库的变化也不会对前端有所影响,大大提高了系统的可复用性。而且由于不同层之间耦合度小,有利于团队成员并行工作,大大提高了开发效率。

通过查找文献发现已经应用的组合框架有struts与spring组合和spring与hibernate组合。

2.1 struts与spring

优点:当需要修改大量代码时,只需要修改spring的配置文件即可,提高代码的复用性和可移植性,大大节省了开大的周期。

缺点:Action将会和Spring耦合在一起。如果有多个Action类都继承MappingDispatchActionSupport的话你将会每次都需要调用getWebApplicationContext()获取ApplicationContext的实例。这样如果放弃使用spring的话,所要修改的代码量将非常大。

2.2 Spring与hibernate

优点:Spring提供的是框架级的事务管理,在使用session.beginTransaction()或tx.commit()的时候就是使用了hibernate的API,这样代码就和hibernate耦合了。如果以后想用或JPA来代替hibernate做持久化工作,太多代码需要改动,如果使用spring的事务控制,就不再需要在代码中是用hibernate的API,同样是用JTA或JPA来代替hibernate,只需要修改spring的配置文件就可以替换了持久层框架。

缺点:由于对持久层封装过于完整,导致开发人员无法对SQL进行优化,无法灵活使用JDBC的原生SQL,Hibernate封装了JDBC,所以没有JDBC直接访问数据库效率高。要使用数据库的特定优化机制的时候,不适合用Hibernate 。

对于框架组合的一般方式进行总结归纳,分析各自的优缺点和适用条件,通过Spring与hibernate的组合方式,可以发现无法进行SQL优化,增加数据库访问时间等缺点,针对这种组合存在的问题,结合具体的需求实践,我们提出了struts,spring,iBatis和struts,spring,jdbc的组合方式,然后结合具体实现的系统验证该组合模式的有效性。并通过后面的学习和实践,分析和验证其他的框架组合模式。

3 研究方案及准备采取的技术路线、拟解决的关键问题

3.1 研究方案

根据Struts、Spring、Hibernate各个框架的功能和分层结构,对比研究分析出每个框架的适用条件和适用属性,并且以一个具体实现的系统展现每个框架的应用:

采用以下开发工具:MyEclipse,Tomcat和MySQL数据库

客户端:采用jQuery标签和Struts框架为主要展示层,提供丰富的用户交互UI功能,跨平台的使用为用户带来无限便捷,并且为用户带来各种新颖的用户体验。

数据交互通信层:采用Spring框架,使用统一的接口,实现数据由前端到后端的传输,增强数据的时效性。

数据存储管理层:采用MySQL数据库和Hibernate框架,对数据进行持久化和SQL注入,通过Hibernate框架让系统对数据库的操作更简单方便。

3.2 技术路线

对比Struts、Spring、Hibernate各自框架的优缺点、设计原则和运行流程,分析各种组合框架的适用性。

Struts和Spring的整合,首先通过加载Spring的应用环境Application,自动获取了Spring中设置的bean对象,将Struts中ActionServlet请求Action纳入Spring容器中的方法将Struts和Spring整合起来。

Hibernate和Spring的整合主要是Spring对SessionFactory的管理。

3.3 拟解决的关键问题

(1)采用jQuery和Struts框架技术实现页面展示部分;

(2)搭建SSH框架,使框架可以运行;

(3)采用Spring的IOC(控制反转和依赖注入)技术实现容器动态地将某种依赖 关系注入到组件之中;

(4)采用Hibernate技术实现对数据的持久化和对对象的直接操作;

(5)根据业务需求条件的不同,采用合适的框架组合。

4 结论

为了解决传统基于J2EE架构的Web应用系统中的一些弊端,找到适用于企业级应用软件系统需求的特点和开发方法,通过分析J2EE多层分布式架构应用模型,采用轻量级的SSH组合框架,并对组合框架的性能进行改进和优化,最大化各个框架的自身优势,以得到具备以下优点的框架:

(1)重用设计,用来简化设计的复杂性;

(2)重用代码,用来减少编码和测试的时间,缩短软件开发周期,提高开发效率;

(3)提高应用系统的可扩展性、可维护性和可移植性;

(4)降低各层之间的藕合度。

为Web应用开发人员提供了一个能够统一使用的开发模式和软件包,开发人员不必关系底层的实现细节,将工作重心放在应用的业务逻辑处理上。减轻了开发人员处理复杂问题的负担,提高开发效率。其次,在应用和分析架构的基础上,可以进行扩展和改进,以适应当前应用的需要,为以后的扩展和维护奠定了基础。

参考文献

[1]万助盛,侯文永.J2EE企业计算平台[J].计算机应用研究,2013(12):38-40.

[2]张友生.软件体系结构[M].北京:北京清华大学出版社,2011(10).

[3]刘瑜,王立福.软件框架开发过程研究[J].计算机工程与应用,2014.

[4]刘晓华,陈亚强.應用开发详解[M].北京:电子工业出版社,2015.

[5]叶娜.J2EE Web应用开发中Struts框架的研究与扩展[J].西安建筑科技大学,2012.

[6]赵强,乔新亮.J2EE应用开发[M].北京:电子工业出版社,2013.

[7]张友生.软件体系结构[M].北京:清华大学出版社,2014(10).

[8]萨师煊,王珊.数据库系统概论(第三版)[M].北京:高等教育出版社,2013(12).

[9]熊伟.Java EE模式框架在中小企业Web实施应用中的研究[D].成都:成都理工大学,2015(06).

[10]孙鑫.Java Web开发详解[M].北京:电子工业出版社,2015.

[11]寇毅,吴力文.基于MVC设计模式的Struts框架的应用方法[J].计算机应用,2013.

作者简介

曹静(1989-),女,贵州省贵阳市人。贵州大学计算机科学与技术学院。主要研究方向为Java Web开发。

作者单位

贵州大学 贵州省贵阳市 550025

猜你喜欢

面向对象
面向对象的计算机网络设计软件系统的开发
面向对象的数据交换协议研究与应用
基于面向对象的Office评测系统的分析
峰丛洼地农作物面向对象信息提取规则集
面向对象的SoS体系结构建模方法及应用
面向对象信息提取中影像分割参数的选择