(计算机应用技术专业论文)基于struts框架的j2ee+web应用研究与实现.pdf_第1页
(计算机应用技术专业论文)基于struts框架的j2ee+web应用研究与实现.pdf_第2页
(计算机应用技术专业论文)基于struts框架的j2ee+web应用研究与实现.pdf_第3页
(计算机应用技术专业论文)基于struts框架的j2ee+web应用研究与实现.pdf_第4页
(计算机应用技术专业论文)基于struts框架的j2ee+web应用研究与实现.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(计算机应用技术专业论文)基于struts框架的j2ee+web应用研究与实现.pdf.pdf 免费下载

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

文档简介

西南交通大学硕士研究生学位论文第1 页 摘要 随着网络技术的迅速发展和j 2 e e 平台的广泛应用,基于b s 的 多层w e b 体系结构正在不断的发展完善,并逐渐成为w e b 应用开发 的主流。但是,在现有的w e b 应用系统中,普遍存在着程序可重用 程度低、维护工作繁琐、应变能力薄弱等不足。随着w e b 应用需求 越来越复杂,丌发周期越来越紧迫,对系统的稳定性、扩展性和可 维护性要求越来越高:如何进行合理地分层设计,各层的框架如何 搭建以及如何选择最合理的技术就变得尤为重要。 本文以上述问题作为出发点,通过对j 2 e e 现有技术的分析, m v c 设计模式及s t r u t s 框架的深入学习及研究,并结合笔者的实际 开发项目,着重阐述了如何利用s t r u t s 框架,通过优化w e b 应用程 序丌发框架及合理利用设计模式使得开发出的w e b 系统:层次清晰、 易于系统扩展和维护。 为了达到课题的研究目的,本文主要完成了以下的研究和设计 工作:深入研究了m v c 设计模式的思想和s t r u t s 框架的组成和开发 流程,根据j 2 e ew e b 应用特点,设计了一种基于s t r u t s 框架的分层 开发思想。最后笔者结合实际项目的开发工作为背景,以s t r u t s 框架 和该设计思想为基础,实现了五层b s 架构的综合门户网站。并对 网站各层次的设计和实现进行了详细说明。另外为了优化系统性能, 还对部分j 2 e e 设计模式的使用作了研究与探讨。 关键词:j 2 e e ;m v c ;s t r u t s ;设计模式;框架 西南交通大学硕士研究生学位论文 第li 页 a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fn e t w o r kt e c h n o l o g ya n dt h ew i d e u s eo fj 2 e ep l a t f o r m ,t h em u l t i l a y e rw e bs t r u c t u r eb a s eo nb sh a s d e v e l o p e dg r a d u a l l y ,a n db e c o m et h em a i n s t r e a mo ft h ew e ba p p l i c a t i o n d e v e l o p m e t b u tl o wm a i n t a i n a b i l i t ya n dr e u s a b i l j t y ,a n di n n e x i b j l i t y a r e v e r yc o m m o np h e n o m e n ai n w e ba p p l i c a t i o n s c o n s e q u e n t l y , h i e r a r c h i c a ld e s i g n i n g ,t h ef r a m e w o r ko fe a c hs u b t i e r ,a n ds e l e c t i o no f d e v e l o p m e n tt e c h n o l o g y b e c o m em o r ea n dm o r e i m p o r t a n tw i t h c o m p l e x i t yo fr e q u i r e m e n ta n a l y s i s ,c o n s t r a i n t so fr & d t i m ec y c l e ,a n d r e q u i r e m e n t so fs y s t e ms t a b i l i t y ,e x t e n s i b n i t ya n dm a i n t a i n a b i l i t y t h i st h e s isi sj u s tb a s eo nt h e s eq u es t i o n s ,t h r o u g ha n a l y z i n go f j 2 e ep l a t f o r mt e c h n o l o g y ,t h ed e e ps t u d ya n dr e s e a r c ho ft h em v c p a t t e r na n ds t r u t sf r a m e w o r k ,a n dc o m b i n i n gw i t ht h ea u t h o r sp r a c t i c a l e x p e r i e n c e s ,e x p a t i a t eh o wt ou s es t r u t sf r a m e w o r kt om a k ew e bs y s t e m f r a m e w o r k h i e r a r c h y c i e a r , i m p r o v es y s t e me x p a n s i b i l i t y a n d m a i n t a i n a b i l i t y ,b y o p t i m i z i n gt h ew e bd e v e l o p m e n tf r a m e w o r ka n d u s i n gd e s i g np a t t e r n i no r d e rt oa c h i e v et h er e s e a r c hp u r p o s e ,t h em a i nw o r ko ft h i s t h e s i si s f o l l o w i n g :r e s e a r c ht h et h o u g h to ft h em v cd e s i g np a t t e r n d e e p l y a n d a n a l y z et h es e g m e n ta n dd e v e l o pp r o c e s s o fs t r u t s f r a m e w o r k a c c o r d i n gt os p e c i a l t yo fj 2 e ew e ba p p l i c a t i o n ,d e s i g nt h e t h o u g h to fd e v e l o p i n gb yl a y e r su s i n go ns t r u t sf t a m e w o r k f i n a l l y , c o m b i n i n gw i t ht h ea u t h o r sp r a c t i c a le x p e r i e n c e s ,i m p l e m e n ts c h e m e o ft h ef i v el a y e r sb sf r a m e w o r kb a s eo ns t r u t sf r a m e w o r kw i t ht h a t t h o u g h t ,a n dt h e nm a k e sad i s c u s s i o na b o u te a c ht i e r so fw e b s i t e i n o r d e rt oi m p r o v ee f f i c i e n c y8 n dv a l i d i t yo fp r o g r a m m i n g ,t h et h e s i s a l s om a k e sad i s c u s s i o no fs o m ed e s i g np a t t e r no nj 2 e e k e y 竹o r d s :j 2 e e ;m v c ;s t r u t s ;d e s i g np a t t e r n ;f r a m e w o r k 西南交通大学硕士磅究生学位论文第1 页 1 1 论文背景 第1 章绪论 当前,w c b 技术在i n t e m e t 上得到了广泛的应用,它支持实时的信息发布、 动态的用户交互以及与后台系统灵活安全的连接。因此如何构造功能更加强大、 应用更为灵活、开发更为简单的w e b 应用程序己经成为当前i n t e m e t 技术探讨 的热点,而解决该问题的关键是开发方法和系统架构设计。 目前,面向w 曲的应用程序开发的技术有很多。在客户机方面,浏览器自 身包括了一些能为用户提供更高级功能的程序逻辑,例如j “a s 嘶p t 和 v b s c r i p t ,还有嵌入式的软件组件,如j a v aa p p l e t 、j a v a b e a n 和a 吐i v e x 等; 在服务器端,各种各样的强大的脚本运行环境也开发出来了,如j s p 、s e n ,l e t 、 a s p 、p h p 等,为开发w 曲应用程序提供了坚实的技术基础。总的说来,这些 技术在开发效率、运行速度、分布式事务处理以及自扩展能力等方面各具优势。 s e n r l e t 是基于j a v a 语言的运行在服务器端的程序。它遵循标准的程序接口, 擅长于流程控制和事务处理,而通过s e r v l e t 来生成动态网页很不直观。a s p 、 j s p 、p h p 等技术虽然能够将程序代码内嵌在h t m l 页面中以解决网页设计人 员必须在程序代码中进行页面制作的问题,但由于w 曲应用程序开发中不可避 免地需要进行逻辑判断、数据库操作和事务管理等,并且随着功能的增强,程 序代码会更为复杂。这时,将程序代码内嵌在h t m l 标记中反而会造成程序开 发人员和网页设计人员在开发过程中的沟通困难。 总的说来,目前w 曲应用程序开发的种种弊端主要是由于网页设计和程序 开发相互交互所造成的,因此考虑在开发过程中引入一种合理的、有效的编程 模型,基于这种模型,网页设计人员和程序开发人员在遵循一定的程序接口的 情况下可以进行独立开发和维护,并且保证w 曲应用程序各部分的无缝集成和 整体功能的实现。 另外,当前中小型网站用a s p ,p h p 技术的比较多,因为用这些技术来开 发有速度快,开发周期短,经济上可行等特点,但这些技术都不是面向对象的, 由此出现了许多问题:在运用这些技术开发时更像是在写函数和将这些函数杂 乱地堆积。这样的程序设计,它的耦合程度较高,因此要进行功能修改、扩充 和维护时是非常困难的,而且,增加了维护工作的难度。而j 2 e e 技术( 包括 西南交通大学硕士研究生学位论文第2 页 j s p 、s e r v l e t 、j d b c 、j a v a b e a n 、e j b 等) 基于j a v a 编程语言并且沿袭了j a v a 一贯的平台无关性和分布式处理能力强等优点,而且在w 曲应用程序的开发上 已经形成了标准的体系结构,移植性和兼容性很强,最重要的是。它是完全面 向对象的,运用面向对象程序设计思想来进行设计与编程,将大大改善程序的 可理解性,增强了程序的可维护性,从而能大大弥补前面提到的技术的不足1 1 】。 本文以笔者参与四川联通电子商务二期“天府农业信息网”项目的开发工 作为背景,探讨与w 曲应用开发相关的问题。 1 2 国内外相关领域研究现状 j 2 e e 是一种利用j a v a 2 平台来简化与企业解决方案地开发、部署和管理相 关问题的体系结构,提供了一个企业级的计算模型和运行环境,用于开发和部 署多层体系的应用。j 2 e e 提供的多层分布式应用模型、组件重用、一致化的安 全模型以及灵活的事件控制,加快了应用程序的设计和开发,可以快速、容易 地建立融合i m e m c t 技术尤其是w 曲技术的n 层( n t i e r s ) 结构的分布式企业应 用。基于j 2 e e 技术的b s 结构具有可维护性好、可扩展性好、安全性好等优 点,较好地解决了c s 结构所固有的可维护性差、可扩展性差、安全性差、部 署麻烦等弊端。 目前j 2 e e 被认为是成长最快的技术应用框架,全球8 7 的新应用是由j 2 e e 分布式应用体系支撑的脚。在中国,j 2 e e 也已经被广泛认可,许多都采用了j 2 e e 技术。最近几年,m v c 模式又被引入到s u n 公司的j 2 e e 平台。m v c 模式是 国外应用较多的一种设计模式,它包括三类对象,m o d e l 是应用对象,e w 是 它在屏幕上的表示,c o n 仕o i l e r 定义用户界面对用户输入的响应方式。由这种模 式派生出来的成熟框架很多,目前占主流的是s t m t s 框架,它的版本目前已经 发展到了1 2 版。目前,该框架在国内外许多的大型w 曲应用项目中得到广泛 应用。 1 3 论文项目来源及研究内容 本课题来源于四川联通电子商务二期项目“天府农业信息网”的开发,该 项目是基于j 2 e e 体系结构的综合门户网站。 其主要研究内容有: 1 、对j 2 e e 体系结构、核心技术、j 2 e e 各组件的作用等方面的研究。 西南交通大学硕士研究生学位论文第3 页 2 、对m v c 设计模式和基于该模式思想的s 劬t s 框架进行研究,分析其体 系结构、工作原理、核心组件、配置文件以及对m v c 设计模式的实现。探讨 了本框架在应用开发中分层设计思想。 3 、对“天府农业信息网”项目进行需求分析和功能模块设计。探讨系统实 现的多层体系结构。并分别对w 曲层、业务逻辑层和数据持久层进行了详细设 计,并对其实现进行了描述。 4 、对系统总体性能优化问题进行简单研究和探讨。 西南交通大学硕士研究生学位论文 第4 页 第2 章j 2 e e 相关理论研究 2 1j 2 e e 的体系结构 j 2 e e 平台规范足一个由s u n 公司定义的用于简化分布式企业级应用开发 与部署的基于组件的模式。它提供了一个多层次的分布式应用模型和一系列丌 发技术规范。多层次分布式应用模型足根据功能把应用逻辑分成多个层次,每 个层次支持相应的服务器和组件,组件在分布式服务器的组件容器中运行。如 s e r v l e t 组件在s e r v l e t 容器上运行,e j b 组件在e j b 容器上运行,容器问通过相 关的协议进行通讯,实现组件问的相互调用m 。 2 1 1j 2 e e 的概念 j 2 e e 是一种利用j a v a2 平台来简化企业解决方案的开发、部署和管理相关 的复杂问题的体系结构。j 2 e e 技术的基础就是核心j a v a 平台或j a v a2 平台的 标准版,j 2 e e 不仅保留了标准版中的许多优点,例如“编写一次、随处运行” 的特性,方便存取数据库的j d b ca p i 、c o r b a 技术以及能够在i n t e m e t 应用 中保护数据的安全模式等等,同时还提供了对e j b ( e r n e r 口d s ej a v a b e a n s ) 、 s e r v l e t s 、j s p ( j a v as e r v e rp a g e s ) 以及x m l 技术的全面支持。它能够使企业 开发者大幅度缩短软件投放市场的时间。j 2 e e 体系结构提供中间层集成框架用 来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性应用的需求m 。 通过提供统一的开发平台,j 2 e e 降低了开发多层应用的费用和复杂性,同时提 供对现有应用程序集成强有力支持,完全支持e j b ,能很好地支持打包和部署 应用,添加目录支持,增强了安全机制,提高了软件的性能。 2 1 2j 2 e e 平台的优势 j 2 e e 为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机 制: l 、与现有的企业信息系统集成 企业集成是信息系统成功的关键因素。对于许多企业和机构来说,现有信 企业集成是信息系统成功的关键因素。对丁许多企业和机构来说,现有信 西南交通大学硕士研究生学位论文第7 页 图2 1j 2 e e 四层结构 1 、客户端层组件 应用客户端程序和浏览器是客户端层组件。客户端层组件可以是基于w e b 方 式的即作为w e b 服务器的浏览器,也可以是基于传统方式的( 非基于、b 方式) 即独立的应用程序,可以完成瘦客户机无法完成的任务。 2 、w e b 层组件 j a v as e l e t 和j a v as e r v e rp a g e s ( j s p ) 是w e b 层组件。w e b 层可能包含某些 j a v a 脚本代码来处理用户输入,并把输入发送给运行在业务层上的e n t c r d f j s e b e a n 来进行处理。按照j 2 e e 规范,静态的h t m l 页面和a p p l e t s 不算是w e b 层组 件。 3 、业务层组件 e n t e r p r i s ej a v a b e a n s ( e j b ) 是业务层组件。业务层代码的逻辑用来满足银 行,零售,金融等特殊商务领域的需要,由运行在业务层上的e j b 进行处理。j 2 e e 规范包含了三种企业级的b e a i l :会话b e a n s ( s e s s i o nb e a i l s ) ,实体b e a l l s ( e n t i t v b e a i l s ) ,和消息驱动b e a n s ( m e s s a g c - 耐v e nb e a l l s ) 。会话b e a l l 表示与客户端 程序的临时交互。当客户端程序执行完后,会话b e a l l 和相关数据就会消失。相 西南交通大学硕士研究生学位论文第1 0 页 者在“天府农业信息网”的开发中大量使用了无状态的会话b e a l l 。 就实体b e a n 而言。c m p 不需要编程具体的程序代码,只要定义相关参数 和填写e j b 0 l 语句。这种操作虽然简单,但是不支持复杂的数据操作,如: 级联查询、存储过程的调用等。其替代方案是b m p ,通过编程者自己填写固定 的函数代码操作低层数据库。但在大量的实际应用中证明,它有最致命的缺陷; 执行大数据查询效率不高。如果一个用户需要查出二十条数据记录,b m p 内部 会对低层数据库执行1 + 2 0 次的查询。如此频繁查询,大大增加了数据库压力。 导致一些需要对信息频繁查询的系统性能降低,结合本系统主要业务涉及大量 数据的查询,并包含一些存储过程的调用,因此笔者在系统建设中并没有采用 实体b e a n ,而是运用另一种替代方式,这在第四章中会有详细的说明。 西南交通大学硕士研究生学位论文第1 3 页 数据库还是其他服务器,视图都会正确地显示它们。由于m v c 的三个模块相 互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好 的松耦合的构件。 此外,控制器提高了应用程序的灵活性和可配置性。控制器可以用来连接 不同的模型和视图去完成用户的需求,也可以为构造应用程序提供强有力的手 段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择适当的模 型进行处理,然后选择适当的视图将处理结果显示给用户。 3 2s t r u t s 概述 s t r u t s 框架是a p a c h e 的开源项目,是一种用j s p 和s e r v l e t 来开发既b 应用程序的方法。s t r u t s 框架采用了m v c ( m o d e 卜v i e w c o n t r o l l e r ) 的设计思 想,这种设计把应用逻辑、处理过程和显示逻辑分成不同的组件实现,这些组 件之间可以进行交互和重用m 。 3 2 1s t r u t s 的体系结构 s t r l 如是m v c 的一种实现,其体系结构实现了m v c 设计模式的概念,如图 3 2 所示。m o d e 】层实现系统中的业务逻辑。对于大型应用,业务逻辑通常可 用j a v a b e a n 或e j b 来实现。 v i e w 层用于与用户的交互。它既没有业务逻辑,也没有模型信息。通常用 标签j s p 和s 廿u t s 自定义标签来实现。此外,通常把s t m t s 框架中的a c t i o n f o h n b e a n 也划分到视图模块中。a c t i o i l f o n nb e a l l 对象是一种j a v a b e a n ,可以通过 定义属性描述客户端表单数据。s n l i t s 框架利用a c t i o n f o r mb e a n 来进行视图和 控制器之间表单数据的传递。 c o n 仃o l l e r 层是m o d e l 与v i e w 之间沟通的桥梁,它可以分派用户的请求并 选择恰当的视图用于显示,同时它可以解释用户的输入并将它们映射为模型层 可执行的操作。控制器由a c t i o n s e “l e t 类和a c t i o n 类来实现。a c t i o n s e r v l e t 类 是s t r u t s 框架中的核心组件。a c t i o n s e l e t 继承了j a v a x s e r v l e t h n p h 却s e r v l e t 类,它在m v c 模型中扮演中央控制器的角色。a c t i o i l s e r v l e t 主要负责接收h t t p 请求信息,根据配置文件s 蜘t s c o 埔g x m i 的配置信息,把请求转发给适当的 a c t i o n 对象。 西南交通大学硕士研究生学位论文第1 5 页 印p l i c a t i o n a p p l i c a t i o n r e s o u r c e s 2 吲l o a d o n - s t 咖 吲s e r v l e t a c t i o n + d o 吲s e l e t - m 叩p i n g 在上述配置中, 定义了s e r v l e t 的名称, 元素用 来指定s e r v l e t 的完整类名, 元素用来指定a c t i o n s e r v l e t 可以 处理哪些u r l 。其中 元素中的 予元素必须和 元素中的 子元素匹配。以上代码的 属性为“d o ”,表明a c t i o n s e r v l e t 负责处理所有的以“d o ”扩展名结尾的u r l 。 子元素用语声明s e l e t 初始化参数,其格式以“参数名参数值” 的形式成对出现。上面代码为a c t i o n s e n ,l e t 配置了初始化参数c o n f i g ,c o n 丘g 参数是配置s 咖t s 的a c t i o n s e r v l e t 专有的,它用来设置s 缸u t s 配置文件的相对 路径。 此外,要在j s p 文件中使用s 饥他自定义标签,还应该在w e b x m l 声明其标 签库,配置片断如下: ,w e b i n f s n t s b e a l l t l d 脚e b - i n f s t r u t s h t i i l l t l d w e b i n f s 讯n s l l 恤1 t l d 砒a g l i b ( 诅g l i b 一删 w e b i n f s 订m s - 1 0 9 i c t l d 、e b i n f s t n l t s l o g i c t l d 吼a g l i b l o c a t i o n t a 鲥b 西南交通大学硕士研究生学位论文第1 6 页 w e b - i n f ,s t n l t s t e m p l a t e 1 1 d 咖酉i b - l l r i 元素有两个子元素: 和 。前者指定标签 库的相对或者绝对u r j 地址,w 曲应用将根据这一u r j 来访问标签库:后者指 定标签库描述文件在文件资源系统中的物理位置。 s t n 地c o n f i g x m l 配置文件用于协调各组件之间相互交互,完成业务流程, 是核心的配置文件。 主要包含如下几个部分: 1 、f o m _ b e a l l :a c t i o n s e r v l e t 使用a c t i o l l f o n nb e a n 来保存请求的参数,这 些b e a n 的属性名称与h t t p 请求的参数中的名称相对应,控制器将请求参数传 递到a c t i 0 1 l f o r n l b e a l l 的实例中,然后传递到a c t i o n 类中。 2 、9 1 0 b a l f o r w 盯d s :全局转发,一般用在多个逻辑过程统一转向的情况下, 例如出错,统一导向到出错页面,非法用户统一导向到登陆页面等。 3 、a c t i o n - m a p p i n g :a c t i o l l m 印p i n g 对象帮助进行框架内部的流程控制,是 联系a c t i o n 类与a c t i o n f o r n l 类,以及处理结果转向之间的纽带。 4 、d a t a - s o u r c e :数据库连接的配置,可以用s 们t s 自带的数据库连接池等。 3 2 3s t r u t s 的工作流程 对于采用s t m t s 框架的w 曲应用,在w 曲应用启动时就会加载并初始化 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 从s t n i t s c o n f i g x m l 文件中读取配置信息,把它们 存放到各种配置对象中,例如a c t i o n 的映射信息存放在a c t i o n m a p p i n g 对象中。 当a c t i o n s e r v l e t 接收到客户请求时,将执行如下流程m 】: l 、检索和用户请求匹配的a c t i o n m a p p i l l g 实例,如果不存在,就返回用户 请求路径无效的信息。 2 、如果a c t i o i l f o 肌实例不存在,就刨建一个a c d o n f o h n 对象,把客户提 交的表单数据保存到a c t i o n f o m 对象中。 3 、根据配置信息决定是否需要表单验证。如果需要验证,就调用a c t i o i l f o m 的v a l i d a t e ( ) 方法。 4 、如果a c t i o n f o r n l 的v a l i d a t e ( ) 方法返回n l l l l 或返回一个不包含 a c t i o n m e s s a g e 的a c t i o n e r r d r s 对象,就表示表单验证成功。 5 、a c t i o n s e r v l e t 根据a c d o r l m 印p 血g 实例包含的映射信息决定将请求转发 西南交通大学硕士研究生学位论文 第17 页 给哪个a c t i o n 。如果相应的a c t i o n 实例不存在,就先创建这个实例,然后调用 a c t i o n 的e x e c u t e ( ) 方法。 6 、a c t i o n 的e x e c u t e ( ) 方法返回一个a c t i o n f o r v v a r d 对象,a c t i o n s e r v l e t 再 把客户请求转发给a c t i o n f o n a r d 对象指向的j s p 组件。 7 、a c t i o i l f o n a r d 对象指向的j s p 组件生成动态网页,返回给客户。 对流程4 ,如果a c t i o i l f o m 的v a l i d a t e ( ) 方法返回一个包含一个或多个 a c t i o n m e s s a g e 的a c t i o n e r s 对象,就表示表单验证失败,此时a c t i o n s e r v l e t 将直接把请求转发给包含用户提交表单的j s p 组件。在这种情况下,不会在创 建a c t i o n 对象并调用a c t i o n 的c x e c u t e ( ) 方法。 3 3s t r u t s 的应用设计 s t m t s 框架己经为开发者提供了一个非常优秀的外壳,只需要遵循它的规 则,就可以大大加快开发效率,对于一般的开发,可借鉴以下过程: l 、收集和定义应用需求; 2 、定义视图,视图上的数据显示以及视图之间的流程; 3 、定义a c t i o n m a p p i n g s ,建立业务逻辑之间的关系; 4 、根据每个用户视图需要的模型数据创建a c t i o n f o r m : 5 、开发业务逻辑处理组件; 6 、编写a c t i o n 对象,完成请求与业务逻辑处理的适配器。当然在简单的应 用中a c t i o n 类可以直接充当业务逻辑处理模块,但是这样不利于程序的维护、 扩展; 7 、建立配置文件s n u t s c o n f i g x m l ,、v e b x m l 等; 8 、开发测试部署。 3 3 1a c t i o n 类的层次设计 在大型项目中,a c d o n 类是视图与业务逻辑处理的适配器。它的设计好坏 影响了整个系统层次的清晰和性能的优劣。不同a c t i o n 类适配不同的业务逻辑。 如农业供求信息的相关业务处理需要特定a c t i o n 类进行视图与业务的匹配。在 这一系列的a c t i o n 类设计中,不可避免的会有一些重复的属性和方法出现在多 个a c t i o n 类中。我们完全可以把这些共性提取出来,定义一个该系统特有的 a c t i o n 抽象类,让与之有其共性的a c t i o n 类都继承至该抽象类。抽象类中的方 西南交通大学硕士研究生学位论文 第1 8 页 法既可以直接编码实现。也可以只定义抽象方法,由子类根据自身功能具体实 现。这种层次的设计优点是:对直接实现的方法一旦需要进行修改时,不必在 每一个子类中查找修改。只需要对抽象类进行修改。末直接实现的方法说明了 其实现由具体的a c t i o n 类决定,这就让系统的设计风格在最大程度上保持一致。 当系统架构人员定义好a c t i o n 类的层次和抽象方法后,负责系统各个模块的程 序员必须以其为标准,进行方法的实现。 在“天府农业信息网”中,包含培训信息处理模块、供求信息模块、市场 行情模块、农业新闻模块等。由于这些模块次查询得到的信息量非常大,考 虑到系统性能和界面美观,需要进行分页处理。各模块分页处理是根据不同数 据表来查询,因此其抽象方法的实现依赖不同子类。所以可以建立一个 p a g e a c t i o n 抽象类,它在继承a c t i o n 类的基础上,封装分页的公用属性和抽象 方法。抽象方法的实现由各a c t i o n 子类完成,图3 3 展示了它们的层次关系: 3 3 2a c t i o n 类的设计 图3 3a c t i o n 类的层次设计 当用户通过w 曲页面( 视图) 发出h 盯p 请求后,a c t i o n s en r l e t 接收该请 求,根据配置文件的内容,决定将请求映射到特定a c t i o n 类,再由该a c t i o n 类 中的e x e c u t c ( ) 方法进行具体的业务逻辑选择。这就意味着a c t i o n 类的设计核心 是完成e x e c u t e ( ) 方法。按照面向对象的思想,一个a c t i o n 类应该是对一个对象 所有业务逻辑操作的处理,而不是每个操作都需定义一个a c t i o n 文件;这样既 可以减少实际工程中a c t i o n 类文件的数量,又可以让模块处理过程更加清晰、 紧凑。如: 培训信息处理模块需要对培训信息进行增加、删除、修改、查询和审核操 西南交通大学硕士研究生学位论文 第19 页 作。可以在处理培训信息模块a c t i o n 类的e x e c u t e ( ) 方法中做如下的定义: 获取f o m 对象 a c c o u i l t p a g e f o 订na c c o u i t t p a g e f o m = ( a c c o t h l t p a g c f o n n ) f o 衄; t d 根据接收的网页参数,进行相应操作的处理 i f ( r e q u e s t g e t p 甜狮e t e r ( a c c o u n t k e v k e y a d d ) 峰n u l l ) 产进行记录添加处理+ a d d ( r e q u e s t ,m a p p i n 岛l o g i n f o 彻,a c c o u l l t p a g e f o r m ) ;) e l s ei f ( r c q u e s t g e t p a r a m e t e “a c c o u n t - k e y k e y - e d i t ) f - 州i ) ( 产进行记录保存处理+ , e d i t ( r e q u e s t ,m a p p i n g ,l o g i n f o r m ,a c c o u n t p a g e f o n l l ) ;) e l s ei f ( r e q u e s t g e t p 踟砌e t e r ( a c c o u _ n t k e y k e y d e l e t e ) f - n u l i ) p 进行记录删除处理+ d e l e t e ( r e q u e s t ,m 印p i n 舀l o g i i l f o 玎n ,a c c o u l l t p a g e f o n ) ; e l s ei f q u e s t g e t p a r 啪e t e r ( a c c o u n t k e y k e ye x a m i n e ) ! = n u l l ) 产进行审核处理+ e x 枷n e ( r e q u e s t ,m a p p i n g ,l o g i l 】f o 珊,a c c o u n t p a g e f o n ) ;) ) c a t c h ( e x c 印t i o ne ) r e t 啪m 印p i n g f i n d f o n v a r d ( i c o n s t a l l t s f o r a i q f a i l u r e ) ; r e t u mm 印p i n g f i n d f o n v a r d ( i c o n s t a l l t s f 0 则悄i 己d l s u c c e s s ) ; 在建立了以上的处理流程后,其函数:a d d 、e d i t 、d e l e t e 等,可以看见实际 情况,在这个a c t i o n 类或其下层实现。当用户在视图层发出h t t p 请求时,对 同一模块的不同操作,只需要通过不同的参数进行区分。这个区分参数可以统 一建立一个统一的类文件进行管理: p u b l i cc l a s sa c c o u n t k e y p u b l i cs t a t i cf - m a ls 订i n gk e y 二e d i t = ”e d i t ”; p u b j i cs t a t i cf i n a ls 乜j n gk e y a d d = ”a d d ”; p u b l i cs t m i c 助a ls 曲培k e y e d i t i n i t = ”e d i t i m t “; p u b l i cs t a t i cf i n a ls 缸_ m gk e y d e l e t e = ”d e l e t e ”; p u b l i cs t a t i cf i n a ls 妇l gk e y e x a m i n e = ”e x 锄缸e ”; p u b l i cs 乜t i cf m a ls t r i n gk e y _ l i s t = ”l i s t - ; ) 西南交通大学硕士研究生学位论文第2 7 页 方便,尽可能地满足不同层次上网用户的需求并提供对不同类型上网设备的支 持,真正能够为用户带来方便。 4 3 2 总体架构的设计 基于上述分析,系统的开发采用文中提出的s 竹u t s 应用框架,利用控制器 来控制系统的流程、产生视图、调用业务组件执行业务逻辑,用户界面的生成 由j s p 和s t r l l t s 标签负责,业务逻辑交给后端的e _ 和j a v a b e a i l 组件。这样, 系统的表现逻辑和业务逻辑分离,简化了软件开发、提高了系统的性能,使开 发出的应用具有良好的可维护性、可扩展性。 但是本系统如果按照2 1 3 节所描述的j 2 e e 典型的四层结构划分并不能很 准确的指导开发。因为业务逻辑层与企业信息系统层中数据库交互的过程中往 往需要对数据库调用接口做进一步的封装。而且,对许多公司而言,企业信息 系统层是关系性数据库或公司大型机系统,不能明确映射要实现的许多面向对 象的机制。大多数应用程序开发人员只是考虑中间层的业务逻辑复用,很少考 虑过用任何诈规的数据持久性框架建立数据层,即数据持久层。数据持久层位 于数据库之上隐藏数据读取和操纵中的所有数据访问代码细节,完全抽象出 开发应用程序时使用的数据物理细节。 增加数据持久层的优点是: 1 、将数据持久逻辑和业务逻辑分离,令业务逻辑层通过数据持久层与数据 库交互,各层功能更简洁、专一。 2 、对业务逻辑层隐藏了数据库平台。将所有数据连接逻辑包装到数据持久 层中,业务逻辑的开发人员不需要知道连接的数据库平台类型,连接数据库时 所需的任何安全信息等。 3 、抽象数据库中存储数据的物理细节和数据实体之间存在的关系。建立在 上述体系结构布局之上的应用程序不必直接对数据库发出s o l 查询,不必知道 数据的物理结构,而用数值对象访问数据库。 所以系统的最终体系结构为五层。这五层分别是客户层、w e b 层、业务逻辑 层、数据持久层和企业信息系统层,图4 4 显示了系统整体架构。 l 、客户层指客户端的w 曲浏览器,通过它向服务器发送h r r p 请求,获 取和提交数据。 2 、w 曲层分为控制模块和视图模块。控制模块根据用户的h r r p 请求,读 取配置文件( 、e b x m l 和s t r l l t s c o 蚯g x m l ) ,将请求映射到相应的业务组件并执 西南交通大学硕士研究生学位论文 第2 8 页 行业务逻辑。视图模块是展现给用户的界面表示,为了将脚本代码从视图部分 中除去,系统在视图模块中运用了大量的s t m t s 标签进行视图显示的处理。 3 、业务逻辑层属于m v c 模式中的模型部分。它实现系统中所有的业务逻 辑处理,并负责业务方法的事务管理。每个业务逻辑都由下层的若干子方法封 装实现。 4 、数据持久层解决数据映射问题,采用d a 0 模式,通过封装标准的巾b c 访问数据库。 5 、业信息系统层主要指关系数据库服务器。 i 用户w 曲浏览器i 客户层 眉 。 i = :嚣k 加1 1 e r ( a c t i 。nr 一州e t ;扣t i o 曲h 咖一孵删 圆 懒层 s e s s t 。n a a e 业务逻辑层 is e s 咖n b 鼬lis 酬。n b i 自由久t 蔺 层。 l 一j 图4 4 系统架构设计 由上所述,系统总体设计可以划分为四个主体包,分别为表示层的用户界 面包( 、v e b ) ,业务逻辑层的e j b 包( c j b ) 和数据持久层的数据映射包( d a o ) ,以及 各层都会用到的通用工具包( c o m m o n ) 。具体的u m l 框架如图4 5 所示: 西南交通大学硕士研究生学位论文第2 9 页 4 _ 3 3 开发环境的选择 图4 5 总体设计包图 1 、d k 工具( 选择j d k1 5 , j d k 由一些标准类库和一组建立测试及建立 文档的j a v a 实用程序组成。其核心j a v a a p i 是一些预定义的类库,开发人员需 要用这些类来访问j a v a 语言的功能。) 2 、开发工具选择业界应用最为广泛的b o r l a n d 公司的j b u i l d e r2 0 0 5 ,它提 供很多开发向导和工具,便于企业级应用开发。另外它也己经包含s t r l l t s 开发 包。 3 、应用服务器选择w 曲l o g i cs e r v e r8 1 。因为w e b l o g i cs e r v e r 是业界最为 流行的应用服务器。它将为部署并执行j 2 e e 应用提供了一个完善的、功能强 大的实时环境,利用它开发的系统将是一个真正的分布式企业应用系统。 4 、数据库选用业界广泛支持的0 m c l e 8 关系数据库。 4 4 系统各层的设计与实现 4 4 1w e b 层的设计与实现 4 4 1 1w e b 层的设计 根据4 _ 3 2 节的分析,w 曲层框架设计如图4 6 所示。 西南交通大学硕士研究生学位论文 第3 0 页 图4 6w e b 层结构 w e b 层可分成两个子包:视图包(

温馨提示

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

评论

0/150

提交评论