论文部分内容阅读
[摘要]安全培训信息管理系统采用面向对象的分析、设计方法,基于MVC三层架构模式构建一个系统模型架构,用户界面采用Tapestry框架,核心业务逻辑采用Spring IoC容器管理,而Hibernate O/R Mapping负责数据持久化工作,同时使用AOP实现应用业务方面的操作,并给出了实现思路和方法,最终实现安全培训信息管理系统模型架构,它给系统带来扩展性、复用性和安全性等方面的优势。
[关键词]Web开发 MVC 面向对象 AOP
中图分类号:C94 文献标识码:A 文章编号:1671-7597(2008)0710055-02
一、引言
安全培训信息管理系统主要针对煤矿安监局、矿业集团培训部和煤矿安全培训中心的实际情况而开发,实现对学员培训数据信息的多方面管理、数据导入和导出、权限管理和日志管理等功能,是现代企业信息系统应用的典范。
基于MVC架构模式,能够通过分层来减小系统开发的耦合设计,降低开发的复杂度,允许各层独立地工作而互不受到影响。同时合理地应用设计模式,将能够有效地增大系统组件复用的粒度,增强系统的灵活性。
二、采用Spring+Hibernate+Tapestry框架带来的优势
在MVC模式的设计原则指导下,Spring将在控制层分别向持久层和表现层提供会话、事务支持和业务逻辑服务,Hibernate则提供基础性的关系数据管理,而Tapestry将在表现层完成与用户的交互。因此,Spring+Hibernate+Tapestry按如图1所示的结构各自独立地进行组合。

三、安全培训信息管理系统模型构建
根据对实际业务的流程调查分析,结合根据功能模块划分原则,同时考虑到系统的可扩展性和易用性,我们将新系统划分成各功能模块结构,有关系统的高层用例如图2所示。

四、系统模型主要实现思路及方法
(一)基于dX[1]的项目开发实践
根据我们系统项目的具体特性,在参考了相关软件工程实践之后,最终选择dX作为开发实践方法。dX的具体思想是将开发过程分为一系列不规则的迭代过程,同时将每个迭代过程又分成各个管理阶段。通过引用已经证明良好的开发实践,如迭代开发、小步增量、单元测试、代码重构以及不间断集成等,我们能及时地得到项目进度的反馈,同时还能有效地管理系统项目的变更。
(二)Spring+Hibernate+Tapestry的整合
1.WEB表现层。Tapestry 在表现层完成页面的显示,将页面布局设计和业务逻辑分开,通过HTML标记属性jwcid插入组件,完成信息定制工作。在Tapestry应用程序中,使用XML文件格式作为页面规范文件,使用监听器来触发事件,使用OGNL语言作为访问Java对象的语法规范,同时还允许调用官方提供的丰富组件和自定义组件,增强了组件复用[2]。而在页面类中,将使用Spring容器中的Service,完成相应的业务逻辑功能。
本系统中的增加培训活动页面时,其实现方式:
首先需要将Tapestry和Spring整合,将Spring容器保存为HiveMind里的一个服务[3]。然后在页面类中可使用Java的注释[4]进行简单的注入操作,进而调用Spring容器定义的Service Bean业务逻辑了。

2.逻辑控制层。根据IoC模式来提供Service(如图3所示),Spring容器是使用Bean配置机制管理的,它将Hibernate和Service注册为Bean,在需要使用时便将Bean对象注入到指定对象中;同时在本文中,我们选择使用setter方法来注入对象。
而在Spring中与增加培训活动相关的配置信息则是:

从上面可以看出,trainingService将使用trainingDAO对象进行数据库访问,而traningDAO也使用了Hibernate的sessionFactory来访问数据库。而这些对象的“依赖”关系全部都由Spring的IoC容器管理,它会在适当的时候将对象注入到另一个对象中,使用接口与实现相分离的方式,极大地增加了系统的可扩展性能。
3.持久化层
Hibernate使用POJO(Plain Ordinary Java Object)来与数据库进行连接,通过sessionFactory来创建连接,从而可以提供灵活的数据库配置。而且在本系统中,我们将使用DAO模式来向上层提供数据访问接口,使用DTO(Data Transfer Object)对象来进行数据传递。

