




已阅读5页,还剩53页未读, 继续免费阅读
(计算机应用技术专业论文)基于设计模式的数据访问研究与应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中南民族大学硕士学位论文 - i - 摘摘 要要 随着面向对象分析技术和面向对象设计技术的不断成熟与推广,面向对象系 统设计已经成为软件设计的主流方法。设计模式是面向对象技术的最新进展之一, 更是软件领域中的研究热点之一。恰当的利用设计模式指导软件结构设计,不仅 缩短软件设计和实现的周期,还可以提高软件的重用性、可移植性,能够起到事 半功倍的作用。 数据库是企业级应用系统的基石,即使最简单的桌面应用程序也要经常使用 数据库以支持数据持久性。应用程序的开发是围绕数据的组织和存储、访问、处 理以及数据的表示进行的。数据访问代码的性能对整个系统往往有很大的影响。 数据访问逻辑的复杂性以及标准的多样性,使得代码经常成为设计中最困难的部 分。而数据访问模式在数据访问领域起到模式所具备的作用,合理的使用数据访 问模式可以达到有效的数据访问,去除对象模型和关系模型之间的阻抗不匹配的 问题,提高可重用性和可维护性。 首先介绍了设计模式的起源以及发展状况,阐述了面向对象技术、uml 技术 的基础知识,分析了 mvc、struts 等相关技术平台。研究了设计模式的基本理论 和设计模式的选择以及使用方法。详细分析了适配器模式、工厂模式、抽象工厂 模式等几种具体的设计模式。 提出了一种基于正交组件的数据访问设计模式的设计框架,该框架通过使用 数据访问对象模式、主动域对象模式以及连接池模式实现了业务逻辑和数据访问 层的松散耦合,使得应用程序更加容易的迁移到一个不同的数据库上实现。提出 了在 dao 模式中引入 abstract factory 模式,如此可以支持不同数据访问机制之 间的可配置切换,即将类的静态替换屏蔽在系统之外,解决了 dao 模式在实现支 持不同类型的数据库平台时带来的部署难度和维护的复杂度大的问题。提出了在 数据访问层引入 proxy 模式,该模式通过提供一个中间层,将上层调用接口和下 层实现相衔接,解决在 dao 中使用 abstract factory 模式带来的一些 bad shell 问 题以及 dao 代码和核心 collection 的紧耦合问题。 利用提出的基于正交组件的数据访问设计模式的设计框架, 结合 struts 的 web 应用开发,开发并实现了学生课程与成绩管理系统。实验证明了该设计框架是有 效的和适用的。在实验的开发过程中也进一步阐述了设计模式如何解决企业应用 系统中的问题。 关键词:设计模式,数据访问对象模式,主动域对象模式,工厂模式,struts 框架 基于设计模式的数据访问研究与应用 - ii - abstract as the development and application of object-oriented analysis and object-oriented design, the object-oriented system design has become the main tendency of software design methods. design pattern is one of the latest developments of object-oriented technologies, which is now being one of research focuses all over the world. properly utilization to design patterns is of great help the software structure design to reduce period of software design and application as well as improve software reusage and transplantation. database is fundamental to enterprise application system, even the simple desktop application program usually need database to ensure the data permanence, and the development of the application program focuses on the data management, save, read, process and data indication. the data reading code has large influence on the performance of the whole system. the complex data reading logic and variegated standard result in the most difficult code design. also data access patterns act what the pattern plays in data access fields. to ensure the valid date reading function and eliminate the mismatching between object mode and relation mode can make the reusage higher and make the convenient maintenance stronger. this thsis firstly introduces the origin and development of design pattern as well as object-oriented technology and uml technology and analyses some related technology platform such as mvc, struts and researches the design pattern theory, selection and application method for design pattern. then several design pattern including adapter pattern, factory pattern and abstract factory pattern etc are analyzed in detail. the author points out a design structure of data access pattern which based on orthogonal component. from this structure, the relax coupling between business logic layer and data access layer is achieved by using data access object, active domain object and connection pool, and it is much easier to change databases for the application program. the author uses abstract factory pattern to solve the problems of disposition and maintenance when the dao pattern supports different database- platforms. by using the abstract factory pattern, the pattern can support the switches of configuration among different data access mechanism and the static changes of class are hidded out of the system. in this paper, proxy pattern which applies a middle layer to connect the higher invoked interface and lower enable layer is used to solve the problems of bad shell and tight coupling between dao and kernel collection. a students courses and mark management system is developed by using the design structure of data access pattern based on orthogonal component and the practical web development of struts. the validity and practicality is justified through this development. the applications of design pattern in solving the problems of enterprise application system are interpreted during the process of experiment. key words: design pattern, dao, ado, factory, strtus 中南民族大学中南民族大学 学位论文原创性声明学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取 得的研究成果。 除了文中特别加以标注引用的内容外, 本论文不包含任何其 他个人或集体已经发表或撰写的成果作品。 对本文的研究做出重要贡献的个 人和集体, 均已在文中以明确方式标明。 本人完全意识到本声明的法律后果 由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学 校保留并向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查 阅和借阅。 本人授权中南民族大学可以将本学位论文的全部或部分内容编入 有关数据库进行检索, 可以采用影印、 缩印或扫描等复制手段保存和汇编本 学位论文。 本学位论文属于 1、保密,在_年解密后适用本授权书。 2、不保密。 (请在以上相应方框内打“” ) 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 中南民族大学硕士学位论文 - - 1 第1章 绪论 1.1 研究背景及意义 数据库是企业级应用系统的重要基础,目前许多应用系统的主要资源多用 在实现和管理数据访问上,数据访问代码的性能对整个系统的质量会产生很大 的影响;同时,数据访问逻辑的复杂性以及标准的多样性,使得数据访问代码 成为系统设计中最困难的部分之一。因此,开发人员必须花费大量的精力来设 计有效的数据访问代码,否则将会影响整个系统的运行效率或系统的稳定性。 对于面向对象模型的数据存储方式, 最直接的方法是 oodb(object-oriented databases,面向对象数据库)。然而目前市场上面向对象数据库的产品还不够成 熟,而基于某种 oodb 开发的应用系统又不太可能移植到其他数据库产品上, 大量的应用系统仍采用产品成熟、通用性和移植性更好的关系数据库作为底层 的数据存储和管理系统。所以,现在应用系统多采用面向对象方法进行分析和 设计,用关系数据库存储数据。 在 20 世纪 80 年代,计算机专家们提出了设计模式的概念,设计模式是指 利用面向对象语言的类和方法来实现某个编程目标的方法。它通过提供一个显 式的类和对象作用关系以及它们之间的潜在关系来说明规范,提高已有系统的 文档管理和系统维护的有效性。恰当的利用设计模式指导软件结构设计能够起 到事半功倍的作用,它不仅可以缩短软件设计和实现周期,还可以提高软件的 重用性和移植性。 研究发现,在数据访问领域中研究和应用设计模式对促进软件产业的发展 有深远的意义和实际的使用价值。改进的数据访问模式可以解决应用程序数据 库被访问时的紧耦合引起的维护性,复用性差的问题。人们也可以更简单方便 的复用成功的设计模式以提高软件复用的程度,进一步保证系统的稳定性、灵 活性。 1.2 国内外研究现状 1987 年,ward cunningham 和 kent beck 应用著名建筑大师 alexander 在建 筑领域里的一些思想理论,开发了设计模式并把这种思想用到了 smalltalk 中的 图形用户接口的生成中1。 20 世纪 90 年代初期,erich gamma 在他的苏黎世大学博士毕业论文中开始 把最初的设计模式的思想改写为适用的软件开发。 从 1990 年到 1992 年,erich gamma,helm r,johnson r,vlissides j(简称 “四人帮”)的成员开始进行搜集模式的工作。关于模式的讨论和工作会议相继 基于设计模式的数据访问研究与应用 - 2 - 多次举行。在 1993 年 8 月,kent beck 和 grady booch 在科罗拉多主持召开的第 一次关于模式的会议。 模式研究的主要人物都参加了这次会议, 包括 jim coplien, douglea, desmond d souze,norm kerth,wolfgang pree 等。随后,在 1994 年, “四人帮”指出了 23 种经典设计模式2,在计算机领域产生了非常深远的影响, 设计模式成为软件工程领域中的热门研究课题之一。并在此之后设计模式的研 究逐渐热门化,设计人员也开始在很多领域有针对性的使用设计模式。目前, 国外软件工程界正把设计模式应用于软件体系结构、设计、编码和软件开发的 过程和组织,其理论成果主要体现在从 1994 年开始的“程序设计模式语言 (pattern languages of programming. p1op)”年会论文集中。而仅在数据库访问方 面的技术就有以下研究成果。 1odbc/jdbc odbc(open database connectivity , 开 放 数 据 库 互 连 ) 是 微 软 公 司 wosa(windows open services architecture,开放服务结构)中提供的为异质数据 库的访问统一的接口。odbc 基于 sql(structured query language),并把它作 为访问数据库的标准。这个接口提供了最大限度的相互可操作性,即一个应用 程序可以通过一组通用的代码访问不同的数据库管理系统。一个软件开发者开 发的客户/服务器应用程序不会被限定于某个特定的数据库之上。odbc 可以为 不同的数据库提供相应的驱动程序。 jdbc(java data base connectivity,java 数据库连接技术)是由 sun 公司的 javasoft 制定的。jdbc 是一个支持基本 sql 功能的通用底层应用程序接口,为 各种常用数据库提供无缝联接的技术。它在 web 和 internet 应用程序中的作用 和 odbc 在 windows 系列平台应用程序中的作用类似。 2ole/db ole db 是 microsoft 的数据访问模型。它使用组件对象模型(com)接口, 封装了 odbc 的功能,并以统一的方式访问存储在不同信息源中的数据。它也 提供了对包括关系数据库和非关系数据库在内的所有文件系统的底层接口。 ole db 支持开发访问各种数据源的应用程序, 无论是 dbms 还是非 dbms 数据源。 ole db 通过使用支持某一给定数据源的相应的 dbms 功能的 com 接 口,使得对数据源的通用访问成为可能。 3activex data object microsoft activex data object 使得客户端应用程序能够通过任何 ole/db 提供者来访问和操作数据库服务器中的数据。它同时具有远程数据服务(rds)功 能,通过 rds 可以在一次往返过程中实现将数据从服务器移动到客户端应用程 序或 web 页,在客户端对数据进行处理然后将更新结果返回服务器的操作。 4uda 微软推出的 uda(universal data access,统一数据访问技术)为关系型或非 中南民族大学硕士学位论文 - 3 - 关系型数据访问提供了一致的访问接口,为企业级 b/s 应用多层软件结构提供 了数据接口标准。统一数据访问包括 2 层软件接口,分别为 activex data object 和 ole db,对应于不同层次的应用开发。activex data object 提供了高层软件 接口,可在各种脚本语言(script)或一些宏语言中直接使用;ole db 提供了底层 软件接口,可在 c/c+语言中直接使用。 5ejb ejb 作为 sun 公司提出的 j2ee 体系的核心部分,是 sun 所力推的企业级开 发的首选,而 ejb entity 目前仍然是 sun j2ee 白皮书所最为推荐的 java 持久化 技术。不过作为一个重量级技术,entity bean 的性能不太尽人意,易用性也相 对较差,这成为它备受争议的一个焦点。 1.3 论文的研究内容 在面向对象应用中内嵌 sql 代码或者其他耦合数据库访问代码的数据访问 方式没有考虑到应用和关系数据库的维护性问题,这种设计会造成应用系统内 在的脆弱性,因此企业级应用的开发者在设计数据访问组件时,需要考虑以下 一些问题: (1) 应用必须能在多种数据库产品上正常运行; (2) 用户接口要隐藏复杂的数据库语义; (3) 数据访问的过多细节使得应用的代码难以很好的编写和维护; (4) 数据访问频繁的应用必须要设计数据缓冲机制; (5) 多用户访问数据时要解决并发问题。 针对以上面向对象应用中的普遍问题,如何在应用系统中搭建合适的数据 访问组件以支持对象关系映射,使应用具有支持多数据库产品的能力、编写 易于维护的数据访问代码和良好的数据访问性能成为企业级应用开发的关键之 一。这对于提高开发效率和质量,增加应用的维护性和健壮性大有裨益。 本文以此为研究的出发点,研究的内容主要包括: 第一,研究模式,设计模式以及相关基础知识。 第二,对数据访问层以及其中的数据访问模式、主动域模式和缓存模式等 模式进行分析和对比。 第三,结合数据访问层的多种设计模式,提出一种轻量级的对象持久层框 架的设计,并通过轻量级对象持久层框架结合 struts 的 web 应用开发,验证该 框架的有效性和实用性。 本文由 6 章构成,具体安排如下: 第 1 章 绪论。介绍课题的研究背景,设计模式的研究现状及本文的主要工 作。 基于设计模式的数据访问研究与应用 - 4 - 第 2 章 面向对象技术、uml 技术知识和相关技术平台的介绍。在本章中详 细介绍 uml 的建模机制和 struts 框架的工作流程等基础知识。 第 3 章 设计模式的定义,使用规则和几种常用的设计模式的研究。在研究 设计模式的原则、策略以及分类的基础上,重点阐述适配器模式、桥接模式、 工厂模式等几种常用的设计模式。 第 4 章 分析和总结数据访问层的各种设计模式及性能优化策略。 用结构图、 顺序图等辅助解释说明数据访问对象,主动域对象模式等的工作原理与实现策 略。 第 5 章 给出基于层的结构设计,并对相关设计细节进行分析和描述。给出 一种轻量级的对象持久层框架的设计开发学生课程与成绩管理系统,通过 轻量级对象持久层框架结合 struts 的 web 应用开发,以验证该框架的有效性和 实用性。 总结与展望 对本文和相关研究工作进行总结,讨论了下一步研究的有关内 容。 中南民族大学硕士学位论文 - - 5 第2章 相关知识基础 2.1 面向对象技术 从提出面向对象的概念以来,面向对象技术作为一种优秀的应用开发方法 已经得到广泛的应用,越来越多的个人和组织意识到它相对于结构化的软件开 发方法的优势,由于面向对象模型更能直观的表达和反映现实世界的事务,具 有封装、继承、多态等特性,使得系统的可重用性、健壮性和可扩展性大为提 高,也更利于软件维护。使用面向对象模型而不是关系模型来进行系统分析与 设计已经成为大多数应用开发人员的第一选择。 面向对象技术的原则可以概括如下: (1) 对象是具有明确定义的责任的事物。 (2) 对象对自己负责。 (3) 封装是指任何形式的隐藏(包括数据、实现、类、设计和实例化的隐藏)。 (4) 使用共性和可变性分析抽象出行为和数据中的变化。 (5) 按接口设计。 (6) 将继承看成一种把变化概念化的方法,而不是创建已有对象的特殊情 形。 (7) 将变化放入一个类中,并与该类中的其他变化解耦。 (8) 力求强内聚和松耦合。 内聚性(cohesion)是指例程/类中的操作之间联系的紧密程度。耦合性 (coupling)则是指 2 个例程/类之间联系的紧密程度。 内聚性描述的是一个例程内 部组成部分之间相互联系的紧密程度,而耦合性描述的是一个例程和其他例程 之间联系的紧密程度3。软件开发的目标应该是创建这样的例程:内部完整(高 内聚) ,与其他例程之间的联系则是小巧、直接、可见、灵活的(松耦合)。 (9) 将使用一个对象的代码与创建该对象的代码分离。 (10) 在应用“一次且仅一次”规则时绝对小心。 (11) 通过“按意图编程”使用反映意图的名字,确保代码的可读性。 2.2 uml 技术 uml(unified modeling language,统一建模语言)是一种以可视化的观点 来看的程序系统,是将规格和设计重点直接写下来的一种表现方式,也是用来 创建程序模型的图形语言。 它不仅统一了 booch,rumbaugh 和 jacobsan 的表示方 法,而且对其做了进一步的发展,最终统一为大众所接受的标准建模语言。uml 代表了面向对象方法中的软件开发技术的发展方向,具有巨大的市场前景,也 基于设计模式的数据访问研究与应用 - 6 - 具有重大的经济价值和国防价值。 uml 包括 3 个主要要素:uml 的基本模块、支配这些模块如何放在一起的 规则和一些运用于整个 uml 的公共机制4。 2.2.1 uml 的模块组成 uml 包含 3 种模块:事物、关系和图。 事物是对模型中的最具有代表性成分的抽象。uml 中的事物有 4 种,分别 是结构事物、行为事物、分组事物和注释事物。这些事物是 uml 中基本的面向 对象的构造块。 关系把事物结合在一起,图(diagram)是一组元素的图形表示,它聚集了相 关的事物。 一般情况下把图画成顶点(代表事物)和弧(代表关系)的连通图。uml 包括 9 种这样的图:类图、对象图、用例图、顺序图、协作图、状态图、活动图、组 件图和配置图。 2.2.2 uml 规则 uml 的构造块并非简单地按随机的方式放在一起,而是依据 uml 的规则 确定模型的结构是否良好来进行存放。 uml 的语义规则如下: (1) 命名:为事物、关系和图起名。 (2) 范围:给一个名称以特定含义的语境。 (3) 可见性:怎样让其他人使用或看见名称。 (4) 完整性:事物如何正确、一致地相互联系。 2.2.3 uml 的静态建模机制 任何建模语言都以静态建模机制为基础,统一建模语言 uml 也不例外。它 的静态建模机制包括用例图、类图、对象图、组件图和配置图。 1用例图 用例图(use case diagram)是参与者的外部用户所能观察到的系统功能的模 型图,从用户的角度描述系统功能,并指出各功能的操作者。 (1) 用例模型 用例模型(use case model)描述的是外部执行者(actor)所理解的系统功能。 用例模型用于需求分析阶段,它的建立是系统开发者和用户反复讨论的结果, 它表明了开发者和用户对需求规格所达成的共识。在 uml 中,一个用例模型由 若干个用例图描述。 (2) 用例和执行者 中南民族大学硕士学位论文 - 7 - 从本质上讲, 一个用例(use case)是用户与计算机之间的一次典型交互作用。 在 uml 中,用例被定义成系统执行的一系列动作,动作执行的结果能被指定执 行者察觉到。执行者(actor)是指用户在系统中所扮演的角色,其图形化的表示 是一个小人。需要注意的是执行者未必是人。例如,执行者也可以是一个外界 系统。 2类图、对象图 (1) 类图 类图(class diagram)是应用领域或应用解决方案中概念的描述。它不仅定义 了系统中用于表示类之间的联系如关联、 依赖、 聚合等, 也包括类的内部结构(类 的属性和操作)。 在 uml 中,类的可视化表示为一个划分成 3 个格子的矩形。矩形表示一个 类,3 个格子依次表示:类名、类的数据成员和类的方法。如图 2.1 所示。 类名 类的数据成员 类的方法 aa -:area double +()area 举例 图 2.1 类图示意图 (2) 类图中的关系 关联关系(association)表示 2 个类之间存在某种语义上的联系。关联上加上 箭头表示方向,其作用是表示该关联单方向被使用,在 uml 中称为导航5。如 图 2.2 所示。 client target uses 表示 使用了 client target 图 2.2 类的关联性 聚集关系表示类之间是整体与部分的关系。 在需求分析中,“包含” 、“组成” 、 “分为部分”等经常被设计成聚集关系。在 uml 中,聚集表示为一头为空心 菱形的连线。如图 2.3 所示。 a b a b a b a b 图 2.3 聚集 图 2.4 组合 图 2.5 继承 图 2.6 依赖 基于设计模式的数据访问研究与应用 - 8 - 组合关系如图 2.4 所示,在 uml 中,组合表示为一头为实心菱形的连线。 其含义是 a 是由 b 组成的,a 包含 b 类型的对象。 继承关系定义了一般元素和特殊元素之间的分类关系。在 uml 中,继承表 示为一头为空心三角形的连线。如图 2.5 所示。 依赖关系,有 2 个元素 a, b,如果修改元素 a 的定义可能会引起对另一个 元素 b 的定义的修改,则称元素 b 依赖于元素 a,即 b 使用 a。在 uml 中, 依赖表示为一头为实心三角形的连线。如图 2.6 所示。 (3)对象图 对象图(object diagram)是类图的实例,几乎使用与类图完全相同的标识。 对象图区别于类图的是对象图显示类的多个对象实例,而不是实际的类。 3组件图和配置图 组件图和配置图显示系统实现时的一些特性,包括源代码的静态结构和运 行时刻的实现结构。 (1) 组件图(component diagram): 描述代码部件的物理结构及各部件之间的 依赖关系,用于显示代码本身的结构。一般来说,软件组件就是一个实际文件, 可以是源代码文件、 2 进制代码文件或可执行文件等。 组件图可以用来显示编译、 链接或执行时构件之间的依赖关系。 (2) 配置图(deployment diagram):描述系统硬件的物理拓扑结构以及在此 结构上执行的软件,用于显示系统运行时的结构。配置图可以显示计算结点的 拓扑结构、通信路径、结点上运行的软件组件、软件组件包含的逻辑单元等。 (3) 组件在配置图中代表可执行的物理代码模块,如一个可执行程序。逻辑 上它可以与类图中的包或类对应。因此,配置图中可显示运行时各个包或类在 结点中的分布情况。 (4) 对象,一个面向对象软件系统可以运行很多对象。由于组件可以看作与 包或类对应的物理代码模块,因此组件中应包含一些运行的对象。 2.2.4 uml 的动态建模机制 1消息 在面向对象技术中, 对象间的交互是通过对象间的消息传递完成的。 在 uml 的 4 个动态模型中均用到消息这个概念。通常,当一个对象调用另一个对象的 操作时,即完成了一次消息传递。当操作执行后,控制权便返回到调用者。 在 uml 中,用带有箭头的线段将消息的发送者和接收者联系起来,箭头的 类型表示消息的类型,uml 定义的消息类型有 3 种,分别是简单消息、同步消 息和异步消息。 2状态图 中南民族大学硕士学位论文 - 9 - 状态图(state diagram)用来描述一个特定对象的所有可能状态及其引起状 态转移的事件。大多数面向对象技术都用状态图表示单个对象在其生命周期中 的行为。一个状态图包括一系列的状态以及状态之间的转移。如图 2.7 所示。 closed closing stayopenopen opening c l ic k c l i c k c l i c k c o m p l e t e c l i c k c l i c k c o m p l e t e 图 2.7 状态图 所有的对象都具有状态,状态是对象执行了一系列活动的结果。当某个事 件发生后,对象的状态将发生变化。 状态图中定义的状态有:初态、终态、中间状态和复合状态。其中,初态 是状态图的起始点,而终态则是状态图的终点。一个状态图只能有一个初态, 而终态则可以有多个。中间状态包括 2 个区域:名字域和内部转移域,如图 2.8 所示。图中内部转移域是可选的,其中所列的动作将在对象处于该状态时执行, 该动作的执行并不改变对象的状态。 login entry login do get username exit login user password / / /( ) 图 2.8 状态图 3顺序图 顺序图(sequence diagram)用来描述对象之间动态的交互关系,着重体现对 象之间消息传递的时间顺序。顺序图中的水平轴表示不同的对象,垂直轴表示 时间。顺序图中的对象用一个带有垂直虚线的矩形框表示,并标有对象名和类 名。垂直虚线是对象的生命线,用于表示在某段时间内的对象是存在的。对象 间的通信通过在对象的生命线之间画带箭头的线来表示消息,消息的箭头指明 消息的类型。如图 2.9 所示。 基于设计模式的数据访问研究与应用 - 10 - :client:server:device open 消息1 print 消息2 消息3 消息4 colse 消息5 图 2.9 顺序图 4协作图 协作图(collaboration diagram)用于描述相互协作的对象间的交互关系和链 接关系。虽然顺序图和协作图都用来描述对象间的交互关系,但顺序图着重体 现交互的时间顺序,协作图则着重体现交互对象间的静态链接关系。协作图可 以使用 case 工具自动转换为顺序图。 协作图中对象的外观与顺序图中的一样。如果一个对象在消息的交互过程 中被创建,则可在对象名称之后标以(new)。类似地,如果一个对象在交互期间 被删除,则可在对象名称之后标以(destroy)。对象间的链接关系类似于类图中的 联系(但无多重性标志)。通过在对象间的链接上标识带有消息串的消息(简单、 异步或同步消息)来表达对象间的消息传递。 5活动图 活动图(activity diagram)用于描述满足用例要求所要进行的活动以及活动 间的约束关系,有利于识别并行活动。活动图是由状态图变化而来的,它们各 自用于不同的目的。活动图依据对象状态的变化来捕获动作(将要执行的工作或 活动)与动作的结果,且活动图中一个活动结束后将立即进入下一个活动。 2.2.5 uml 建模过程 当采用面向对象技术设计系统时,首先应建立系统的逻辑模型,然后建立 相应的物理模型。建立系统逻辑模型的过程大致分为 3 步:第 1 步描述需求分 析,第 2 步根据需求建立系统的静态结构,第 3 步是描述系统的行为。其中在 第 1 步与第 2 步中所建立的模型都是静态的,可用 3 种图来描述,即用例图、 类图和对象图。而第 3 步中所建立的模型或者可以执行,或者表示执行时的时 序状态或交互关系,因此可以用状态图、活动图、顺序图和协作图来描述。 中南民族大学硕士学位论文 - 11 - 2.3 技术平台介绍 2.3.1 mvc 基础 mvc 是目前广泛流行的一种软件开发模式,它是 model-view-controller 的 简称。mvc 把一个应用程序分为 3 个层次:模型层、业务处理层、控制层。各 层各自处理自己的任务,图 2.10 就是 mvc 的结构图。 (控制器) 接受用户请求 调用模型层响应用户请求 选择视图显示响应结果 l (视图) 接受用户更新请求 发送用户请求给控制器 允许控制器选择视图 (模型) 封装应用程序状态 响应状态查询 处理业务流程 通知视图业务状态更新 用户请求 视图选择 业务处理 视图查询 视图更新 图 2.10 mvc 结构图 1mvc 各层定义 视图(view)是用户看到并与之交互的界面。对于 web 应用而言,可以概 括为 html 界面,也有可能为 xhtml、xml 或 applet。而 mvc 对于视图的 处理仅限于视图上的数据的采集和处理,以及用户的请求。 模型(model)是应用程序的主体,负责业务流程、状态接受处理以及业务 规则的制定。业务流程的处理过程对于其他层来说是黑箱操作,模型接受视图 请求的数据,并返回最终处理的结果。一个模型可以同时为多个视图提供数据, 提高了代码的可重用性。 业务模型中还包含另外一个重要的模型,即数据模型,数据模型主要指实 体对象的数据保存(持久性) 。 控制器(controller)用于接收用户输入,并调用模型和视图来完成用户请 求。在用户提交表单时,控制器本身不做任何处理和输出工作。控制器仅仅要 接收请求然后调用模型组件以处理请求,最后调用视图来显示模型处理后返回 的数据。 2mvc 处理过程 (1) 控制器接收用户的请求,然后决定调用哪个模型进行处理。 (2) 模型进行相应的逻辑处理,然后返回处理后的数据。 (3) 控制器调用视图将模型返回的数据呈现给用户。 基于设计模式的数据访问研究与应用 - 12 - 2.3.2 jsp model 2 jsp model2 的结构图如图 2.11 所示。 (控制器) selvlet (视图) jsp (模型) javabean 应用服务器和数据库 2 实例化 1请求 5响应 4 3 图 2.11 jsp model 图 2.3.3 struts 框架介绍 1struts 结构图 struts 是 apache 组织 jakarta 项目组的一个基于 web 的免费且公开源代码的 项目。实际上,struts 是在 jsp model2 的基础上实现的一个 mvc 框架。它将 servlet 和 jsp 标记(属于 j2ee 规范)用作实现的一部分。 struts 继承了 mvc 的各 项特性,并根据 j2ee 的特点,做了相应的变化与扩展。struts 作为第一个基于 mvc 设计模式的开源 java web 编程框架,在业界受到广泛的尊崇,得到普遍应 用,已经成为一个主流的 web 编程框架。在 web 系统设计中,采用基于 mvc 模式的 struts 框架结构,可以使所设计的 web 系统能够很好的将显示和逻辑分 离,并易于扩展和维护,可重用性强6。其结构如图 2.12 所示。 struts-config. xml 客户端 浏览器 模型 应用程序的状态 控制器 servlet 业务逻辑 action actionform 视图 jsp get 转发 事件 http请求 委派 更新 http响应 tag libreries 图 2.12 struts 结构图 客 户 端 通 过 浏 览 器 发 出 请 求 后 , 请 求 被 控 制 器 actionservlet 获得, actionservlet 在 struts-config.xml 配置文件中查找有效映射,然后将相应的 说明:(1) jsp 负责生成动态页面 (2) servlet 负责流程控制 (3) javabean 负责业务逻辑 中南民族大学硕士学位论文 - 13 - actionmapping 对象转发给 action 处理器对象进行处理。 action 处理器对象访问 actionform 中的数据,处理和响应客户的请求;它还调用后台的 bean 组件,这 些组件封装了具体的业务逻辑。action 处理器对象根据处理结果通知控制器, 然后控制器进行下一步的处理。 2struts 的实现原理 (1) 控制器 控制器的作用是从客户端接收请求,并且选择执行相应的业务逻辑。然后 把响应结果送回到客户端。struts 中的 controller 功能由 actionservlet 和 actionmapping 对象构成。核心是一个 servlet 类型的对象 actionservlet。servlet 包括一组基于配置的 actionmapping 对象,每个 actionmapping 对象实现了一个 请求到一个具体的 model 部分中的 action 处理器对象之间的映射7,8。 (2) 模型 struts 为模型部分提供了 action 和 actionform 对象,所有的 action 处理器 对象都是开发者从 struts 的 action 类派生的子类。action 对象封装了具体的处 理逻辑,调用业务逻辑模块,并且把响应提交到合适的 view 组件以产生响应。 struts 提供的 actionform 组件对象可以通过定义属性描述客户端表单数据,开 发者可以从它派生子类对象;利用它和 struts 提供的自定义标记库,可以实现对 客户端的表单数据的良好封装和支持;action 对象可以直接对 actionform 组件 对象进行读写,而不再需要与 request、response 对象进行数据交互。通过 actionform 组件对象实现了对 view 和 model 之间交互的支持。struts 也可根据 系统的复杂度使用实体 bean 和会话 bean 等组件来实现系统状态7,8。 (3) 视图 struts 中的视图部分就是一组 jsp 文件。在这些文件中既没有业务逻辑,也 没有模型信息,只有标签7,8。 struts 提供了自定义的标记库,通过这些自定义标记可以非常好的与系统的 model 部分交互,创建的 jsp 表单实现与 model 部分中的的 actionform 映射, 完成对用户数据的封装,同时自定义标记还提供了像模板定制等多种显示功能。 3struts 框架响应客户请求的工作流程 当 actionservlet 接收到一个客户请求时,将执行如下步骤: (1) 检索与用户请求相匹配的 actionmapping 实例,判断实例是否存在。如 果实例不存在,则创建一个 actionmapping 对象,它包含了把请求转发给哪个 action 的信息。 (2) 判断 actionform 是否存在, 如果不存在, 则创建一个 actionform 对象, 并把客户提交的表单数据保存到 actionform 对象中。 (3) 根 据 配 置 信 息 决 定 是 否 需 要 表 单 验 证 。 如 果 需 要 验 证 , 就 调 用 actionform 的 validate()方法。 基于设计模式的数据访问研究与应用 - 14 - (4) 如 果 actionform 的 validate() 方 法 返 回 null 或 返 回 一 个 不 包 含 actionmessage 的 actionerrors 对象,则表示表单验证成功;如果返回一个或多 个 actionerror 的 actionerrors 对象,则表示表单验证失败。在这种情况下,不 会再创建 action 对象并调用 action 的 execute()方法。 (5) actionservlet 根据 actionmapping 实例包含的映射信息决定将请求转发 给哪个 action。如果相应的 action 实例不存在,就先创建这个实例,然后调用 action 的 execute()方法。 (6) action 的 execute()方法返回一个 actionforward 对象, actionservlet 再把 客户请求转发给 actionforward 对象指向的 jsp 组件。 (7) actionforward 对象指向的 jsp 组件生成动态页面,返回给客户。 因此 struts 的工作数据流程图如图 2.13 所示。 struts-config. xml 客户端 浏览器 html txt xml actionservlet actionform jsp页面 生成 创建业务对象 http请求 转发 action businessobject 生成表单 转发 图 2.13 struts 工作流程图 4struts 的核心组件 (1) actionservlet 它充当着 struts 框架的中央处理器,根据配置文件的制定描述,将 http 客 户请求信息转发到适当的处理器910。 (2) action 它将请求和业务逻辑分开,是客户请求动作和业务逻辑之间的一个适配器。 (3) requestprocessor actionservlet 把 全 部 客 户 端 的 请 求 委 托 到requestprocessor 对 象 , requestprocessor 使用 struts-config.xml 文件检查请求 uri,找出所对应动作 action 标识符9,10。 (4) actionmapping 控制器把一定的信息转发到相应的 action 类时,需要一些与动作和请求信 中南民族大学硕士学位论文 - 15 - 息相对应的映射配置信息,而这些映射配置信息被存储在特定的配置文件 struts-config.xml 中。在内存中,每个位于 struts-config.xm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年执业兽医资格考试真题及答案
- 中级经济师考试(农业经济)习题库及答案
- Unit 1 Teenage Life 单元词汇学习检测(含答案)高中英语人教版必修第一册
- 车间中暑救援安全知识培训
- 毛概改革开放课件
- 车辆行使课件
- 毛巾营销知识培训总结
- 车辆涉水安全案例课件
- 特种设备技术知识培训课件
- 棉花种植机械化工艺考核试卷及答案
- 初中英语校本教材
- 2024年内蒙古丰镇市招聘社区工作者26人历年重点基础提升难、易点模拟试题(共500题)附带答案详解
- 生态环境执法大练兵知识考试题库(含答案)
- “案”说刑法(山东联盟)-知到答案、智慧树答案
- 课件:性传播疾病讲解
- 新能源汽车行业的营销渠道与渠道管理
- 2024年度国网基建安全(变电土建)安全准入备考试题库(附答案)
- 《HSK标准教程3》第1课
- 中国甲状腺相关眼病诊断和治疗指南2022年解读
- 石油储量与产量预测模型研究
- 《忆秦娥~ 娄山关》
评论
0/150
提交评论