基于ExtJs、Spring和iBATIS的Web系统应用研究

时间:2022-10-01 06:02:28

基于ExtJs、Spring和iBATIS的Web系统应用研究

摘要:在分析ExtJs、Spring和iBATIS三种开源框架特点的基础之上,提出了集成这三种框架的Web应用系统。通过实例代码,分析了表现层、控制层、业务逻辑层和数据持久层实现过程。最后指出了该Web应用系统的优势,以及在开发指标管理系统时的注意事项。

关键词:ExtJs;Spring;iBATIS;富因特网应用;Web应用

中图分类号:TP301文献标识码:A文章编号:16727800(2011)012001303

作者简介:沈银华(1978-),男,浙江龙游人,中国人民后勤工程学院油料管理教研室讲师,研究方向为油料管理及油料管理信息化;汪涛(1966-),男,甘肃甘谷人,博士,中国人民后勤工程学院教授,研究方向为油料管理及油料管理信息化;王峰(1981-),男,山西太原人,硕士,中国人民后勤工程学院讲师,研究方向为油料管理及油料管理信息化。

0引言

随着技术的发展, Ajax技术的出现,B/S结构的Web应用逐渐向富客户端发展。富客户端技术集成了桌面应用的交互性和传统 Web应用的部署灵活性,为用户提供一个更丰富、更高和更全方位的网络体验。ExtJS框架便是一种与后台技术无关的,可以用来开发富客户端的前端Ajax框架。

在开发基于J2EE的中小型企业级的Web应用时,强调的是系统的敏捷开发、可扩展性以及易于维护。然而,传统的基于 EJB的重量级框架技术由于其复杂性,往往使开发过程事倍功半。类似于Spring的轻量级框架的出现,正好解决上述问题。目前,轻量级框架的发展已经成为推动J2EE技术发展的重要推动力,成为新一代J2EE技术构架的基础。

本文通过对ExtJs、Spring和iBATIS的整合研究,探索用户体验好、系统开发高效、可复用性和易于维护的集成框架平台,为指标管理系统的开发提供较好的框架技术支撑。

1开源框架介绍

1.1ExtJs框架

ExtJs框架是一个强大的JavaScript类库,提供了可重用的对象和部件,简化了开发,丰富了客户端界面效果。它基于纯HTML/CSS和JavaScript技术,灵活采用JSON/XML作为交换格式,提供丰富的跨浏览器UI组件,使服务端表示层的负荷减轻,从而达到客户端RIA应用。

1.2Spring框架

Spring是一个提供了解决J2EE问题的一站式框架,包括核心容器、Spring Context、Spring AOP、Spring DAO、Spring ORM、Spring Web和Spring MVC七个模块。通过IOC(控制反转)技术,可以将对象间的依赖关系交由Spring 进行控制,降低程序的耦合度;通过Spring提供的AOP(面向切面编程),可以将业务逻辑与系统服务(如日志、事务、权限和异常处理等)进行分离,达到易维护和重用的目的;通过Spring提供的ORM模块,可以将Spring和iBATIS进行无缝集成,并利用iBATIS提供的ORM机制,提高系统设计和自由度。另外,Spring提供了MVC2模式的实现,使用非常方便,无需整合其他MVC框架。

1.3 iBATIS框架

iBATIS是一个基于Java的持久层框架,它提供的持久层框架包括SQL Map和Data Access Objects(DAO)。相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,iBATIS是一种“半自动化”的ORM实现,其着力点则在于POJO 与 SQL之间的映射关系。使用iBATIS提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的 Java对象,而对于具体的数据要求开发者编写具体的 SQL 语句,这为系统设计提供了更大的自由空间。

2集成框架实现

将ExtJs、Spirng和iBATIS集成一起,不仅为用户提供丰富的界面,而且也达到了提高软件开发效率的目的。集成后的系统结构如图1所示,分为表现层、控制层、业务逻辑层、数据持久层和数据储存层。另外,应用Spring AOP提供日志、事务处理和异常处理服务。

图1集成后系统结构

2.1表现层

表现层主要应用ExtJS技术框架来实现,通过ExtJs提供的丰富的UI组件,使用页面效果达到桌面应用程序的风格,提高业务操作的方便性,实现友好的人机交互界面。应用ExtJs的Ajax技术与控制层交互,实现数据的异步更新,关键代码如下。

代码中,url所示userLogin.htm是Spring MVC urlMapping定义的访问请求,即表现层通过Ajax向控制层发出userLogin.htm请求,而params是表现层向控制层传递的参数。请求成功,则通过success接收控制层返回的处理结果。请求失败则通过failure接收控制层返回的请求失败的消息。

Ext.Ajax.request({

url: 'userLogin.htm', // Spring MVC Mapping定义的访问链接

success: function(response, options){

},

failure: function(response,options){

},

params: {'FL': 'configUser'} //多动作参数

})

2.2 控制层

控制层主要应用Spirng MVC Controller处理用户请求,向业务层发送请求,向表现层返回处理结果,其关键配置如下。

