(计算机软件与理论专业论文)基于mvc模式的javaweb框架研究与应用.pdf_第1页
(计算机软件与理论专业论文)基于mvc模式的javaweb框架研究与应用.pdf_第2页
(计算机软件与理论专业论文)基于mvc模式的javaweb框架研究与应用.pdf_第3页
(计算机软件与理论专业论文)基于mvc模式的javaweb框架研究与应用.pdf_第4页
(计算机软件与理论专业论文)基于mvc模式的javaweb框架研究与应用.pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(计算机软件与理论专业论文)基于mvc模式的javaweb框架研究与应用.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 近年来,随着网络技术的迅速发展和j 2 e e 平台的广泛采用,基于b s 架构的 多层w 曲体系结构逐渐发展成熟起来。m v c 设计模式分离了数据的控制和数据的 表现,在实现多层w 曲应用系统中具有明显的优势。s t m t s 是一个基于j 2 e e 平台、 实现了m v c 设计模式的框架,它全面减轻了构建多层w 曲应用的负担,提供了 可复用的软件构架。 8 咖t s 采用基子谴l 的配置文件来配置应用。在开发s t n l t s 应用程序的过程 中,s 虮l t s 的配置文件经常会被修改。如果需要查验配置文件修改后的效果,就需 要重启w c b 容器,而频繁的重启w c b 容器是一件既费时又麻烦的事情。 在s 仰t s 中,视图部分通常基于j s p 和l a g l i b 技术来构建。但是,以j s p 作为 显示技术存在羞一些局限性,不具备良好的表现层适应性。 针对上述背景,本文首先在分析研究s 仃u t s 框架的基础上,提出了一个自动重 新加载其配置文件而无需重启w e b 容器的方案,该方案可以使s t r u t s 开发人员在 开发s t m t s 应用程序时随时修改配置文件而不必频繁地重启w e b 容器,为开发 s t m t s 应用程序提供了一定的便利。接下来通过分析模板技术的特点,结合现有模 板技术的优点,提出了一个简单合理的解决方案来扩展s t m t s 的表现层。这样可以 从表现层中有效地分离出表现逻辑和业务逻辑,更便于开发过程中的业务分工和 效率的提高。 论文最后在以上扩展改造s 仃u t s 的基础上设计开发了一个典型的w e b 应用一 网上服装店系统,并给出了详细设计过程,说明了本文提出方案的可行性。 关键字:m v cs t n l 乜配置文件框架模板表现层 a b s 订a c t i nr c c e n ty e a r s w i t ht h em p i dd c v e l o p m e n to fn e t w o r k 卸dc x t e n s i v ea d o p t i o no f j 2 e ep l a 怕加,舢l a y e rw c bs t r u d u f eb a s e d 帆b sg f o w su p 铲a d u a l l y m v c d e s i g i lp a t t e ms 印a n t 髓c o n t f o lo fd a t af f o mf c p r e s e n t a t i o no fd a t a ,a i l dt h c r c f o r eh 弱 t h ea d v a n t a g eo f i m p l e m 锄t a t i o n0 fm u l t i l a y e r w e ba p p l i c a t i o n s s l m t si st h e a p p l i c a t i o nf r a m c w o r kw h i c hi m p l 锄e n t sm v cb a s e do nj 2 旺p l a t f o 耵n ne a s e st h e b u t d e no fo o n s t m c t i gm u l t i l a y e fw 曲a p p l i c a t i o n s 锄dp r 0 v i d e sr e u s a b l es o f 呐a r e a r c h i t e c n l r c s 仃u t sc 0 蚯g i l r ei t sa p p l i 姐c i o n u s i l l gc o n f i g i l r a t j o n 6 l eb 勰e do nx m li n t h c p r o c c d u r co fd e v d 叩i i l gs 仃u t sa p p l i c a t i o n ,s t m t s sc o n f i g i l m t i o n f i l e i sm o d i 瓜d f b q u c n t | y t c s ti s c c d e da f t c rm o d 墒【c a t i o ,y o um u s tr c s e tw e bc o n t a i n e r w h i c hi s t r 叫b l e da n df b o e i ns 咖t s ,v j c wi sm a d eu po “s p 锄dc u s t o l n1 毡l i b f a f i e s ,h a w e v e r 鹤柚c x c c l l e n t t e c h n o l o g yf o rc 托a t i n gv i e w s ,j s ph a v e m cd r a w b a c k s i i lt h i sw a y ,t h cc x i s t i n g 丘踟e w o r ki sn o tp r 0 ,i d e d 、i t hg o o dp r e s t a t i o nl a y e rn c x i b i l i t y t h cp a p c rm a k e ss e v e r a lc o n t l i b u t i o n st ot h ep r o b l e mm e n t i o n e dd b o v c f i r s t ,b y a n a l y z i i l gs t m t s 砌i t e c t u r c ,w ep m p o s cas c h c m ef o ra u t o m a t 砌l yr e l o a d i n gs t m t s c o n f i g i l r a 6 0 n - 脚ew i t h o u tr e t t i n gt i l ew e bc o m a i n e rt 0s o l v et h ef i r s tp r o b l 咖 s e c o d ,b ym 姑n gu s co ft c l p l a t ct c c l l i i i q u c ,w ep r e s c n ta ns i m p l ea n dr e 够o n a b l c a p p r o a c ht oi m p 加et h e e wo fs t n l t s ,w h i c he x t c n d st h es m l t sp r e n t a t i l a ”r , e n a b l c se 筋d e n t l ys 印a 糟t i n gb u s i n e 豁l o 西c r 印r e s e n t a t i l o g i ca n d 栅e 拖) m t 髂 t h cp e r f 妇锄c co fb u s i l l c 鹞s q p a 删o ni nt h eb 雌i n e s sd c v e l 叩i n gp i o 辐,t h 璐石x 骼 t h es e c o n dp m b l c m f i n a l l y ,w cs h o wh o w t o i n t e 则e o u r 妯e m a o f e x p 勰d e ds 妞l t s i n t oa t y p i c a lw e b a p p l i c a t 孟o n 一- 0 m i n ec l o t hs m ,柚dp r e s e tt h ed e t a i l so fd 髓i 髓t op r o v et h ef c 猫i b m t y o fo u rs c b 锄e k e y w o t d :m v c 蠡阻m e w o r ks t m t sa p p l i c a t i o n - f i kt 锄p l a t ev i e w 创蹶性声明 y8 5 8 9 9 2 本人声明所星交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所傲 的任何贡献均已在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:重墨国日期撕f ,厶i 孑 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文;学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论文 摘解密后遵守此规定) 本学位论文属于保密,在一年解密后适用本授权书。 本人签名 导师签名: 丝堡圈 垂:耋绁 日期沙f ,2 i 扩 日期2 ,。f ) 一ir 第一章绻论 第一章绪论 1 1 论文背景 当今时代信息技术飞速发展,人们己经处于数字化的生存空问之中。i n t e m e t 构造了无限的信息资源,它的普遍使用己经从根本上改变了人们的生活方式和工 作方式,也改变了企业的经营方式和服务方式。近年来,虢着网络技术的迅速发 展和j 魉平台的广泛采用,基于b ,s 的多层w e b 体系结构逐渐发展成熟起来, 多层w e b 应用的开发己成为主流。但是,即使利用最先进的软件平台j 2 挠,开发 这样的应用仍然是个难题。在多层w 曲体系结构的设计中。普遍存在着程序可重 用程度低、维护工作繁琐、应变能力较弱等不足。同时,多屡w c b 应用软件需要 面对复杂的网络环境、多样化的用户需求、灵活的业务模式、复杂的业务流程、 众多的组织机构及层次、角色分工等问题,在业务和技术上也是复杂多变的。因 此,在基于组件的j 脚平台充分内鼍了灵活的情况下,如何组织应用程序以实现 徇单高效的应用程序升级、维护和扩展,以及如何让不懂程序代码的页面设计人 员避开程序数据,成为我们首先要解决的问题。而且,我们还要充分考虑到多层 结构的特殊性:各屡之间不仅需要密切配合才能完成最终功能又要在实际开发 中尽可能的使各层的开发相对独立。减少备层之闻的藕合程度,避免开发人员相 互制约,影响开发效率。 m v c 软件设计模式源予传统的面向对象语言s m a l l l k 8 0 ,是一个经典的设 计模式- 它是设计交互式应用时广泛采用的一种设计模式,也是j 2 e e 蓝图推荐的 在开发w 曲应用时使用的方法。利用m v c 设计模式开发w e b 应用,可以将袭现 逻辑和业务逻辑分离。构建可复用的软件系统框架,嗣时可以简忧软件开发,提 高软件性能和可维护性,达到提离软件质量的目的。 s t m b 是一个基于j 2 班 平台、对m v c 设计模式实现w 曲应用开发的框架。 它在2 0 0 1 年6 月作为a l ,a c h ej a k 耐a 项目的组成部分闯世运做。s t f u 姆主要采用大 多数开发者熟知的j 盯a b e 柚,j 挑s 髓v 盯p a g 哪s p ) ,s e r v l e t 等标准技术,对m v c 设 计模式的三个部分提供了对应的实现组件。项目的创立者希望通过该项目能有助 于开发者利用j s p 和s e w l e t 的优点更加快速、容易的建立可扩展的多层w 曲应用。 s 咖忸规定了应用的体系结构,为应用系统提供了一个良好的软件构架,解决了由 于应用的复杂性丙在软件开发过程中所带来的各种问题,井对于实现在应用系统 建设初期所制定的软件功能、开发投入、开发周期、项目的组织和管理上的目标, 都有极大的帮助。它的目标是要全葱减轻构建多层w e b 应用的负担,提供可复用 的框架。在s h t s 中,视图部分通常基于j s p 和t a g l i b 技术来构建。j s p 有力地推 2 基于m v c 模式的j a v a w 曲框架研究与应用 动了j a v a 在w e b 开发中的应用。同时,在j s p 标签库的帮助下,j s p 为w e b 和 j 2 e e 应用中的表现层开发提供了丰富和强大的工具。但是,以j s p 作为显示手段 也存在着一些局限性: 1 s 机l t s 的标签库非常复杂,学会使用s t m t s 的标签库需要个较长期的过程; 2 在开发过程中,对j s p 页面的任何修改都会导致容器重新编译j s p ,这样 是非常耗费时间的; 3 在开发过程中页面设计人员和程序设计人员不能展开并行工作,不利于开 发效率的提高。 s t m t s 采用两个基于x m l 的配置文件来配置应用。s l n n s 框架配置文件使得开 发者可以灵活地组装和配置各个组件,提高了应用软件的可扩展性和灵活性,可 以避免硬编码。当s 劬t s 配置文件被修改后,如果不重启w e b 容器,配置文件的 修改效果将无法得到体现但是在开发s t n l t s 应用程序的过程中,s m i t s 的配置文 件经常会被修改,如果修改后需要查验效果,就需要重启w 曲容器,而频繁的重 启w e b 容器是一件既费时又麻烦的事情。 1 2 论文工作 论文主要针对研究背景中提出的s t r u t s 框架中的几个问题进行解决,给出了相 应的解决方案。文中使用模板技术作为s t m t s 中v i 删的补充实现技术,下面先看 看模板技术定义及其特点: 模扳技术先将美工页面指定为模板文件,然后将页面中活动的内容如数据库 输出,用户交互等部分定义成形式为变量的标记放在模板文件中相应的位置,当 用户浏览时。由后台j 吖a 程序生成模版文件中定义的变量值,再由模版引擎将模 板文件结合变量值,将模板文件中定义的变量进行替换,然后输出。所以,模板 技术能够改善网站的结构,其主要特点有: 1 抽象程序设计,没有垃圾m m l 代码; 2 设计人员不需要关心全部的“模糊”代码; 3 速度快; 4 模版易于重用; 本文的主要研究内容是: 一、首先从理论上对在开发基于j 2 e e 的多层w 曲应用中采用m v c 设计模式 的必要性做了论述,然后研究了国内外最流行的w 曲应用框架s t n l t s 一一个基于 j 2 e e 平台、实现了m v c 设计模式的框架,分析其实现原理和特点。 二、基于s t r i l t s 配置文件的实现机制,提出了一个自动监测并重新加载配置文 件的方案。该方案可以在开发s t m t s 应用程序的过程中,避免频繁的重启w c b 容 第一章绪论 3 器,为开发s 虮i t s 应用程序提供一定的便利。 三、剖析了s t n 鹏使用j s p 和t a g l i b 实现v i e w 存在的问题;并针对此问题提出 了一个合理的解决方案。在不改变s t m t s 的m 0 d e l 和c o n t r o l l c f 的前提下,采用模 板技术扩展了v i e w 中的j s p 。使得s t m t s 具有更强的可扩展性和易维护性。在论 述了改进方案的可行性和优点的同时,重点分析了改进方案的设计原理和关键实 现技术。 四、由于s t n l 忸框架并没有为其m o d e l 部分提供现成的组件,所以借助o r m 软件h i b e 嫩t e 增强其对数据持久层的支持,并在以上基础上设计了一个电子商务 的典型应用网上服装店,说明了以上扩展方案的可行性。 1 3 论文章节安排 本文的章节安排如下: 第一章绪论。介绍了本文的研究背景、主要研究内容和全文的组织结构。 第二章相关技术。介绍了j 2 e e 多层模型和m v c 设计模式的概念,从理论上 对在开发基于j 2 e e 的多层w e b 应用中采用m v c 设计模式的必要性做了论述。然 后介绍了作为s t r i l 坞框架模型部分补充的h i b c m a t e 技术。 第三章s t m 协框架研究。分析了s 咖饵框架实现m v c 模式的机制。然后分别 对s 仃u t s 框架的各个部分进行了详细的分析。最后在以上分析的基础上对s t r u t s 框 架加载配置文件的机制进行了研究,然后提出了一种自动监测并重新加载s t n l t s 配置文件的方案。 第四章s t i l l 忸框架的扩展。通过分析现有s t n j t s 框架的局限性,提出了对其进 行扩展的方案。在充分分析各种模版技术豹基础上,结合现在广泛使用的几种模 版技术的长处,以j d y n 蛐订c 模版语言为基础改造了其解析方法,提出了一种简 单有效的模版技术,并用其来扩展s 协l t s 框架的v i c w 部分,然后介绍了如何将 0 l t m 软件i i i b 钮l a t e 集成到s m l 协框架中扩展其m o d e l 部分的方法。 第五章扩展后的s t n l t s 框架的应用。在论文提出的s t m l s 扩展方案的基础上, 设计开发了网上服装店系统。具体给出了详细设计,进步说明了这种扩展方案 的可行性。 第六章结束语。对本论文的工作进行总结,指出了本文中许多值得研究和探 讨的问题,对今后的工作做了展望。 !茎王! ! ! 蕉窭盟! 塑壁! 堑鏊鲤塞皇廛旦 第二章相关技术 2 1j 2 e e 多层模型 j 2 e e 企业级应用开发平台提供了多层的分布式应用模型、组件重用策略、一 致化的安全模型以及灵活的事务控制特性,它与传统的互联网应用程序模型相比 有着不可比拟的优势。由于它是一个开放的标准,所以保证所开发出来的平台独 立的、基于组件的j 2 e e 解决方案不会束缚在任何一个厂商的产品和a p i 上。j 2 e e 技本已经获得了各大信息技术厂商的广泛支持,并已成为当今企业级应用开发的 主流平台1 2 】。 j 2 e e 为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制, 使其具有巨大的吸引力。许多企业都需要扩展他们的业务范围,降低自身经营成 本,缩短他们和客户之问的响应时间,这就需要在企业、合作伙伴和雇员之间存 在一种简捷、快速的的服务。典型的说,提供这些服务的应用软件必须同企业信 息系统相结合,并提供新的能向更为广阔的用户提供的服务。这些服务要具备以 下的特点: 高可用性:以满足现在的全球商业环境 安全性:保护用户的隐私和企业数据的安全 可依赖和可扩展性:保证商业交易的正确和迅捷 最初这些服务是由两层的应用( 也称为客户服务器或c ,s 结构) 来实现。在 这种结构下服务器往往只提供数据库服务;客户端负责数据访问、应用业务逻辑、 将结果转换为一个格式以便显示等等。这种体系在开始的时候很容易配置,但难 于升级或扩展。在w 曲领域中,可能最重要就是扩展,而两层的应用不便于升级 扩展,因此并不适合用在广域网中。 为了解决两层体系的不足,中间层出现在客户端和后端数据源之间,这些中 间层提供了把商业功能和数据与e 裕相结合的功能;它们把客户端从复杂的业务 逻辑中分离出来,利用成熟的互联网技术使用户在管理上所花费的时间最小化。 而j 篮觅正是降低了开发这种中间层服务的成本和复杂程度,因而使得服务可以被 快速的展开,并能够更轻松的面对竞争中的压力。 j 2 e e 平台使用了一个多层的分布式应用程序模型。应用程序的逻辑根据其实 现的不同功能被封装到组件中,组成j 2 e e 应用程序的大量应用程序组件,根据其 所属的层不同被安装到不同的机器中。图2 1 描述了一个分布式j 2 e e 应用程序, 它可以分为如图所示的四层结构。事实上,j 2 e e 应用程序既可以是三层结构,也 可以是四层或多层结构。但很多时候总是将j 2 髓应用程序的多层结构考虑为三层 结构。这是因为它们分布在三个不同的位置:客户端机器、j 2 e e 服务器机器和在 第二章相关技术 5 后端的传统的机器。三层结构的应用程序可以理解为在标准的两层结构的客户端 服务器模式的客户端应用程序和后端存储资源中间增加了一个多线程的应用程序 服务器。 2 1 1j 2 e e 的多层结构 下面分别介绍各层; 客户层:用来与用户交互,并把来自系统的信息显示给用户。j 2 e e 平台支持 不同类型的用户,包括h r h 也用户、j g v a a 印l c t s 和j a 姐应用等。 w 曲层:w 曲层产生表示逻辑,并接受来自表示客户端的用户反馈,这些表 示客户端通常为删l 客户端、j a v aa p p l e t s 和其它的w 曲客户端。在所接收的 客户端请求的基础上,表示层对用户的请求产生相应的回应。j 2 e e 平台中,是由 w 曲容器内的s c r v l e t 和j s p 来实现这一层的。 商业逻辑层:这一层处理应用的核心业务逻辑。商业逻辑层为低层业务服务 组件提供必要的接口。业务组件通常被实现为日b 容器内的e j b 组件。其中,髓 容器提供组件生命周期、管理持久性、事务和资源分配等。 e i s 层:这一层为企业的信息系统服务,包括数据库系统、事务处理系统、遗 产系统和企业资源计划系统等。e i s 层是j 2 e e 应用于非j 2 e e 应用或遗产系统集 成的连接点。 !茎王! ! 曼燮茎盟! 坚! 翌堕焦鏊塑窒墨廛旦 2 2m v c 设计模式 在面向对象系统的设计中可以认为,类及其生成的对象是构成面向对象系统 的最基本元素;采用设计方法组合这些元素,得到构成面向对象系统的构件。同 时,这些构件的设计方法在经过不断的改进和完善后逐渐成型,成为构成面向对 象系统的基本设计参考,也称为设计模式。我们采用设计模式来抽象和总结系统 构件的设计方法,同时将它用于新的系统构件的设计中。使用类和对象,使我们 在元素的层次上实现了重用性。而使用设计模式,则在系统构件的层次上实现了 重用性。设计模式提供了在特定应用场景下解决问题的类、对象及相互关系的设 计方法。这些方法并不针对于具体的系统,只是提供了一种设计系统的思考方法, 一个设计模式可能用于不同的系统,一个系统也可能会用到多个设计模式。 m v c 是一种目前广泛流行的软件设计模式。近年来,随着j 2 e e ( j a v a2 e n t e r p r i s ce d i t i o n ) 的成熟,m v c 得至4 广泛使用,并成为j 2 e e 平台上推荐的一种设 计模式。它为开发者理解分析应用模型提供了最基本的分析方法、清晰的设计框 架和规范的依据。m v c 强制性她把一个应用的输入、处理、输出流程按照视图、 控制、模型的方式进行分离,形成了三个核心模块:控制器、模型、视图,它们 担受不同的任务。1 1 9 1 1 控制器( c 咖t m u c r ) :控制器接受用户的输入并调用模型和视图去完成用户 的需求。该部分是用户界面与m o d c l 的接口。一方面它解释来自于视图的输入。 将其解释成为系统能够理解的对象,同时它也识别用户动作,并将其解释为对模 型特定方法的调用:另一方面,它处理来自于模型的事件和模型逻辑执行的结果, 调用适当的视图为用户提供反馈。 2 模型( m 0 d c l ) :模型是应用程序的主体部分。摸型表示业务数据和业务逻辑。 一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提 高了应用的可重用性。 3 视图刚e w ) :视图是用户看到并与之交互的界砸。视图向用户显示相关的数 据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。视图可以 向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件, 从而对用户界面进行同步更薪。 三者的协作关系如图2 2 所示。 第二章相关技术 7 图2 2 m v c 设计模式 从图中我们可以看到m v c 的处理过程。首先控制器接收用户的请求,并决定 应该调用哪个模型来处理;然后模型根据用户请求进行相应的业务逻辑处理,并 返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈 现给用户。 m v c 设计模式的优点: ( 1 ) 允许多种用户界愿的扩展:在m v c 模式中视图与模型没有必然的联系, 都是通过控制爨发生关系,这样如果要增加新类型的用户赛丽,只需要改动相应 的视图和控制器即可,而模型则无需发生改动。 ( 2 ) 模块的有效性:控制器、模型、视图的程序改变不会影响到其他各层及组 件,不同的组件开发能够同时进行。 ( 3 ) 代码和设计的复用性:广泛采用可复用的组件,使开发小组之间易于沟通, 设计的系统易于理解,同时也降低项目的开发成本。 ( 4 ) 易予维护:控制器和视图可以随着模型的扩展而进行相应的扩展,只要保 持一种公共的接口,控制器和视图的旧版本也可以继续使用。 ( 5 ) 功能强大的用户界面:用户界面与模型方法调用组合起来,使程序使用更 清晰友好的界面发布给用户。 综上所述,m v c 是构建应用框架的一个较好的设计模式,可以将业务处理 与显示分离,将应用分为控制器、模型和视图,增加了应用的可拓展性、强壮性 及灵活性。基于m v c 的优点,目前比较先进的w 曲应用框架都是基于m v c 设计 模式的。本文也是在基于m v c 模式的w 曲应用框架s t n l t s 控制器基础上的改进。 ! 基主丛! 曼塑塞盟塑蛸塑! 焦墼堑壅皇壅旦 2 3h i b e m a t e 技术 h i b e m a t e 是一个实现数据持久化的工具项目,它可以将数据库资源映射为一 个或多个p o j o ,即普通j a v a 对象,将匦向数据库资源的各种业务操作以p o j o 的 属性和方法的形式实现。这样做可以使我们摆脱繁琐的j d b c 代码将精力更多 地集中在业务方法的实现上。州 简单地说,h i b e m a t e 只是一个将持久化类于数据库表映射的工具,h j b e m a t e 只需要将每个持久化实例对应于数据库中的一个数据行即可。h n ) c m a t e 的工作过 程如下图所示: 图2 3h i b c m a l c 的工作过程 h i b c m a t c 的实际过程还是依赖于s q l 语言和j d b c ,但它将原本分散的j d b c 和s q l 配合产生的编程配合产生的编程接口编成了对象化的数据接口,把关系型 数据库的数据转化成了面向对象技术体系中的持久化对象。在和数据库连接方面, 仍然使用连接池技术,在数据操作过程中,借助事务服务来保证可靠性,通过数 据缓冲技术来提高查询效率、改善性能,利用映射文件设置处理过程中的各种细 节以提高性能。 h i b c m a t c 利用i 王i b e m a t c c f g x m l 文件来配置h i b 咖a 把所使用的包括数据库和 连接池等在内的资源,和用h b m x “来描述p q l o 和数据库资源的映射关系。 h i b e 舢t e c f g x m l 文件中需要配置的基本内容包括:所使用的数据库驱动、u r l 、 h i b 锄a t e 方言、数据库访问的用户和密码,以及需要加载的h b m 】【n l l 映射文件。 埘b e m a t c c f g x m l 内容的导入需要使用 珏b c m 越e 提供的c 0 咀6 9 u m t i 衄类的n f i g i i 方法,形成c 0 趟g 啪t i o n 实例,然后由c b n t 置g i l m i 实例创建s e s s i o n f a c t o f y 对象 实例。h i b e m a t e 应用基本都是以s e s s i 衄胁o r y 产生的s c s s i 对象为基础操作的。 * h b m x m l 文件被称为映射文件。严格遵守标准的配暨文件的第部分应该与 第二章相关技术9 p o j 0 的类名一致,放置的位置也应该与对应的p o j o 类的包路径一致。 2 4 本章小结 本章第一部分对j 2 e e 的多层模型进行了详细介绍,分析了其特点和优点,并 分别对每一层都进行了详细介绍。第二部分在阐述设计模式的基础上分析了传统 m v c 模式的原理、特点。然后详细介绍了m v c 模式的优点。最后从工作过程和 软件的配置两个角度简要介绍了下碰b c r n a t e 技术。 1 0 基于m v c 模式的】a v a w e b 框架研究与应用 第三章s t m t s 框架研究 3 1s t n l t s 框架 s t n l t s 框架由c r a i gr m c a 卸a h 锄于2 0 0 0 年创建,并捐赠给了a s f 。经过大 量的开发人员不断的改进,s t m t s 已成为众所周知并极为成功的a p a c h cj a k a n a 工 程。已成为j a v a w 曲框架事实上的标准。以s t r u t s 为基础,开发人员可以集中精力 关注构建业务应用程序的工作,而不必关注体系结构的问题。 既然s t n l t s 是一种框架,那我们首先从框架说起。 3 1 1 框架( f r 姗e w o r k ) 框架最简单的形式是一组类和接口,它们互相协作以解决特定类型的软件问 题。一般具有以下特征: 框架包括大量的类和组件,每种类或组件都提供了某种概念的抽象。 框架定义了这些抽象如何协作解决问题。 框架组件可以重用。 框架在更高层次上组织模型。 优秀的框架提供许多不同类型的应用程序可以利用的通用行为。为了更确切 的理解框架概念,我们把框架和我们熟悉的软件库做一比较。 框架是由j a v a 语言提供的类和接口组成的,这一点和软件库非常相似。它们 之间存在细微但是非常重要的差别。软件库包含应用程序可以调用的函数或例程。 而框架提供通用、相互协作的组件,应用程序通过扩展这些组件提供特定的函数 组。这种方式和软件库恰恰相反,所以框架也被称为“颠倒的( u p s i d c d o w 丑) ”库。 下图演示了框架和软件库的这种差别。 图3 1 框架和软件库的差别 库- l 库2 l 鹱 主应用 l 程序 匿 第三章s n i l 协框架研究 1 1 3 1 2s t m t s 实现m v c 的机制 s t m t s 实质上就是在j s pm o d e l 2 的基础上实现的一个m v c 框架。在s l r u l s 框 架中,模型由实现业务逻辑的j a v a b e 锄或日b 组件构成,控制器由a 嘲o s e l e t 和a c t i o 来实现,视图由一组j s p 文件构成。图3 2 显示了s 拉u t s 实现的m v c 框 架。 s e r v l e 蚶s p 容 s i n l t 一埏x i l i lj 啦 葡 i“ l ( 控制器) , 捌o n ) 、 i r 删m 油m ,_ _ 。+ 、 ( 模型) 旧 卜一擞 l丫圳o n 、啼 h v a b e a n i 、 e b ( 视图)l ,一、 ,一。 j s p ( a c t i o ny 、 图3 2 s 订n 拇实现的m v c 框架 下面我们具体研究s t n l t s 框架是如何实现m v c 模式的: 1 视图 m v c 模式中的视图部分在s t r i i t s 中是由j s p 和a c t i o n f o 咖b e 越实现的。在 这些j s p 文件中没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标 准的j s p 标签或客户化标签,包括s t n i l s 标签库中的标签。a c t i 衄f o n nb c 如也是 一种j a v a b c 蛆,除了具有一些j a v a b 啪的常规方法,还包括一些特殊的方法,用 于验证h m 吨表单数据及将其属性重新设置为默认值。s t r u t s 框架利用a d i o n f o 瑚 b c 姐来进行视图和控制器之间表单数据的传递,如图3 3 ,s t r i l t s 框架把用户输入 的表单数据保存在觚i o n f 0 瑚b c 粕中,把它传递给控制器,控制器可以对这些数 a c t b | i 】硒b e a n ( 包含用户输入数据) i i i 视图组件 i 7 视图组件 ii j 。包燃赫据,: 图3 3 a c d 吼mb e 卸在鼬m t s 中的作用 据进行修改,j s p 文件读取控制器处理后的a c 【i o n f o 皿b 啪信息,重新设置h 聊l 1 2 基于m v c 模式的j a v a w 曲框架研究与应用 表单。 2 模型 模型表示应用程序的状态和业务逻辑。s t n l t s 框架并没有为设计和创建模型组 件提供现成的框架。但是,s t n i t s 允许使用其它模型框架来处理应用的业务逻辑。 如e j b 和j d o ,以及常规的j a v a b c 孤和o r m ( o b j c c t r e l a t i o nm a p p i n g ) 软件。 3 控制器 控制器部分由s 虹t l t s 的a c t i o n s e r v i e t 类和触i 类来实现。a d 如l n s e r v l e t 类是 s t n l t s 框架的核心组件。a c t i 曲s c l e t 继承了j a v 勰s e 1 e t h t i p h t t p s e l e t 类。它在 m v c 模型中扮演中央控制器的角色。a d i o n s e l e t 主要负责接收h n 甲请求信息, 根据配置文件s t r u t s - c o n f i g x m l 的配置信息,把请求转发给适当的a d j o n 对象。如 果该a c t i 衄对象不存在,a c t i s e r v l e t 会先创建这个a c t i 衄对象。 a 碰i 吼类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流 程。对于小型简单的应用,a c i i 咖类本身也可以完成一些实际的业务逻辑。当然 这样做是不被推荐的。 对于大型应用,a c l i 充当用户请求和业务逻辑处理之间的适配器,其功能 就是将请求与业务逻辑分开,a c t i o n 根据用户请求调用相关的业务逻辑组件。 a c t i o n 类侧重于控带0 应用程序的流程,而不是实现应用程序的逻辑。在a c t i o 中 剥离业务逻辑,可以提高应用程序的灵活性和可重用性。 当a c l i s e f v l e t 控制器收到用户请求后,把请求转发到一个a c i i 实例。然 后调用这个实例的娌嘲t e o 方法。觚i 蚰的e x e c i l t e ( ) 方法返回a d i o 棚a r d 对象, 它封装了把用户请求再转发给其他w 曲组件的信息。 3 2s 虮l t s 的组件分析 3 2 1s t m t s 控制器组件 如上所示,s t m t s 控制器组件负责接收用户请求、更新模型以及选择合适的视 图组件返回给用户。控制器组件有助于将模型层和视图层分离,有了这种分离, 就可以在同一个模型的基础上开发各种类型的视图。降低视图组件之间及视图组 件与模型组件之间的相互依赖关系,提高每个组件的相互独立性。s t n l t s 的控制器 组件主要完成以下任务: 1 接收用户请求。 2 根据用户请求,调用合适的模型组件来执行相应的业务逻辑。 3 获取业务逻辑执行结果。 4 根据当前状态以及业务逻辑执行结果,选择合适的视图组件返回给用户。 t s 控制器组件包括以下内容: 第三章s 仃l l 协框架研究 1 3 a c t i s e r v l e t 组件:s t n l t s 的中央控制器。 r e q u e s t p r o c e s s o r 组件;s t r u t s 每个子应用模块的请求处理器。 a c t i o n 组件:负责处理一项具体的业务。 s t n l t s 框架采用a d i s e r v l e t 和r e q u 髓t p f c c e s s o r 组件进行集中控制,并采用 a c t i o n 组件来处理单项业务。下面对控制器组件进行更深入的探讨: 3 2 1 1a c t i o n s e n ,1 e t 类 o r g a p a c h c s t m t s a d i k i i 叽s e r v l e t 类是s t r t l t s 框架的核心控制器组件,所有 的用户请求都先由a c t i 锄s e r v l e t 来处理,然后再由a c t i 彻s e l e t 把请求转发给其 它组件。l t s 框架只允许在一个应用中配置一个a c t i 伽s e r v l e t 类,在应用的生命 周期内,仅创建a c t i o n s e l e t 一个实例,这个a d i 佃s e r v l c t 实例可以同时响应多 个用户请求。 1 s t 加t s 框架初始化过程 s c r v l e t 容器启动时,或者用户首次请求a c t j o n s e r v l e t 时加载a c t i o n s e l e t 类。 在这种情况下,s e r v l c t 容器都会在a c i i o n s c r v l c t 被加载后立即执行它的i n i t ( ) 方 法,这可以保证当a d i s c r v l e t 处理用户请求时已经被初始化。下面是 觚i o s c “l e t 的i n “( ) 方法完成的初始化流程。 ( 1 ) 调用i n i t i n t 啪a 1 ( ) 方法,初始化s t n l t s 框架内在的消息资源,如与系 统日志相关的通知、警告和错误信息。 ( 2 ) 调用i n i t 0 7 i h e r ( ) 方法,从w e b x m l 文件中加载a c t i 曲s e r v l c t 的初始化 参数,如咖丘g 参数。 ( 3 ) 调用i n i t s c r v l e t ( ) 方法,从w c b x “文件中加载a c t i s e r v l e t 的也 映射信息。此外还会注册r c b x m l 和s 咖t s 配置文件所使用的m d 文件,这些瑚m 文件用于验证啪b 。x m l 和s t r u t s 配置文件的语法。 ( 4 ) 调用j n i t i o d i l l c c 0 曲g ( ) 方法,加载并解析默认子应用模块的s t n l t s 配置文件;创建m o d _ u l c c c m f i g 对象,把它存储在s e l e t c o n t c x t 中。 ( 5 ) 调用i n i t m o d l l l c m e 跚g e r e 跗u r c c s ( ) 方法,加载并初始化默认子应用模 块的消息资源;创建m e s s a 萨r e s o u r o 胬对象,把它存储在s e n ,l c t c o n t t 中。 ( 6 ) 调用i i l i t m o d u l c d m l s o u i c e ( ) 方法,加载并初始化默认子应用模块的数 据源。如果在s t n l t s 配置文件中没有定义 元素,就忽略这一流程。 ( 7 ) 调用i 血m o d u l e p l u g i n s ( ) 方法,加载并初始化默认子应用模块的所有 插件。 ( 8 ) 当默认子应用模块被成功初始化后,如果还包括其它予应用模块,将重 复流程( 4 ) ( 7 ) ,分别对其它子应用模块进行初始化。 1 4 基于m v c 模式的j a v a w 曲框架研究与应用 图3 4 为a c t i o n s e r v l e t 类的i i t ( ) 方法时序图。 图3 4 a c 吐0 n s e r v k t 类初始化时序图 2 a c t i s c r v l c t 的p m s s ( ) 方法 当a c t i s e r v l c t 实例接收到 r 兀甲请求后,在d o g c 蕾0 或d o p t o 方法中都会 调用p m s s o 方法来处理请求。以下是a c t i o n s e r v l e t 的p r o c e s s o 方法的源代码: p r o t c c t c dv o i dp i o o 幅s ( 】瞰t l 迟c r v l e 报c q u e s tr e q u e s t ,h t i p s c r v l c t r e s p s ef 髂p o n s e ) n 坩稍i o e x c c p t 玉嘶,s e n r l c t l 泌c e p t i 佃 删l l l c u t i l s g e t k t a n c c o 崩e d m 0 d u l e 舔t ,鲥s c n ,l e t c 蚴t e x t o ) ; 舻t r e q u c s t 孙磁渤一g c t m o d m e 叫i g ( 糟q u 髂t ) ) 辨噼q u c s t ,嘲p 咂哟; ) 在p m c c s s 0 方法中, 首先调用。略a p a c h c s 咖馘u t i l m 0 d u l e u t i l s 类的 s c l e c t m o h d u l c 0 方法,这个方法选择负责处理当前请求的子应用模块然后把与子 应用模块相关的m o d u l b n 埏和m 鹊s a g c r e u r c 对象存储在r e q u t 范围内,这 使得框架的其余组件可以方便地从r e q u 锚t 范围中读取这些对象,从而获取应用配 置信息和消息资源。 p r o 船o 方法的第二步操作为获得r e q u e s t p 】f o c c s s o r 类的实例,然后调用 r e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论