




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【基于SSH和ExtJS的Web应用框架的设计与实现】核心课程的框架设计 摘要:本文首先介绍了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)345 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进行了轻量级的对象封装,使开发人员能够以面向对象的思维来操纵数据库610。它主要封装了通过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 Aess Object)三层。这里,我们用业务字典管理模块为例,其分层包结构如图2.3所示: 其余各个功能模块的包结构与上图的业务字典管理模块类似。其中,子模块下的struts.action包为分层设计中的Struts Action控制层代码,用于控制应用程序的流程。处理用户请求并作出相应的响应。 service包内为业务逻辑服务层的代码,封装了程序的各种业务逻辑功能。其中Service包内存放的是接口类,负责定义该服务层需要的一些服务方法,而这些方法的具体的实现流到其impl子包内的具体实现类来实现。po包内封装的是持久化对象(persistence object),即数据库实体,或者说是物理数据模型的对象的Java对象反映。vo包内封装的则是业务逻辑或者表现逻辑的对象,又被称为DTO(data transfer object)12,它是业务实体的一种抽象反映。 本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文 再次以业务字典管理模块为例,此模块的类结构设计如图2.4所示: 由于层是一种弱耦合结构13,层与层之间的依赖是向下的,底层对于上层而言是“无知”的,改变上层的设计对于其调用的底层而言没有任何影响。理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。因此,我们在分层设计时,遵循了面向接口设计的思想1213。 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.北京:电子工业出版社.xx. 2 邱述威,朱达荣,张霖.基于MVC+Struts的科研项目管理系统设计与实现J.安徽建筑工业学院学报, xx(1): 66-69. 3 Rod Johnson. Introduction to the Spring Framework 2.5EB/OL. .省略/news/1364527/Introduction-to-the-Spring-Framework. 4 Rod Johnson. Spring Referenee DocumentationEB/OL. static.省略/spring/docs/2.5.x/reference/index.html. 5 Craig Walls,Ryan, Breidenbach. Spring in ActionM.Manning Publications, xx. 6 王磊.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年软件工程师初级编程实战题集及解析
- 2025年船厂安全操作规范模拟题集
- 2025年国际金融分析师考试知识点梳理与模拟题集
- 电代煤安全知识培训课件新闻
- 2025年焊接工艺知识笔试模拟题及答案
- 人教版鲸教学课件
- 新解读《GB-T 36771-2018番茄花叶病毒检疫鉴定方法》
- 广西钦州市2024-2025学年高一上学期期末教学质量监测物理试卷(含答案)
- 2025年重庆市中考数学押题试卷(三)(含答案)
- 新解读《GB-T 36140-2018装配式玻纤增强无机材料复合保温墙体技术要求》
- 知识产权侵权培训课件
- 2024中国中煤销售集团总部及所属企业电力营销专业人才招聘笔试参考题库附带答案详解
- 2025年上半年北京广播电视台招聘140人笔试易考易错模拟试题(共500题)试卷后附参考答案
- 初中英语沪教牛津版单词表(共6册)
- 酒店客房验收工程项目检查表
- 加强教学常规管理提高教学质量
- 吉兰巴雷综合征病人的护理
- 《英语句子成分》课件
- 河北农业大学分子生物学题库(带答案)
- 2025四川建筑安全员-C证考试(专职安全员)题库及答案
- 随机动态规划与强化学习-洞察分析
评论
0/150
提交评论