在UserDAOImpl类中的sessionFactory将由Spring中的Bean来注入。这样就可以让Spring有效地控制数据访问与Hibernate的“依赖”关系了。
(三)基于AOP思想的权限控制和日志记录模块实现
AOP(基于方面编程)的思想主要是通过“横向切割关注点”(cross cutting concern)从一个较高的层次划分软件系统,将次要业务功能和主要业务逻辑相分离,将事务、安全、日志等横切为关注点(advisor),它们被认为是应用需要解决的问题[5],利用Spring实现AOP的接口方式如图4所示。

将所有业务逻辑的实现类都继承至一个基类ServiceImpl,基类有一个成员来标识动作状态oper_state,而且将在各业务动作中进行状态的转移,同时使用日志记录Aspect、权限验证Aspect和联机帮助Aspect来组合业务应用动作,以实现方便的AOP功能,这样在主要业务功能中就可以不受任何改动地完成登陆记录和权限验证等功能。
五、结论
本文提出的安全培训信息管理系统,通过实施轻量级的软件工程实践,不断迭代和进行单元测试,便于在早期发现设计中的不足;基于MVC架构模式,在表现层Tapestry使用面向对象开发,增大组件复用粒度;在控制层使用Spring处理复杂的业务逻辑,分解调用与被调用者的耦合关系,使用AOP完成系统应用的横向功能,分离主要业务和次要业务交织的复杂关系;选用Hibernate作为持久化数据工作,使用ORM方便快速地对数据进行存储利用;轻量级框架的组合、设计模式的利用,为快速实现高效率、高性能、易于扩展和维护、同时又具有高度安全可靠性的系统提供了简明可行的解决方案,有利于系统的实施和现实作用。
参考文献:
[1]Robert C.Martin,黄晓春. UML:Java程序员指南[M]. 北京:清华大学出版社,2004.
[2]Apache Software Foundation.Tapestry Project[EB/OL].http://tapestry.apache.org/tapestry4/index.html,2006-06-09.
[3]董黎伟.深入浅出Tapestry[M].北京:电子工业出版社,2007.
[4]Sun Microsystems,Inc.Java Annotation[EB/OL].http://java.sun.
com/j2se/1.5.0/docs/guide/language/annotations.html,2004.
[5]Rod Johnson. Introduction to the Spring Framework 2.5[EB/OL]. Http://www.theserverside.com/tt/articles/article.tss?l=IntrotoSpring25,2007-08.
[关键词]Web开发 MVC 面向对象 AOP
中图分类号:C94 文献标识码:A 文章编号:1671-7597(2008)0710055-02
一、引言
安全培训信息管理系统主要针对煤矿安监局、矿业集团培训部和煤矿安全培训中心的实际情况而开发,实现对学员培训数据信息的多方面管理、数据导入和导出、权限管理和日志管理等功能,是现代企业信息系统应用的典范。
基于MVC架构模式,能够通过分层来减小系统开发的耦合设计,降低开发的复杂度,允许各层独立地工作而互不受到影响。同时合理地应用设计模式,将能够有效地增大系统组件复用的粒度,增强系统的灵活性。
二、采用Spring+Hibernate+Tapestry框架带来的优势
在MVC模式的设计原则指导下,Spring将在控制层分别向持久层和表现层提供会话、事务支持和业务逻辑服务,Hibernate则提供基础性的关系数据管理,而Tapestry将在表现层完成与用户的交互。因此,Spring+Hibernate+Tapestry按如图1所示的结构各自独立地进行组合。

三、安全培训信息管理系统模型构建
根据对实际业务的流程调查分析,结合根据功能模块划分原则,同时考虑到系统的可扩展性和易用性,我们将新系统划分成各功能模块结构,有关系统的高层用例如图2所示。

