已阅读5页,还剩71页未读, 继续免费阅读
(计算机软件与理论专业论文)基于mvc的struts框架在web中的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于m v c 的s t r u t s 框架在w e b 中的研究与实现 作者简介:张翼,男,1 9 7 6 年7 月出生,2 0 0 4 年9 月师从于成都理工大学揭金良 教授,于2 0 0 7 年5 月获硕士学位。 摘要 随着w e b 技术的广泛应用,许多企业都迫切要求快速,高效地构建自己 的w e b 业务系统。企业版( j 2 e e ) 是s u n 提供的一个标准的企业应用开发平 台,它为我们开发企业w e b 应用提供了丰富的技术选择。然而,一个高质量 的应用有赖于设计良好的体系架构的支持。如何正确应用j 2 e e 核心技术来设计 和构建一个强健的,具有伸缩性的、可重用的w e b 应用体系架构是我们所面 临的挑战。 m v c 模式是软件工程学中一个非常蘑要的设计模式,为交互式系统提供了 一个非常优秀的开发模型。m v c 模式强制性的把软件分离,使系统开发变得非 常灵活,同时又提高了系统设计的可重用性。正是m v c 模式在交互系统开发 所体现的强大优势,被开发人员逐步引入j 2 e e 体系之中,成为j 2 e e 进行交互 式应用开发时,特别是w e b 应用开发时一个非常重要的设计模式。 基于上述理论,本文重点讨论了基于m v c 模式的s t r u t s 框架,并通过引入 a i a ) ( 技术对s t r u t s 框架进行改迸。最后结合一个基于s t r u t s 框架的集成医院信 息管理系统,对s t r u t s 框架的实际应用进行了分析。 关键词:j 2 e e :m v cs t r u t s , a j a x 成都理工人学硕士学位论文 t h er e s e a r c ha n d i m p l e m e n t a t i o no fs t r u t s f r a m e w o r kb a s e do nm v cm o d e li nw e b a p p l i c a t i o n a b s t r c t w i t ht h ew i d ea p p l i c a t i o no fw e bt e c h n o l o g y ,m a n ye n t e r p r i s e s u r g e n t l y r e q u i r et ob u i l dt h e i ro w nw e bb u s i n e s ss y s t e mq u i c k l ya n de f f i c i e n t l y e n t e r p r i s e e d i t i o n ( j 2 e e ) i sas t a n d a r dd e v e l o p m e n tp l a t f o r mi ne n t e r p r i s ea p p l i c a t i o n i t i sf o ru st o d e v e l o pe n t e r p r i s ew e ba p p l i c a t i o n sw i t ha b u n d a n tt e c h n o l o g i c a l c h o i c e s h o w e v e r ,ah i g hq u a l i t ys y s t e md e p e n d so nt h es u p p o r to f aw e l l - d e s i g n e d s t r u c t u r e h o wt oc o r r e c t l yu s ec o r ej 2 e et e c h n o l o g i e st od e s i g na n db u i l da s t r o n g ,f l e x i b l e ,a n dr e u s a b l ew e bf r a m e w o r ki st h ec h a l l e n g ew eh a v et of a c e m v cp a t t e r ni sav e r yi m p o r t a n ts o f t w a r e e n g i n e e r i n gd e s i g np a t t e m i t p r o v i d e sav e r ye x c e l l e n td e v e l o p m e n tm o d e f o rt h ei n t e r a c t i v es y s t e m m v c p a t t e r nm a n d a t o r yd e v i d e dt h es y s t e mi n t od i f f e r e n tl a y e r ,w h i c hm a k et h es o f t w a r e d e v e l o p m e n tv e r yf l e x i b l ea n di m p r o v et h es y s t e md e s i g nr e u s a b i l i t y i ti st h eg r e a t a d v a n t a g eo fm v cp a t t e r ni ni n t e r a c t i v es y s t e mt h a ti n t r o d u c e di nj 2 e eb ym a n y p r o g r a m m e r n o w a d a y s ,m v cp a t t e r nh a sb e c o m eav e r yi m p o r t a n ts o f t w a r ep a t t e mi n i n t e r a c t i v ej 2 e e a p p l i c a t i o nd e v e l o p m e n t ,e s p e c i a l l yw h e nw e ba p p l i c a t i o n d e v e l o p m e n t b a s e do nt h ea b o v et h e o r y ,t h i sp a p e rf o c u s e do ns t r u t sf r a m e w o r k b a s e do nm v cp a t t e r na n do p t i m i z e ds t r u t sb yi n t r o d u c t i o no fa j a x f i n a l l y ,a i n t e g r a t e dh o s p i t a li n f o r m a t i o nm a n a g e m e n ts y s t e mb a s e do ns t r u t sf r a m e w o r kw a s p r e s e n t e da n da n a l y z e d k e yw o r d s :j 2 e e , m v c :s t r u t s :a j a x 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写过的研究成果,也不包含为获得盛塑堡至盍堂或其他教 育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何 贡献均已在论文中作了明确的说明并表示谢意。 学位论文作者导师签名: 学位论文作者签名 始良 戮重 z o - 0 7 年岁月王弓日 学位论文版权使用授权书 本学位论文作者完全了解盛壑堡王厶堂有关保留、使用学位论文的规定, 有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和 借阅。本人授权盛塑堡王太堂可以将学位论文的全部或部分内容编入有关数 据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:涨翼 ) 呷年 3 - 月上弓f 1 第1 章绪论 1 1 课题背景 第1 章绪论 近年来,w e b 技术得到了越来越广泛的应用。低成本,简单易用的客户浏 览器能随时随地地连接到企业的服务器。客服端界面操作的一致性,强大的动 态交互功能,使客户与企业保持良好的交互,大大增强了企业与外界的连接。 随着w e b 发展的同时,各种问题也接踵而至。例如缩短开发周期,节约 成本,满足不同用户的需要,增强用户体验,降低项目管理的难度与风险,提 升软件质量,增强软件企业的竞争力。 目前w e b 软件的开发,主要面临以下几个方面的问题: 1 如何降低技术门槛,从而可从有限的人力资源中得到充足的人才。当今 软件技术日新月异,层出不穷,降低软件开发技术的门槛,缩短学习周期,是 企业获得合适人力的保证,也是降低软件成本的一个方法。 2 如何缩短开发周期,以适应市场的需要。软件开发时间过长,势必不 能满足客户的需要,而且会增加软件开发的成本。 3 如何提升软件的可重用性,可移值性。 4 如何增强用户体验,使w e b 程序具有同桌面程序一样的用户体验效果。 j 2 e e 技术的出现,以及基于这种技术的无数框架的出现,可以有效地解决 上述的一些问题。利用j 2 e e 技术与一些现成的框架,可以降低软件开发的难度, 缩短软件开发周期,从而可以节约开发成本,并且可以提升软件开发的可重用 性与可移值性。j 2 e e 也是一项发展中的技术,它不可能解决所有的问题。随着 j 2 e e 以及相关技术的发展,w e b 应用程序的开发也会不断的向着高效率、高 质量、低成本、低风险的目标前进,不断地被企业与用户所接受。 1 2 国内外研究和发展现状 j 2 e e 是s u n 公司推出的一种全新概念的模型,与传统的互联网应用程序模 型相比有着不可比拟的优势。j 2 e e 可以理解为一个企业级的中间件体系或平 台,它把多种分散到网络上的资源和应用连接起来,为构造和管理、运行可伸 缩的企业级业务应用提供了一系列的应用组件和一个运行环境。从物理上看, j 2 e e 环境可分布驻留到一个以上的服务器,单一的业务应用能够以一组分布式 组件的形式部署到网络上的一个或多个服务器。 成都理i :人学硕+ 学位论文 当今许多企业都需要扩展他们的业务范围,降低自身经营成本,缩短他们和 客户之问的响应时间,这就需要存在一种简捷,快速的服务于企业,合作伙伴和雇 员之间。典型的说,提供这些服务的应用软件必须同企业信息系统( e i s ) 相结 合,并提供新的能向更为广阔的用户提供的服务。这些服务要具备以下的特点: 1 高可用性:满足现在的全球商业环境。 2 安全性:保护用户的隐私和企业数据的安全。 3 可依赖性和可扩展性:保证商业交易的正确和迅捷。 通常这些服务是由分布的应用程序组成的,包括前端数据端和后端数据源 以及它们之间的一层或几层,这些中间层提供了把商业功能和数据与e i s 相结 合的功能。这些中间层把客户端从复杂的商业逻辑中分离出来,利用成熟的 i n t e r n e t 技术使用户在管理上所花费的时间最小化。 j 2 e e 正是降低了开发这种中间层服务的成本和复杂程度,因而使得服务可 以被快速的展开,并能够更轻松的面对竞争中的压力【】。j 2 e e 经过多年的实践 证明是一种可以信赖的企业级软件开发技术,受到许多i t 业大厂商的支持,具 有十分广阔的前景。 s t r u t s 框架是基于m v c 模式的一种实现。s t r u t s 最早是作为a p a c h ej a k a r t a 项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高 j a v a s e r v e r p a g e s 、s e r v l c t 、标签以及面向对象的技术水准。丌始的代码琏础从 2 0 0 0 年5 月歼始歼发,直到2 0 0 1 年6 月,l 。0 版本发布。有3 0 多个刀二发者 参与进来,并彳f 数千人参与到讨论组中。s t r u t s 忙5 璃6 h :由一个志愿的 c o m m n i t t e r 圳队来管理。到2 0 0 2 年,s t r u t sd , f l l 建有9 个志愿c o m m n i t t e r l 2 i 。 如今在基于w e b 的应用中,s t r u t s 框架得到越来越广泛的应用。在产业方 面,不少软件公司在j b u i l d e r 、w s a d 、e c l i p s e 等开发工具上使用s t r u t s 框架。 1 3 主要研究内容和创新点 本文详述了j 2 e e 系统结构,软件设计模式m v c ,基于这种设计模式的框 架一s t r u t s ,并使用a j a x 技术对s t r u t s 框架进行改进。结合一个集成医院信息管 理系统阐述了s t r u t s 在实际项目中的应用,并针对项目中出现的用户等待时问 过长的问题,提出了把a j a x 技术运用到项目中,达到缩短用户等待时间,增强 用户体验的效果。 第2 章j 2 e e 分布式模型 第2 章j 2 e e 分布式模型 2 1j 2 e e 概述 j 2 e e 是s u n 公司推出的一种全新概念的模型_ j a v a 2p l a t f o r m ,e n t e r p r i s e e d i t i o n ( j 2 e e ) 。j 2 e e 平台提供了一个多层结构的分布式应用程序模型,该模 型具有重用组件的能力、基于扩展标语语言( x m l ) 的数据交换、统一的安全 模式和灵活的事务控制;使开发者不仅可以比以前更快地发现对市场的新的解 决方案,而且其独立于平台、基于组件的j 2 e e 解决方案不再受任何提供商的产 品和应用程序编程界面的限制。提供商和买主都可以选择最合适于其商业应用 和技术的产品和组俐3 1 。 应该明确,j 2 e e 是一个标准,而不是一个产品。j 2 e e 是j a v a2p l a t f o r m e n t e r p r i s ee d i t i o n 的简称,意为j a v a2 平台企业版,是一个套件。j 2 e e 是一种 利用j a v a 2 平台来简化诸多与多级企业解决方案的开发、部署和管理相关的复 杂问题的体系结构【4 】。 j 2 e e 平台由一整套服务( s e r v i c e s ) 、应用程序接口( a p i s ) 和协议构成, 它对开发w e b 的多层应用提供了功能支持。j 2 e e 的核心技术主要包括 j d b c ,j n d i 。e j b 。r m i ,j s p , s e r v l e t s ,x m l ,j m s ,j a v a i d l ,j t s ,j t a ,j a v a m a i l 和j a f 2 2j 2 e e 框架 最初,企业w e b 应用一般是采用c s ( 客户n 务器) 结构来实现。图2 1 表示的就是一个典型的两层体系。在这种结构下,服务器往往只提供一种服务, 即数据库服务;数据访问、业务逻辑、结果显示均由客户端负责。在这种结构 下,w e b 应用很难升级或者扩展,业务逻辑与页面显示在一起,不便于软件的 扩展与维护。 客户端 业务逻辑 数据访问 结果显示 图2 - 1c s 两层体系 成都理r = 大学硕十学何论文 为了解决两层体系的不足,中间层出现在客户端和后端数据源之自j ,这些 中间层提供了把商业功能和数据与e i s 相结合的功能,把客户端从复杂的业务逻 辑中分离出来。而正是j 2 e e 降低了开发这种中问层服务的成本和复杂程度,使 得服务可以被快速展开。 j 2 e e 平台使用了一个多层的分布式应用程序模型。应用程序的逻辑根据其 实现的不同功能被封装到组件中,组成j 2 e e 应用程序的大量应用程序组件根据 其所属的层被安装到不同的机器中。图2 2 描述了一个分布式j 2 e e 应用程序, 它可以分为如下四层: 客户层 w e b 应用层商务逻辑层企业信息系统层 客户端w e b 服务器 e j b 容器 p u r e l 脚1 、 h t m l 1l r 冈 、- 一一 j a v a 数据库 a p p l e t同 a p p l i c a t i o n s e r v l e t c l i e n t ) 图2 - 2j 2 e e 体系结构 客户层:运行在客户端的客户端组件 w e b 应用层:运行在w e b 应用服务器上的w e b 组件 商务逻辑层:运行在e j b 服务器上的实现企业业务逻辑的e j b 组件 企业信息系统层:数据库服务器 其各层的作用分别如下: 客户层:客户端既可以是一个w e b 客户端,也可以是一个应用程序客户端。 包括纯h t m l 页面,内嵌于w e b 浏览器的a p p l e t ,或者是桌面应用程序。这一层 的作用就是把应用程序最终的结果显示给用户。 w e b 应用层:w e b 组件主要包括j s p 和s e r v l e t 。它们是w e b 服务器的功能 扩展,都能生成动态w e b 页面。不同的是j s p 是将j a v a 代码嵌入到h t m l 中, 服务器负责解释执行,生成结果返回用户。而s e r v l e t 是单独的i a v a 类,它动态 生成h t m l 文件返回给客户。 4 第2 章j 2 e e 分布式模型 业务逻辑组件:在这罩业务逻辑组件主要由e j b 组成。一个e j b 可以从客 户端接受数据,对它进行处理,并将其发送到企业信息系统层以作存储;同时 它也可以从存储器获取数据,处理后将其发送到客户端应用程序。 企业信息系统层:企业信息系统层处理企业信息系统软件并包含诸如企业 资源计划( e r p ) 、主机事务处理、数据库系统和其它传统系统这样的底层系统。 j 2 e e 应用程序组件可能需要访问企业信息系统,例如当它希望获得一个数据库 连接时。 2 3j 2 e e 几种主要核心技术 j 2 e e 是一套技术规范的总和,其核心技术主要包括:目录服务、数据访问、 事务处理、消息服务、电子邮件,安全服务、远程方法调用、e j b 、j s p 、s e r v l e t 等1 5 】。下面介绍几种j 2 e e 常用的核心技术。 1 j a v a 数据库连接( j d b c ) j d b c a p i 以一个统一的方式访问各种数据库。与o d b c 类似,j d b c 开发 者和私有数据库之间总是隔离开来。由于建立在j a v a 上,j d b c 还可以提供平 台无关的数据库访问。j d b c 定义了四种不同的驱动,具体说来,包括有: ( 1 ) j d b c o d b c 桥:在这种方式下,是一个本地解决方案,因为o d b c 驱动程序和桥代码必须出现在用户的每台机器中。从根本上说这是一个临时解 决方案。 ( 2 ) 本机代码和j a v a 驱动程序:它用另一个本地解决方案( 该平台的j a v a 可调用的本机代码) 取代o d b c 和j d b c o d b c 桥。驱动程序的源代码由两部 分组成:一部分是j a v a 语言代码,另一部分是本地代码。这类驱动程序和一个 数据库客户的a p i 通信。当你使用这类驱动程序时,除了j a v a 库外还必须安装 能在指定平台上运行的代码。 ( 3 ) j d b c 网络纯j a v a 驱动程序:驱动程序是一个纯j a v a 库,它直接把 j d b c 请求转换成指定数据库协议接收的请求。这种网络服务器中间件能够将 它的纯j a v a 客户机连接到多种不同的数据库上。所用的具体协议取决于提供者。 通常,这是最为灵活的j d b c 驱动程序。有可能所有这种解决方案的提供者都 提供适合于i n t r a n e t 用的产品。为了使这些产品也支持i n t e m e t 访问,它们必须 处理w e b 所提出的安全性、通过防火墙的访问等方面的额外要求。 ( 4 ) 本机协议纯j a v a 驱动程序:j d b c 驱动程序是直接面向数据库的纯j a v a 驱动程序,即所谓的“瘦”( t h i n ) 驱动程序,它把j d b c 调用转换成某种直接可 被d b m s 使用的网络协议,这样,客户机和应用服务器可以直接调用d b m s 服务器。对于第四类驱动程序。不同d b m s 的驱动程序不同。因此,在一个异 成都理i :人学硕十学位论文 构计算环境中,驱动程序的数量可能会比较多。但是,由于这类驱动程序具有 较高的性能,能够直接访问d b m s ,所以这一问题就不那么突出了。 2 j a v an a m i n ga n dd i r e c t o r yi n t e r f a c e ( j n d i ) j n d i 是一些标准的应用j a v a 技术的a p i 接口,这些接口为j a v a 应用程序 提供命名目录服务。j n d i 是特别为用j a v a 对象模型的j a v a 平台设计的一种技 术。通过j n d i 提供的服务,基于j a v a 技术的应用可以存取任何类型的j a v a 对 象。此外,j n d i 为目录操作提供了一些方法,例如与对象相关的属性以通过属 性查寻对象。 因为j n d i 不依赖于任何特定的执行,应用程序可以使用j n d i 访问各种命 名目录服务,包括现有的诸如l d a p 、n d s 、d n s 、n i s 、c o s 命名和r m i 注 册等服务。这使得j 2 e e 应用程序可以和传统的应用程序和系统共存。 j n d i 结构包括两组a p hj n d i a p i 和j n d is p i ( s e r v i c e p r o v i d e r i n t e r f a c e ) 。 j a v a 应用程序通过j n d i a p i 访问各种命名目录服务。j n d is p i 使得各种命名目 录服务透明地加入到j n d i 结构中,从而使j a v a 应用程序能够通过j n d ia p i 访 问这些服务1 6 j 。 j n d i 命名体系的基本概念包括: ( 1 ) n a m i n g :n a m i n g 在电脑系统上是最基本的服务之一,主要是名称 ( n a m e s ) 与对象( o b j e c t s ) 的单一关联( b i n d i n g ) ,这样使用者可以通过描述 环境( c o n t e x t ) 来存取欲使用的对象。 ( 2 ) d i r e c t o r y td i r e c t o r y 是对n a m i n g 的扩充,让对象拥有属性以记录额 外的信息。我们可以通过名称来查看( l o o k u p ) 对象并获得该对象的属性信息, 或是利用属性作为搜寻的过滤条件( s e a r c hf i l t e r ) 。 ( 3 ) 命名服务( n a m i n gs e r v i c e ) :命名服务是将名字和计算机中的一个对 象相关联,通过名字可以方便地找到对应的对象。例如,计算机中的文件系统 就包含了一个命名服务,通过文件名就可找到对应的文件对象。 ( 4 ) 目录服务( d i r e c t o r ys e r v i c e ) :目录服务是命名服务的延伸,目录服 务不只保存对象和对象名的匹配,而且保存这个对象的各种属性,可以对这些 属性进行查询、修改、增加、删除操作。 在j n d i 中,一个目录结构中的每一个节点被称为c o n t e x t ,每一个j n d i 的 名字都是与一个c o n t e x t 相对的。一个应用可以使用i n i t i a l c o n t e x t 类得到它的第 一个c o n t e x t ,通过这个初始的c o n t e x t , 应用可以经过目录树定位到需要的资源或 者对象。除了检索对资源对象的应用外,j n d i 还可以提供方法做到: ( 1 ) 插入或者绑定一个对象到一个c o n t e x t 中 ( 2 ) 从一个c o n t e x t 中移去一个对象 6 第2 章j 2 e e 分布式模型 ( 3 ) 列出一个c o n t e x t 中的所有对象 ( 4 ) 创建和删除s u b c o n t e x t s 3 j s p j s p 是j a v a s e r v e r p a g e s 的简写。j s p 技术能让w e b 开发员和网页设计员快 速地开发容易维护的动态w e b 主页【8 】。j s p 是由s e r v l e t 发展而来的,它将j a v a 代码嵌入到h l m l 或者x m l 文档中。j s p 提供了许多标记符,保持了j s p 的 简洁性和业务逻辑代码的隐弊性,将页面显示与应用程序逻辑分离。 4 s e r v l e t s e r v l e t 是使用j a v as e r v l e t 应用程序设计接口及相关类和方法的j a v a 程序。 它在w e b 服务器上或应用服务器上运行并扩展了该服务器的能力。j a v as e r v l e t 对于w e b 服务器就好像j a v aa p p l e t 对于w e b 浏览器。a p p l e t 装入w e b 浏览器 并在w e b 浏览器内执行,而s e r v l e t 则是装入w e b 服务器并在w e b 服务器内执 行。j a v as e r v l e ta p i 定义了s e r v l e t 和服务器之间的一个标准接口,这使得 s e r v l e t 具有跨服务器平台的特性。 s e r v l e t 通过创建一个框架扩展服务器的能力,采用请求响应模式提供w 曲 服务。当客户机发送请求至服务器时,服务器将请求信息发送给s e r v l e t ,s e r v l e t 生成响应内容并将其传给服务器,然后再由s e r v e r 将响应返回给客户端1 9 1 。 5 e j b 在j 2 e e 规范将企业应用系统划分的各逻辑层中,将封装商务规则的e j b 组件部署在业务层中,用于根据客户端的服务请求进行业务数据的处理。e j b 组件是基于分布式事务处理的企业级应用程序组件,其中包含处理业务数据的 应用逻辑以及客户端调用e j b 组件的商务方法获取服务的客户端接口。当一个 遵循e j b 规范开发的第三方e j b 组件被集成到一个应用系统中时,不需要更改 其实现代码或者重新编译1 1 0 1 。 e j b 2 0 规范中定义了三种类型的b e a n :会话b e a n ( s e s s i o nb e a n ) 、实体 b e a n ( e n t i t yb e a n ) 和消息驱动b e a n ( m e s s a g e - d r i v e nb e a n ) 。会话b e a n 和实 体b e a n 由h o m e 接口、r e m o t e 接口和组件类构成,消息驱动b e a n 则只由组件类 构成。在e j b 组件的h o m e 接口中定义了创建、删除和定位e j b 组件的方法, e j b 组件的r e m o t e 接口用于定义组件能够提供的商务方法,e j b 组件类则用于 实现h o m e 接口中定义的组件生命期方法,以及r e m o t e 接口中定义的商务方法 【刀。 2 4 小结 建立在j a v a 语言基础上的j 2 e e 平台是一个非常适用于企业级分布式环境 的应用结构,它将企业级应用程序的开发、部署和管理完美地集成在一起,提 7 成都理i :人学硕十学位论文 供了一个功能完善的平台。 j 2 e e 的体系结构可以分为四层,即客户层、w e b 层、业务层和企业信息系 统层。不同的层包含了不同的组件,例如e j b 、j s p 、s e r v l e t 。这些组件正是j 2 e e 的核心所在。组件的使用简化了企业级应用程序的开发过程,有利于软件的升 级与维护,且降低了开发多层应用的费用和复杂性。 j 2 e e 包含了多种核心技术,它们共同搭建起了j a v a 企业应用的坚实平台。 第3 章基y - m v c 的w e b 框架 第3 章基于m v c 的w e b 框架 3 1m v c 设计模式 在以前的w e b 编程中,大部分w e b 程序都是用像a s e p h p 这样的过程化 语言来创建的。软件的逻辑代码,h t m l 代码,甚至像数据库存查询语句这样 的代码混在一起。经验丰富的开发者会将这些不同层的代码分离开来,但这通 常不是很容易做到的,它需要精心的计划和不断的尝试。m v c 设计模式则强制 性的把它们分开。尽管构造m v c 应用程序会做一些额外的工作,但它带给我 们的好处是无庸质疑的。它允许我们建立一个三层结构的应用程式,各层之间 相互独立,这样就有利于软件的扩展与维护,而且可以提高软件的开发周期。 m v c 是m o d e l v i e w - c o n t r o l l e r 的简称,即模型视图控制器。m o d e l 层实 现系统中的业务逻辑,通常可以用j a v a b e a n 或e j b 来实现。v i e w 层用于与用 户的交互,通常用j s p 来实现。c o n t r o l l e r 层是m o d e l 与v i e w 之间沟通的桥梁, 它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户 的输入并将它们映射为模型层可执行的操作【l ”。图3 - 1 显示了这几个模块各自 的功能以及它们的相互关系。 选择视图l 控制器l 业务处理 l 接受用户请求l 墨嚣荔詈兰案蛊主雾羹广l 选择视图显示响麻结果li ( 视图) 显示模型状态 接受数据更新请求 把用户输入数据传 给控制器 用户请求 状态查询 通知数据更新 ( 模型) 代表虑用程序状态 响应状态查询 处理业务流程 通知视图业务状态更新 + 方法调用 - 事件 图3 - 1w c 流程图 1 视图:视图是用户看到并与之交互的界面。视图组件把表示模型数据 及逻辑关系和状态的信息以特定形式展示给用户。它从模型获得显示信息,对 9 成都理i :人学硕十学竹论文 于相同的信息可以有多个不同的显示形式。 2 控制器:控制器组件是处理用户与软件的交互操作的,其职责是控制提 供模型中任何变化的传播,确保用户界面于模型间的对应联系。它接受用户的 输入,将输入反馈给模型,进而实现对模型的计算控制,是使模型和视图协调 工作的组件。 3 模型:模型是应用程序的主要部分。模型表示业务数据和业务逻辑。模 型部件保存由视图显示,由控制器控制的数据;它封装了问题的核心数据、逻 辑和功能的计算关系,它独立于具体的界面表达和i o 操作。 4 m v c 处理过程:m v c 的处理过程是,首先控制器接收用户的请求,并 决定应该调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻 辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据, 并通过视图呈现给用户。 5 m v c 的适用范围:m v c 的内部原理比较复杂,所以要花费一些时间去 理解它。将m v c 应用到软件项目中,会带来额外的工作量,增加应用的复杂 性,所以m v c 不适用于小型应用系统。 但对于丌发存在大量用户界面,并且业务逻辑复杂的大型应用程序,m v c 将会使软件在健壮性、代码重用和结构方面上一个新的台阶。尽管在最初构建 m v c 框架时会花费一定的工作量,但从长远的角度来看,它会大大提高软件的 开发效率。 3 2m v c 在w e b 中的应用 在早期的w e b 应用开发中,程序代码和h t m l 混在一起,因而很难分离出 单独的业务模型。这使得维护应用程序非常困难,很难满足用户的变化性需求。 在这种开发模式下,j s p 文件既要负责业务逻辑,又要控制网页流程以及页面 显示。这会给应用程序的开发带来一系列的问题,主要表现在以下几个方面: 1 软件设计与维护困难:h t m l 代码和j a v a 代码混合在一起,j s p 文件 的编写者既要负责网页的设计,又要负责业务逻辑的实现。但实际情况是既熟 悉网页设计,又熟悉j a v a 开发的人不多,这就造成了软件开发的分工不明确, 不利于软件的设计和维护。 2 调试困难:由于h t m l 标记、j a v a 代码和j a v a s c r i p t 代码都集中在一 个文件,使应用程序的调试变得非常困难。 为了解决以上的问题,s u n 公司先后推出了两种技术规范,这两种规范分 别是j s pm o d e l l 和j s pm o d e l 2 。这两种规范都使得页面的显示与应用的业务逻 辑分开,在一定程度上解决了软件设计,维护以及调试困难的问题。j s p m o d e l l 1 0 第3 章基y - m v c 的w e b 框架 规范如图3 - 2 所示: w e b 服务器 ,1 z 用 7 l j s p服 务 浏 i 器 览 j a v a b e a n i 、詈 器 1 1 、一一数 据 库 图3 - 2d s pm o d e l l 体系结构 在j s p m o d e l l 体系中,用户通过浏览器向j s p 发送请求,j s p 负责业务流 程控制和提供表示层数据,同时充当视图和控制器。j a v a b e a n 负责实现业务逻 辑。在m o d e l l 中,未能实现视图与控制器之间的独立和分离,因此这种模式不 适合开发复杂的大型应用程序。不加选择地随意运用m o d e l l ,会导致j s p 页内 嵌入大量的j a v a 代码。这对j a v a 程序员来说或许不算什么大问题,但对网页设 计人员来说要维护这些j a v a 代码,确是一个问题。从根本上讲,会导致角色定 义不清或者职责分配不明,给项目管理带来很多麻烦。 j s p m o d e l 2 体系结构( 如图3 3 所示) 引入了s e r v l e t ,用它来充当控制器的 角色,负责处理用户请求,创建j s p 需要使用的j a v a b e a n 对象,根据用户请求 选择合适的j s p 页返回给用户。在m o d e l 2 体系中,j s p 只充当视图的角色,它 没有处理逻辑,仅负责生成表示层的内容,检索原先由s e r v l e t 创建的j a v a b e a n 对象,从s e r v l e t 中提取动态内容插入到静态模板。因此m o d e l 2 体系结构清晰 地分离了表达与内容,明确了角色定义以及开发者与网页设计者的分工。事实 上,项目越复杂,使用m o d e l 2 设计模式的好处就越大。 成都理i :人学硕十学位论文 图3 - 3j s p m o d e l2 体系结构 3 3m v c 的优点 m v c 设计模式主要有以下优点: 1 提高了代码的可重用性。在m v c 中,多个视图能共享一个模型。模型 响应用户请求并返回响应数据,视图负责格式化数据并把它们呈现给用户,业 务逻辑和表示层分离,同一个模型可以被不同的视图重用,所以大大提高了代 码的可重用性。 2 m v c 三个模块相互独立,改变其中一个不会影响其它两个。这样当数 据或者业务逻辑需要改变时,可以方便地改变应用程序的数据层和业务规则, 视图都会正确地显示它们。 3 控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接不同 的模型和视图去完成用户的需求,也可以为构造应用程序提供强有力的手段。 给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模型进 行处理,然后选择适当的视图将处理结果显示给用户。 3 4 小结 本章介绍了m v c 设计模式的结构,在w e b 中的应用以及优点。m v c 设计 模式强制性的把应用程序分成三个核心模块:模型、视图、控制器,提高了程 序设计的可重用性与可扩展性。基于m v c 设计模式,s u n 公司先后提出了在 j a v aw e b 开发领域的两种规范:j s p m o d e l l 和j s p m o d e l 2 。 1 2 第4 章基丁:m v c 的s t r u t s 框架的研究 第4 章基于m v c 的s t r u t s 框架的研究 4 1s t r u t s 的基本概念 m v c 只是一种理论,s t r u t s 则是这种理论的一种具体实现。当建筑师开始 一个建筑设计的时候,总是要先设计建筑的总体框架。而在设计软件时,我们 也需要这么一种框架。这样我们在设计软件时,不必从头开始,可以在现有的 框架之上搭建软件,大大提高了软件设计的效率,并且有利于软件的维护。 s t r u t s 最早是作为a p a c h ej a k a r t a 项习的组成部分,项目的创立者希塑通过 对该项铒的研究,改进嚣j 提离j a v a s e r v e rp a g e s 、s e r v l e t 、标签库以及面向对象 的技术水准。s t r u t s 这个名字来源_ 于在建筑和旧式毪机中使用的支挣盒稻架。这 个框架之所以叫”s t r u t s ”,是为了提醒我们记住那些支撑我们房屋,建筑,轿梁, 甚至我们踩商跷时候的基础支撑【1 2 j 。 4 2s t r u t s 实现m v c 的机制 s t r u t s 实质上是在j s pm o d e l 2 的基础上实现的一个m v c 框架。在s t r u t s 框架中,控制器由a c t i o n s e r v l e t 和一组a c t i o n 以及s t u r t s e o n f i g x m l 配置文件 实现,模型由j a v a b e a n 或者e j b 组成,视图由j s p 文件实现。s t r u t s 实现的 m v c 如图4 1 所示。 q e t y l e r ,i r p2 擎2 s n l i t s c o n f l g x m l ,。、 f父州o n ?k 厂叫a c t i n n s e r v l e tr 。,、 j a v a b e a n l 浏览器卜+ w e b 服务器 。 iu 硎佣夕 e ,b 上 一夕 l 叫 j 。s p 厂删册x 一 图4 - 1s t r u t s 实现的m v c 成都理l :人学硕十学僚论文 1 控制器:控制器是s t r u t s 的核心组件,主要包括a c t i o n s e r v l e t 、a c t i o n 以及s t r u t s c o n f i g x m l 文件。a c t i o n s e r v l e t 继承了j a v a x s e r v l e t h t t p h t q p s e r v l e t 类,主要负责接收客户请求信息,然后根据s t r u t s c o n f i g x m l 文件决定把请求 转发给哪个a c t i o n 。 a c t i o n 一般用于控制程序的流程,并负责调用模型的方法,更新模型的状 态。对于大型的应用,a c t i o n 主要作为用户层与业务逻辑层之间的适配器 ( a d a p t o r ) ,其功能就是把用户请求与业务逻辑分开,a c t i o n 根据用户请求调用 相关的业务逻辑组件。 当a c t i o n s e r v l c t 接收到用户请求后,把请求转发到一个相应的a c t i o n 实例。 如果这个实例不存在,a c t i o n s e r v l e t 会首先创建它,然后调用这个a c t i o n 实例 的e x e c u t e ( ) 方法。a c t i o n 的e x e c u t e ( ) 方法返回a c t i o n f o r w a r d 对象,它封 装了把用户请求再转发给其他w e b 组件的信息。用户定义自己的a c t i o n 类,即 a c t i o n 基类时,必须覆盖e x e c u t e ( ) 方法。在a c t i o n 基类中该方法返回n u l l 。 上面讲到一个用户请求是通过a c t i o n s e r v l e t 来处理和转发的。那么, a c t i o n s e r v l e t 如何决定把用户请求转发给哪个a c t i o n 对象呢? 这就需要一些描 述用户请求路径和a c t i o n 映射关系的配置信息了。在s t r u t s 中,这些配置映射 信息都存储在特定的x m l 文件s t u r t s c o n f i g x m l 中。在该配置文件中,每一 个a c t i o n 的映射信息都通过一个 元素来配置。 2 视图:在s t r u t s 中视图就是一组j s p 文件以及a c t i o n f o r m b e a n ,在j s p 文件中,没有业务逻辑,只有标签,用于把结果呈现给用户。a c t i o n f o r m b e a n 本 质上是一种j a v a b e a n ,它用于在视图与控制器之间传递数据。用户输入的信息 可以保存在a c t i o n f o r m b e a n 中,然后传递给控制器,控制器可以对这些信息进 行修改,修改后的信息再传递给视图组件,重新设置h t m l 表单。如图4 2 所 示。 a c t i o n f o r m b e a n a c t i o n f o r m b e a n ( 控制器修改后数据) 图4 - 2a c tio n f o r m b e a n 的作用 1 4 第4 章基丁m v c 的s t r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职循环农业与再生资源利用(农业废弃物处理)试题及答案
- 2025年高职轨道交通类(轨道维护保养)试题及答案
- 2025年中职护理(静脉输液工具框架工具)试题及答案
- 2025年高职医学检验(检验数据分析)试题及答案
- 2025年中职草业科学(草业科学)试题及答案
- 2025年大学语文(写作应用)试题及答案
- 2025年大学生物(遗传学基础)试题及答案
- 2025年大学大一(家政学)家庭社会学综合测试题及答案
- 2025年大学装饰工程运营应用(应用技术)试题及答案
- 2025年高职第三学年(云平台数据采集)应用技术阶段测试题及答案
- 2025至2030中国立体定向仪行业产业运行态势及投资规划深度研究报告
- 电大专科《公共行政学》简答论述题题库及答案
- 2025成人高考全国统一考试专升本英语试题及答案
- 代办烟花爆竹经营许可证协议合同
- 国企员工总额管理办法
- 企业级AI大模型平台落地框架
- TD/T 1036-2013土地复垦质量控制标准
- 苏教版六年级数学上册全册知识点归纳(全梳理)
- 车位包销合同协议模板
- 病历书写规范版2025
- 中铁物资采购投标
评论
0/150
提交评论