配置中,id为urlMapping的bean定义了映射,对userLogin.htm的访问会为映射到id为userLoginInt的bean。而id为userLoginInt的bean,则是定义了一个访问控制器,通过控制器决定对业务层的调用。参数methodNameResolver定义了多动作参数,用于决定访问的方法。

userLoginInt

//多动作参数,FL= userLoginConfig

//依赖注入userService bean

该层还应用Spring Security处理用户验证和授权,为Web应用提供安全支持。

2.3业务逻辑层

业务逻辑层主要应用Spring IOC以及XML配置文件,实现同各层间的交互,为控制层提供业务模型组件。业务模型组件通过调用持久层DAO操纵数据库,完成业务逻辑。

Spring的配置文件见2.2所示的“定义用户登录界面控制器”,其中,名称为userService的参数指定了通过Spring IOC依赖注入的id为userService的bean,而userService中则封装了iBATIS对数据库的操作。

Java关键代码如下所示,getUserService()用于获取依赖注入的userService,而userLoginConfig()方法用于执行控制器通过多动作参数的调用,并向控制器返回执行结果。

public class UserLoginController extends MultiActionController {

public UserService userService;

public UserService getUserService() { //获取注入的userService

return userService;

}

public void userLoginConfig (HttpServletRequest request,HttpServletResponse response) throws IOException,DataAccessException{

OutJson outJson=new OutJson();

outJson.setResultList(getUserService().getNameList()); //验证用户

outJson.outJson(request, response); //返回验证结果

}

}

2.4 数据持久层

数据持久层主要应用iBATIS DAO调SQL Map,完成对数据库的操作,实现业务逻辑层的调用。而Spring和iBATIS实现整合后,事务交于Spring统一处理,可以实现事务处理代码和数据库操作代码的分离,从而提高代码的重用性,减少代码量。整合关键配置如下:

classpath:jbzbgl\\iBATIS\\config\\SqlMapConfig.xml//iBATIS配置文件

//依赖注入数据源

2.5Spring AOP

应用Spring AOP,可将业务代码和非业务代码(日志、事务处理和异常处理等)进行分离,从而降低两者的耦合性,达到易维护性和重用性。为减少XML的配置,采用Spring AOP自动,其配置如下所示。

2.5.1日志

此处日志类中,实现时间记录的功能。

代码中,id为timeHandler的bean采用Around通知类型实现Advice,而id为timeHandlerAdvisor的bean中参数advice应用IOC依赖注入timeHandler。参数patterns定义了哪些方法需进行日志记录,.*.*表示所有方法均需记录日志,即当业务层调用任一方法时,autoProxyCreator均进行拦截并调用timeHandlerAdvisor进行日志和时间的记录,业务代码中无需涉及日志代码。

.*.*

2.5.2异常

异常实现原理同日志类似,此处仅为数据库操作设置异常,因而,参数patterns定义了以select、insert、update和delete为开头的方法可以实现。即,当业务层调用上述方法时,autoProxyCreator自动进行监听,抛出异常时进行拦截并处理。

2.5.3声明式事务处理

事务处理在应用程序开发中起着至关重要的作用,Spring提供了编程式事务处理和声明式事务处理两种方式,为减少事务处理的代码量,此处采用声明式事务处理。声明式事务处理借助于AOP来实现,需要用到开源的aopalliance.jar和cglibnodep.jar。

配置中,id为baseTransactionProxy的bean是应用BeanNameAutoProxyCreator自动创建事务,通过事务拦截器,实现事务管理。而id为transactionInterceptor的bean是事务拦截器,通过IOC依赖注入事务管理器transactionManager,通过transactionAttributes参数定义需实现事务管理的方法。Id为interfaceProxy的bean,则通过beanNames参数指定需实现事务管理的类。即,当业务层调用tabGyxxYhxxInterface类时,baseTransactionProxy自动为类中涉及以selecte、insert、delete和update开头的方法开启事务管理,业务代码无需涉及事务处理代码。

代码(略)。3结束语

本文对ExtJs、Spring和iBATIS 3种框架进行了分析,提出了框架集成方案。结合Spring MVC的特点、Spring IOC依赖注入机制和Spring AOP面向方面编程,应用示例对集成框架各应用层的实现进行了分析。该方案在用户体验丰富、开发效率以及易维护性方面有较大优势,但使用此集成框架进行开发时,将产生较多的配置文件,需要在开发指标管理系统时加强管理。参考文献:

[1]孙伟,王蔚.基于Ajax的富客户端技术研究与应用[J].微型电脑应用,2008(3).

[2]陆小亮,卞艺杰.基于Ajax的富客户端电子商务系统设计[J] .武汉大学学报(信息与管理工程版),2011(33).

[3]王智君,王时龙,任亨斌,等.基于Java EE的AOMSpringHibernate架构及应用[J].计算机系统应用,2011(20).

[4]张鑫,黄灯桥,杨彦强.JavaScript凌厉开发-Ext详解与实践[M].北京:清华大学出版社,2009.

[5]郭锋.Spring从入门到精能[M].北京:清华大学出版社,2006.

[6]Clinton Begin.iBATIS SQL Map Guide[EB/OL].www.省略.

上一篇:产业链重定位视角下对我国网上书店发展的思考 下一篇:Micro-blog教育应用的SWOT分析