基于S2SHA集成框架构建教师信息管理系统

2010-04-03 00:59赵峰
中国新技术新产品 2010年14期
关键词:实例容器组件

赵峰

(哈尔滨理工大学,黑龙江 哈尔滨150080)

引言

软件架构是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。Java Web软件架构是指基于Java EE技术构建的软件架构,根据Java Web的分层设计可以选择使用不同的软件框架(Framework)进行实现。正因为有着如此丰富的框架和其它的辅助技术,使得我们在开发Java Web应用的时候,就要根据具体的业务需求来确定使用哪个框架哪种技术或哪几种框架和技术进行集成,以使得我们开发、部署、运行和维护Java Web应用的成本降至最低。本文探讨的就是如何根据具体的业务需求集成现有框架和技术,快速而有效地搭建应用系统。

1 Java Web框架技术

1.1 Struts2

Apache Struts 2是一个优雅的,用于创建企业级的Java Web应用程序的可扩展框架。该框架旨在简化整个开发周期,涵盖应用的开发,部署,以及维护的全过程。Struts2的核心包括FilterDispatcher、拦截器和Action以及展现用户界面的Template和Tag,囊括了MVC模型的全部组成。

1.2 Spring是一个开源框架,它是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许用户选择使用哪一个组件。这也是它与Struts、Hibernate等其他框架不同的地方。Spring框架的分层架构,由7个定义良好的模块组成Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理Bean的方式。

1.3 Hibernate

Hibernate是一个面向Java环境的对象/关系数据库映射工具,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去。Hibernate不仅仅管理Java类到数据库表的映射,还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的时问。

1.4 Ajax

Ajax是基于标准Web技术创建的、能够以更少的响应时间带来丰富的用户体验的一类Web应用程序所使用的技术的集合。

DWR是实现Ajax技术的一个简单选择。DWR工作原理是通过动态把Java类生成为JavaScript,使用户感觉调用发生在浏览器端,但实际代码调用发生在服务器端,DWR负责数据的传送和转换。其优点在于不需要任何浏览器插件就能运行在网页上。

图1 S2SHA框架总体设计

2 S2SHA的集成

基于Struts2、Spring、Hibernate和Ajax集成的S2SHA框架总体设计如图1所示。

其中,Web表现层使用Struts2的控制器FilterDispatcher负责管理用户的请求和显示用户数据,页面技术使用JSP+Ajax。JSP中包含传统的页面格式控制CSS文件。为了国际化字符信息,需要配置相应的.properties文件并在struts.xml文件中定义相应的控制器。

业务逻辑层使用Spring作为业务逻辑框架,通过读取配置文件,Spring IoC容器自动生成和管理Bean实例,Spring还提供了事务管理,Action类实例的管理,基于Spring AOP的日志和权限管理等。

数据持久层采用Hibernate框架,提供从数据库表到POJO对象的映射,屏蔽所有的数据库操作。建立相应的DAO类,DAO类的实例由Spring容器管理。

总之,让Strust2负责表现处理,让Spring负责装配和解耦复杂的业务逻辑处理对象,让Hibernate负责处理O/R映射和持久化,让Ajax来改进用户体验。

2.1 Struts2和Spring的集成

Struts2与Spring集成主要是利用Spring强大的容器功能,Struts2所需要的一切组件和实例都由Spring的IoC容器负责创建和管理其生命周期。这样就解放了控制器,实现了控制器和业务逻辑组件的高层次解耦,控制器只是业务逻辑组件的使用者,只需向Spring容器请求既可,Spring容器会自动地将控制器需要的业务逻辑组件进行组装。Struts2和Spring集成的步骤如下:

①在web.xml中注册名为contextConfigLocation的context-param,值为/WEB-INF目录下的applicationContext.xml文件;注册listener:org.springframework.web.context.ContextLoaderListener和org.apache.struts2.dispatcher.Filter-Dispatcher。

