当前位置:首页 > 发言稿 > 【基于SSH和ExtJS的Web应用框架的设计与实现】核心课程的框架设计
 

【基于SSH和ExtJS的Web应用框架的设计与实现】核心课程的框架设计

发布时间:2019-02-21 04:05:20 影响了:

  摘要:本文首先介绍了Java EE架构的基本理念和MVC设计模式,在此基础上,分别介绍了Struts2、Spring、Hibernate这三个基于Java EE架构的开源框架以及ExtJS等开发技术。然后,在次基础上阐述了利用这几种框架设计和开发一个Web应用程序框架的具体方法。
  关键词: B/S Java EE MVC模式 Struts2框架 Spring框架 Hibernate框架 ExtJS框架
  
  Design and Implemention of Web Framwork
  Based on the SSH and ExtJS
  XU Li-ming, LI Zhi-shu, SONG Fei
  (Institute of Computer Science, Sichuan University, Chengdu Sichuan 610065, China)
  
  Abstract: They basic concepts of Java EE architecture and MVC design pattern is introduced in this thesisf. On this basis, the principles of Struts2, Spring, Hibernate and ExtJS framework are introduced, then the specific development process of these technologies are expatiated through designing and implementing a web application framwork system.
  Key words: B/S; Java EE; MVC Model; Struts2 Framework; Spring Framework; Hibernate Framework; ExtJS
  
  
  1 概述
  1.1 研究背景
   近年来,随着网络通讯的普及,B/S(Browser/Server)结构逐渐成了当下最流行的信息系统架构方式。由于基于Java EE架构的B/S应用程序其开发技术比较成熟和完善,运行成本也较其他结构的系统低,同时其性能也不亚于其他结构的系统,而且便于用户使用,所以成为了企业架构信息系统的首选方式。
  1.2 框架介绍
  1.2.1 Struts2框架
   Struts2是由Struts1和WebWork团队共同开发出的一个新的,整合了WebWork与Struts的优点,并且更加优雅、扩展性更强的MVC框架。Struts2解决了Struts1的ActionForm问题,可以使用普通的JavaBean对象,甚至Action本身来接受表单数据。另外,由于Struts2中的Action没有和Servlet API耦合在一起,所以单元测试更加容易[1]。
   在经典的MVC设计模式中,一个应用被分成三个部分[2]:即模型(Model)、视图(View)和控制器(Controller)。这三者之间的关系和各自主要功能如图1.1所示:
  1.2.2 Spring框架
   Spring在某种意义上是EJB的替代品,它是一种轻量级的容器。Spring的核心概念有两个,反向控制(IoC)和面向切面编程(AOP)[3][4][5]
   IoC(Inversion of Control),即反向控制或者逆向控制。其基本概念是:不在代码中直接创建对象,取而代之的是在配置文件中描述创建它们的方法以及描述哪一个组件需要哪一项服务[6]。容器负责将这些联系在一起。简单的来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。
  AOP(Aspect-Oriented Programming),即面向方面的编程或面向切面的编程。它通过提供另外一种思考程序结构的途
   径来弥补了面向对象编程(OOP- Object-Oriented Programing)的不足。在面向对象编程中,模块化的关键单元是类(classes),而AOP中模块化的单元则是切面。所谓“切面”,指的是那些与业务无关,却为业务模块所共同调用的逻辑[7]切面能对关注点进行模块化,例如横切多个类型和对象的事务管理[8]。
  1.2.3 Hibernate框架
   Hibernate 是Java应用和关系数据库之间的桥梁,负责Java对象和关系数据库之间的映射的ORM中间件[9]。Hibernate是一个开放源代码的对象关系映射框架,该框架通过对JDBC API进行了轻量级的对象封装,使开发人员能够以面向对象的思维来操纵数据库[6][10]。它主要封装了通过JDBC访问数据库的操作以及向上层应用提供访问面向对象数据访问的API。
  1.2.4 ExtJS框架
   ExtJS可以用来开发RIA,即富客户端的Ajax应用,它是一个用JavaScript编写的,主要用于创建前端用户界面的UI框架。该框架与系统后台所使用的开发技术独立,因此,可以把ExtJS与使用Java、.Net或其它开发语言开发的应用系统很好地集成在一起[11]。用ExtJS可以开发出具有十分绚丽外观的显示层页面。
  
  2 Web应用框架的设计与实现
  2.1 Web应用框架的设计
   本文设计的应用框架系统采用B/S模式的四层体系结构设计,自顶向下为表示层、业务逻辑层、数据库持久操作层、数据库层。基于Struts2,Spring,Hibernate和ExtJs技术开发。
   (1) 表示层负责客户端页面的显示工作,该层使用了各种web页面技术,如 Struts2标签技术,JavaSript技术以及ExtJs技术等。
   (2) 业务逻辑层负责与权限管理相关的逻辑定义与处理,该层是系统业务功能处理的核心。
   (3) 持久层负责进行数据库操作,如查询,修改,删除等。该层主要基于Hibernate技术进行设计,减少了编写和维护SQL语句的工作量。封装了数据库访问,事物管理和缓存等工作。另外,持久层还为其它各层提供了统一的访问接口。
   系统主要由五大功能模块构成,分别为用户基本操作功能模块,系统管理模块和权限验证模块,各模块再分别由其子功能模块构成,功能结构关系如图2.1所示:
  
  图2.1 系统功能结构图
   根据以上的系统功能划分,亿阳权限管理系统的程序包结构对应如图2.2所示:
  
  图2.2系统模块包结构示意图
   以上5个包分别对应于系统划分的5个功能模块。其中每个功能模块按分层设计,分为Struts Action控制层、业务逻辑服务(Service)层和DAO(Data Access Object)三层。这里,我们用业务字典管理模块为例,其分层包结构如图2.3所示:
   其余各个功能模块的包结构与上图的业务字典管理模块类似。其中,子模块下的struts.action包为分层设计中的Struts Action控制层代码,用于控制应用程序的流程。处理用户请求并作出相应的响应。 service包内为业务逻辑服务层的代码,封装了程序的各种业务逻辑功能。其中Service包内存放的是接口类,负责定义该服务层需要的一些服务方法,而这些方法的具体的实现流到其impl子包内的具体实现类来实现。po包内封装的是持久化对象(persistence object),即数据库实体,或者说是物理数据模型的对象的Java对象反映。vo包内封装的则是业务逻辑或者表现逻辑的对象,又被称为DTO(data transfer object)[12],它是业务实体的一种抽象反映。
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文    再次以业务字典管理模块为例,此模块的类结构设计如图2.4所示:
   由于层是一种弱耦合结构[13],层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。因此,我们在分层设计时,遵循了面向接口设计的思想[12][13]。
  2.2 Web应用框架的实现
  2.2.1基于Struts2的控制层的实现
  首先,要为该项目添加Struts2支持,除了需要添加struts的类库包外,还需要在工程的web.xml配置文件中加入以下代码:
  
  struts2
   
  org.apache.struts2.dispatcher.FilterDispatcher
  
  
  这样就把客户端请求提交到Struts框架处理。
   之后,需要在Struts.xml文件中配置客户端请求与Action间的映射关系。如下列代码所示:
  
   /dictionary/dictionary.jsp
  
  
  以上映射代码表示当前台页面向服务器提交了listdict请求时,该请求将被交给dictionaryAction实例的listDict方法来处理。
  此系统将struts控制层的action类交给Spring框架来管理,以便实现action类的可抽取和可替换。
  Spring框架通过applicationContext.xml文件来配置其托管的action类。下面的代码部分即为Spring托管的系统业务字典管理模块的struts action类配置:
  
  
  
  
  
  上面的xml代码中配置的java bean的id与struts-dictionary.xml文件中action配置的class属性值一致,这样便将struts的Action类交给Spring框架代管了。通过修改applicationContext.xml文件中对应bean的class属性便可实现Action类的抽取和替换。
  2.2.2 业务逻辑层(Business Logic Layer)的实现
   业务逻辑层无疑是系统架构中体现核心价值的部分。它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,我们也将业务逻辑层称为领域层。业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。
   该系统采用与控制层中相同的方式将业务逻辑实现对象交给Spring框架托管。业务逻辑对象中通过调用持久层层对象来是实现与数据库间的交互。此系统的持久层对象同样交给Spring框架托管。业务逻辑对象中取得持久层对象的代码如下例所示:
  dictionaryDao = (HibernateDaoSupport)SpringUtil.getBean(“dictionaryDao”);
  2.2.3基于Hibernate和Spring的数据库持久层的实现
   数据库持久层负责封装数据操作语句,为业务逻辑服务层提供访问数据源的途径。
  在Spring容器中以bean的方式定义诸如JDBC DataSource和Hibernate SessionFactory的数据访问资源,任何需要进行访问的应用程序对象只需要持有这些事先定义好的实例引用。
  之后需要将持久对象与数据库表在影射文件中进行关
  联,在映射文件中除了将Java持久对象与数据库表进行关联外,还需要将对象的字段与数据库表字段在映射文件中进行关联。在实现时还可以在Spring框架的配置文件中配置Hibernate的事务管理方式。
  2.2.4基于ExtJS的页面显示层的实现
   ExtJS框架不仅能实现漂亮的外观界面,还拥有丰富的UI组件。
   实现时首先需要在页面文件中引入ExtJS类库文件以及实现了自定义ExtJS组件的JavaScript文件,然后定义放置自定义组件的位置。部分代码实例如下:
  
  
   ……
  
  
  
  
  3 结语
   本文的系统基于Java EE架构,采用了较Struts1更为优秀的Strut2作为该web应用程序的MVC框架,利用Spring框架来管理业务对象,用Hibernate来进行数据的持久化。另外,为了满足当前许多用户对应用程序界面外观更高的需求,该系统还使用了ExtJS这一基于富客户端理念的UI框架来帮助实现显示层。
   以系统中业务字典管理模块为例,其实现效果如图3.1所示:
  
  图3.1业务字典管理模块实现效果图
   这样的设计与实现使得该系统具备通用、方便、灵活等特点,并具有更高的可复用性、可维护性和可扩展性。在此系统的基础上进行扩展开发可提高之后项目的开发效率,节约开发和维护成本。经过实践证明,取得了很好的效果。
  
  参考文献
  [1] 孙卫琴,李洪成.Tomcat与Java Web技术详解[M].北京:电子工业出版社.2004.
   [2] 邱述威,朱达荣,张霖.基于MVC+Struts的科研项目管理系统设计与实现[J].安徽建筑工业学院学报, 2006(1): 66-69.
  [3] Rod Johnson. Introduction to the Spring Framework 2.5[EB/OL].
   https://www.省略/news/1364527/Introduction-to-the-Spring-Framework.
  [4] Rod Johnson. Spring Referenee Documentation[EB/OL].
   https://static.省略/spring/docs/2.5.x/reference/index.html.
  [5] Craig Walls,Ryan, Breidenbach. Spring in Action[M].Manning Publications, 2005.
  [6] 王磊.基于Struts+Spring+Hibernate的架构设计及其在电子商务中的应用[D].电子科技大学,2007.
   [7] Robert E Filman,Tzilla ELrad, Siobhan Clarke, Mehmet ksit. Aspect-Oriented Software Development[M]. AddisonWesley Professional, 2006.
   [8] Martin Fowler. Inversion of Control Containers and the Dependency Injection pattern[EB/OL].省略/articles/injection.html.
   [9] JBoss Community. Hibernate:Object/Relational Mapping and Object Persistence for Java[EB/OL]. https://www.省略/.
  [10] 杨帅.基于SSH的CRM系统的研究和设计[D].重庆:重庆交通大学,2009.
  [11] 刘晓明.Web设计开发过程中EXT框架的应用与研究[D].大连:大连海事大学.2009.
  [12] 吴昊.基于Struts和Hibernate构建GSM电子运行维护系统.成都:四川大学.2005.
  [13] 李黎.J2EE框架和设计模式的研究与应用[D].成都:电子科技大学.2007.
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

猜你想看
相关文章

Copyright © 2008 - 2022 版权所有 职场范文网

工业和信息化部 备案号:沪ICP备18009755号-3