四、系统模型主要实现思路及方法
(一)基于dX[1]的项目开发实践
根据我们系统项目的具体特性,在参考了相关软件工程实践之后,最终选择dX作为开发实践方法。dX的具体思想是将开发过程分为一系列不规则的迭代过程,同时将每个迭代过程又分成各个管理阶段。通过引用已经证明良好的开发实践,如迭代开发、小步增量、单元测试、代码重构以及不间断集成等,我们能及时地得到项目进度的反馈,同时还能有效地管理系统项目的变更。
(二)Spring+Hibernate+Tapestry的整合
1.WEB表现层。Tapestry 在表现层完成页面的显示,将页面布局设计和业务逻辑分开,通过HTML标记属性jwcid插入组件,完成信息定制工作。在Tapestry应用程序中,使用XML文件格式作为页面规范文件,使用监听器来触发事件,使用OGNL语言作为访问Java对象的语法规范,同时还允许调用官方提供的丰富组件和自定义组件,增强了组件复用[2]。而在页面类中,将使用Spring容器中的Service,完成相应的业务逻辑功能。
本系统中的增加培训活动页面时,其实现方式:
首先需要将Tapestry和Spring整合,将Spring容器保存为HiveMind里的一个服务[3]。然后在页面类中可使用Java的注释[4]进行简单的注入操作,进而调用Spring容器定义的Service Bean业务逻辑了。

2.逻辑控制层。根据IoC模式来提供Service(如图3所示),Spring容器是使用Bean配置机制管理的,它将Hibernate和Service注册为Bean,在需要使用时便将Bean对象注入到指定对象中;同时在本文中,我们选择使用setter方法来注入对象。
而在Spring中与增加培训活动相关的配置信息则是:

从上面可以看出,trainingService将使用trainingDAO对象进行数据库访问,而traningDAO也使用了Hibernate的sessionFactory来访问数据库。而这些对象的“依赖”关系全部都由Spring的IoC容器管理,它会在适当的时候将对象注入到另一个对象中,使用接口与实现相分离的方式,极大地增加了系统的可扩展性能。
3.持久化层
Hibernate使用POJO(Plain Ordinary Java Object)来与数据库进行连接,通过sessionFactory来创建连接,从而可以提供灵活的数据库配置。而且在本系统中,我们将使用DAO模式来向上层提供数据访问接口,使用DTO(Data Transfer Object)对象来进行数据传递。

在UserDAOImpl类中的sessionFactory将由Spring中的Bean来注入。这样就可以让Spring有效地控制数据访问与Hibernate的“依赖”关系了。
(三)基于AOP思想的权限控制和日志记录模块实现
AOP(基于方面编程)的思想主要是通过“横向切割关注点”(cross cutting concern)从一个较高的层次划分软件系统,将次要业务功能和主要业务逻辑相分离,将事务、安全、日志等横切为关注点(advisor),它们被认为是应用需要解决的问题[5],利用Spring实现AOP的接口方式如图4所示。

将所有业务逻辑的实现类都继承至一个基类ServiceImpl,基类有一个成员来标识动作状态oper_state,而且将在各业务动作中进行状态的转移,同时使用日志记录Aspect、权限验证Aspect和联机帮助Aspect来组合业务应用动作,以实现方便的AOP功能,这样在主要业务功能中就可以不受任何改动地完成登陆记录和权限验证等功能。
五、结论
本文提出的安全培训信息管理系统,通过实施轻量级的软件工程实践,不断迭代和进行单元测试,便于在早期发现设计中的不足;基于MVC架构模式,在表现层Tapestry使用面向对象开发,增大组件复用粒度;在控制层使用Spring处理复杂的业务逻辑,分解调用与被调用者的耦合关系,使用AOP完成系统应用的横向功能,分离主要业务和次要业务交织的复杂关系;选用Hibernate作为持久化数据工作,使用ORM方便快速地对数据进行存储利用;轻量级框架的组合、设计模式的利用,为快速实现高效率、高性能、易于扩展和维护、同时又具有高度安全可靠性的系统提供了简明可行的解决方案,有利于系统的实施和现实作用。
参考文献:
[1]Robert C.Martin,黄晓春. UML:Java程序员指南[M]. 北京:清华大学出版社,2004.
[2]Apache Software Foundation.Tapestry Project[EB/OL].http://tapestry.apache.org/tapestry4/index.html,2006-06-09.
[3]董黎伟.深入浅出Tapestry[M].北京:电子工业出版社,2007.
[4]Sun Microsystems,Inc.Java Annotation[EB/OL].http://java.sun.
com/j2se/1.5.0/docs/guide/language/annotations.html,2004.
[5]Rod Johnson. Introduction to the Spring Framework 2.5[EB/OL]. Http://www.theserverside.com/tt/articles/article.tss?l=IntrotoSpring25,2007-08.