②在struts.xml中注册类似于name="honorlist"class="honorList"method="list"的action,其中,'class="honorList"'定义的是伪Action名。

③在applicationContext.xml中注册Bean:

其 中,'bean name="honorList"'是对应struts.xml的伪Action名,后面的class是真正的Action类名。第二个bean是前边Action组件所需要的业务逻辑组件,'autowire="byName"'给出了Spring的自动装配方式。

2.2 Spring与Hibernate的集成

Spring为集成Hibernate,提供了3个工具类:HibernateDaoSupport、HibernateTemplate和HibernateCallback。同时,Spring负责管理Hibernate的SessionFactory bean和众多DAO Bean。集成步骤如下:

①在applicationContext.xml中定义数据源,使用C3P0:

class="com.mchange.v2.c3p0.ComboPooledData-

Source"

destroy-method="close">

②定义SessionFactory

class="org.springframework.orm.hibernate3.Lo

calSessionFactoryBean">

org.hibernate.di

alect.MySQLDialect

③配置事务管理

class="org.springframework.orm.hibernate3.Hi

bernateTransactionManager">

然后在每个DAO类中加上@Transactional注解。

2.3 Ajax的集成

遵循由Spring管理一切bean的原则,DWR所使用的Java Bean也交由Spring容器统一管理,具体步骤如下:

①在web.xml中注册DWR的servlet,其class是uk.ltd.getahead.dwr.DWRServlet。

②在dwr.xml中定义JavaScript类到服务器端的映射:

其中creator="spring"表示由Spring容器管理服务器端Suggest实例;value="suggest"表示Spring管理的Bean名称。

③在applicationContext.xml中定义"suggest"Bean:

④在视图页面中引入

其中,'zf50'是项目的绝对路径,'suggest.js'是自定义的函数文件,包含对Suggest对象的调用。

3 教师信息管理系统的设计

系统的业务结构如图2所示

普通用户和信息审核员对信息进行相互认证的活动图如图3,4所示:

4 教师信息管理系统在S2SHA集成框架下的实现

在表现层使用Struts2来实现MVC模式,辅以基于DWR框架的Ajax技术丰富用户界面。Struts2使用web.xml中定义的FilterDispatcher拦截到表现层提交的请求,通过读取struts.xml文件查找对应的Action,找到其对应的Action类,向Spring请求其实例,调用Action实例中相应的validate方法,然后调用Spring注入的相应Service实例的业务方法,Service实例再次调用Spring注入的DAO实例,逐级返回需要传递给表现层的值,然后根据逻辑视图名进行跳转,返回到表现层,展现响应。

系统运行效果如图5所示。

5 总结

随着越来越多的框架技术应用在Java EE企业级软件开发当中,如何选取合适的框架和相关技术进行集成,是快速、有效、低成本的构建Java EE应用所面临的问题。文本通过分析研究Java EE软件架构的的发展变化和各种流行框架技术的原理和工作过程,提出一个集成Struts2、Spring和Hibernate并加入Ajax交互技术的快速开发WEB应用的软件架构S2SHA模型。通过集成各个框架技术的优点来到达以最小代价开发最优软件系统的目标。最后通过运用本文研究的S2SHA模型来实际开发一个应用系统,验证这种集成技术是有效的,可以满足快速开发WEB应用的需要,并能够实现系统结构间的充分解耦,具有很好的可扩展和可移植性。

[1]DWR-Easy Ajax for JAVA[EB/OL].http://directwebremoting.org/dwr/index.html

[2]Spring Projects[EB/OL].http://www.springsource.org/

[3]The Apache Struts Project[EB/OL].http://struts.apache.org

[4]JBoss Hibernate[EB/OL].http://www.jboss.com/products/hibernate.

猜你喜欢
实例容器组件
Different Containers不同的容器
无人机智能巡检在光伏电站组件诊断中的应用
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
难以置信的事情
风起新一代光伏组件膜层:SSG纳米自清洁膜层
完形填空Ⅱ
完形填空Ⅰ