admin 管理员组文章数量: 1184232
2024年3月28日发(作者:js图片左右移动的代码)
龙源期刊网
基于J2EE技术的SSH框架的改进及应用
作者:翟高粤
来源:《计算机时代》2012年第10期
摘要: 针对SSH框架存在的问题,运用J2EE各种成熟框架与技术对SSH框架进行集成
和扩展,将改进后的SSH框架应用在篮球俱乐部项目的开发和维护中,降低了开发的复杂
性,使开发变得简便和灵活,提高了软件开发和维护效率。
关键词: SSH框架; J2EE技术; Web开发; 篮球俱乐部
中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2012)10-24-03
引言
目前,Java Web轻量级开发的主流技术是SSH(Struts+Spring+Hibernate)框架。但随着软件
开发技术的快速发展,SSH框架表现出安全性、开发过程复杂、功能不够齐全的问题,因此,
对SSH框架进行补充和改进是必要的。
针对SSH框架存在的问题,运用各种成熟框架与技术对SSH框架进行集成和扩展,实践
证明,在项目的开发过程中应用改进后的SSH框架,使开发的效率显著提高,系统的可靠
性、可扩展性和可维护性等各种性能也明显提升。
1 成熟框架和通用技术简介
1.1 常用框架技术
1.1.1 SSH框架
SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮
助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中使用Struts
作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,利用Hibernate框架
对持久层提供支持,业务层用Spring支持。具体做法是:用面向对象的分析方法根据需求提出
一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO接口,并给出Hibernate
的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,
最后由Spring完成业务逻辑。SSH集成框架与技术结构如图1所示。
Compass是基于Lucene之上的,是第一个实现Java的开源搜索引擎框架[1]。Compass封
装了对全文检索引擎lucene的操作,并且提供了Spring/Hibernate的应用层框架,让用户可以
不必深入了解lucene,轻松地在自己的Spring/Hibernate架构的Web应用当中集成全文检索功
龙源期刊网
能。Hibernate可直接操作数据库,当数据发生改变时,可以通过Compass的OSEM对数据索
引进行更新。
1.1.3 Spring MVC框架
Spring MVC框架采用前端控制模式(Front Controller),它是Spring MVC请求中枢,其核
心是DispatcherServlet。Spring MVC的所有请求通过它转发到不同的处理器(Colltroller)处理,
处理完后返回一个Model And View对象。DispatcherServlet查询一个或多个ViewResolver视图
解析器,找到Model And View对象指定的视图对象,视图对象负责渲染返回给客户端。
1.1.4 SWF(Spring Web Flow)框架
Spring Web Flow是Spring框架提供的构建Web应用程序的全功能MVC模块。使用
Spring可插入的MVC架构,可以选择是使用内置的Spring Web框架还是Struts这样的Web框
架。通过策略接口,Spring框架是高度可配置的,而且包含多种视图技术,例如JavaServer
Pages(JSP)技术、Velocity、Tiles、iText和POI。Spring MVC分离了控制器、模型对象、分
派器以及处理程序对象的角色,这种分离让它们更容易进行定制。因此,它的出现极大地提高
了编程效率,尤其适合需要复杂用户交互界面的Web应用程序[2]。
1.1.5 DWR框架
DWR(Direct Web Remoting)是一个开源项目,是基于Java的Ajax实现。它包含服务器端
Java 库、一个DWR Servlet以及JavaScript库。DWR的主要特点是能够将服务器所写的Java
类直接转化为Javascript中所引用的对象,简化了Javascript中的转化操作[3]。
1.2 通用技术介绍
1.2.1 Ajax技术
AJAX(A synchronous JavaScript and XML)实际上是几项技术按一定的方式组合, 在共同的
协作中发挥各自作用的技术[4]。Ajax具有改善B/S模式下交互、带宽性能等优点。Ajax的核
心是JavaScript对象XmlHttpRequest。另外,Ajax为SSH提供了一种高效的数据传输方式,其
常用的数据组织方式有JSON(JavaScript Object Notation)。在Ajax的应用中,通过JSON组织
传输大块数据,优势明显。
1.2.2 表单及时验证器
表单验证器是表单的一种验证方式,当表单提交时,通过它能提高接收数据的有效性,因
此被广泛地应用于各种Web应用程序中。表单验证结合Ajax技术能发挥出实时高效的验证功
能。
龙源期刊网
1.2.3 任务动态调度(Quartz)
Quartz是Web应用开发中广泛使用的任务调度解决方案,它提供的强大任务调度机制允
许开发人员灵活地定义触发器等调度事件表。另外,Quartz提供了可持久化的调度运行环境机
制,在需要时可以保存并恢复调度现场。
1.2.4 事件编程
基于事件的编程是一种优秀的编程方法,是符合人类思考的和行为的一种方法。在以往的
面向过程的编程(C语言)中,程序运行是面向过程的,也就是说是人去迁就机器,去适应机
器,而事件编程是面向对象的编程方法,都是按对象来编程,面向事件编程更能体现事件驱动
的特点,因为任何动作的进行都是在事件的驱动下进行。扩展框架中的事件编程主要通过
Spring 内部提供的事件处理机制来实现。
1.2.5 邮件模板技术Velocity
发送邮件功能是现在企业级应用的最普遍的需求之一。通常HTML格式的邮件大部分的
HTML代码都是固定的,只有少部分是变动的,因此非常适合采用模板技术来解决,达到设计
与数据分离。
Velocity是开源的、应用非常广泛的邮件模板框架。其原理是用动态的数据替换模板的特
殊标签[5]。通过工具类VeloeityEngineUtils和VeloeityEngine,可以将Veloeity模板和数据整
合后方便地返回邮件内容和标题。
1.2.6 控制安全权限
对于任何一个完整的应用系统,完善的认证和授权机制是不可缺少的。Spring Security就
是这样的一个安全框架,它能为J2EE企业应用提供强大而灵活的安全访问控制解决。通过在
Spring容器中配置一组Bean,充分利用Spring的IOC和AOP功能,提供声明式安全访问控制
功能。
1.2.7 单元测试技术(Junit)
单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的
独立单元将在与程序的其他部分相隔离的情况下进行测试。JUnit是一个开放源代码的优秀
Java测试框架,可对表示层、业务层、数据存储层进行单元测试,保证模块的编制正确性。
2 SSH框架的改进
龙源期刊网
由于传统SSH开发框架存在安全、开发繁琐、应用不方便等问题,SSH框架改造的目标
是提供一个设计灵活简便、权限安全便于设计实现、各层易测试、各层及各种集成技术松耦合
的企业应用框架。
2.1 SSH框架改进的目标
⑴ 松藕合:是指集成的各层与各种技术框架耦合性低,相互独立,可以根据业务需要有
选择的应用。
⑵ 灵活简便:是指集成框架采用统一的Spring管理方式,配置简单、应用方便。为软件
开发中的常遇到问题提供了解决方案,如:页面流技术、Ajax数据组织方式、页面验证器、
邮件服务系统、后台应用程序的任务调度和事件驱动框架等。
⑶ 权限安全易控:是指集成框架中全面采用Spring Security对权限和资源进行控制。
⑷ 可测试性:是指为各层提供了测试方案。
2.2 具体实现
⑴ 在数据存取层(Hibernate)增加了Compass存取数据。
⑵ 在MVC(Struts2)层,集成了Spring Web Flow开发页面流程;集成了Spring MVC;
集成了Spring JSON View,用于Ajax操作组织数据;集成了Spring Security控制安全权限;集
成了Spring Test和Junit测试技术,为各层设计了单元测试方案。
⑶ 设计并实现了基于DWR的及时验证器;设计并实现了任务动态调度器;引入了事件编
程和邮件模板技术,并将这些技术集成到SSH框架中。图2展示了SSH集成和扩展的技术与
框架。
3 SSH扩展框架在某市俱乐部管理系统(BallOrganizer)的应用
3.1 项目背景
由于人们对物质的需求向精神需求扩展,推动了俱乐部的发展。如果将IT方面的管理经
验应用于俱乐部的管理,肯定会对俱乐部的管理和发展产生很大作用。BallAdmin项目就是在
这种背景下产生的。
3.2 基本功能
龙源期刊网
BallOrganizer是一个篮球俱乐部管理软件。申请人在申请通过后,在BallOrganizer就有了
自己俱乐部管理空间,可以在自己的管理空间增加会员,增加队伍,开展活动等。图3为系统
功能图。
3.3 SSH扩展框架在系统中的应用
BallOrganizer的开发使用了SSH扩展框架。其中BallOrganizer的MVC层使用了Spring
MVC,由于需求中没有页面流和复杂数据的组织,因此没有使用Spring Web Flow和Spring
JSON View。Spring实现对容器中的对象、事务和其他框架进行管理,Hibernate存取数据,
Compass框架可检索数据,Spring Security对权限安全进行管理控制,Easy Mock对各层进行单
元测试。
另外,BallOrganizer在前台页面使用基于DWR及时验证器验证合法性,任务动态调度对
邮件发送进行调度,邮件模板技术对所有邮件内容进行填充,事件编程方式对BallOrganizer静
态页面变化进行处理。由于篇幅所限,以下仅就单元测试、Spring Security控制权限、Ajax和
任务调度对SSH扩展框架在系统开发中的应用进行描述。
3.3.1 DAO单元测试的应用
DAO的模块划分与系统的功能模块划分完全一致,除去Email不需要DAO以外,其他模
块都有相对应的DAO支持。在实际开发过程中,DAO的许多方法例如增、删、基本查询都是
类似的,可以抽象出一个所有DAO的父类DomainObjectDao。DomainObjectDao主要提供了
更新实体、保存实体、根据实体类获取所有的实体、根据guid获取实体等。图4为DAO继承
结构图。
在DAO完成后,为了保证DAO的正确性,需要对DAO进行单元测试,以下程序实现
BallDao对Ball类的具体测试。
3.3.2 Spring Security控制权限的应用
BallOragnizer具有前台和后台页面,Ball具有前台和后台页面,BallOragnizer可以有无数
多个Ball,并且访问它们的权限完全不同。因此对系统中对URL的管理好坏将直接影响系统
成败。
在BallOragnizer中,对于URL的管理引入了域名分级的思想,就是使用Ball的名称跟在
根URL后,用来标识这个Ball的URL。使用这种方式可以很好地组织系统中URL并且可以
很方便地使用Spring Security来控制权限。表1展示了系统中URL管理。
3.3.3 Ajax应用
龙源期刊网
BallOragnizer中,一个Ball可以有多个团队,并且这些团队可以由用户随意进行拖放排
序。这种功能的实现主要需要Ajax实时数据传输功能实现,需要将前台搜集到的团队序号传
到后台并对相应的团队序号进行修改。
3.3.4 任务调度的应用
BallOrganizer中使用了许多任务调度。任务调度的使用主要分为两种动态安排任务,即任
务动态调度和系统初始时设置的任务调度。任务动态调度使用主要是对Email发送进行任务动
态调度。系统初始时设定的任务调度,主要用于为新注册会员自动发送欢迎信件等。
3.3.5 Compass检索框架的应用
Compass检索框架在BallOrganizer中的主要功能是实现对实体对象的检索和索引更新。与
Spring对Hibernate的支持类似,Compass对Spring集成做了很好的封装,并提供了
CompassTemplate来简化诸如对Session、Transaction、Exception等操作,使用此工具,可以有
效提高检索效率。例如以下代码实现把实体对象Ball存储到Compass索引:
4 结束语
版权声明:本文标题:基于J2EE技术的SSH框架的改进及应用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1711635162a602910.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论