【硕士论文】基于Struts和Hibernate的博客系统设计与实现.pdf_第1页
【硕士论文】基于Struts和Hibernate的博客系统设计与实现.pdf_第2页
【硕士论文】基于Struts和Hibernate的博客系统设计与实现.pdf_第3页
【硕士论文】基于Struts和Hibernate的博客系统设计与实现.pdf_第4页
【硕士论文】基于Struts和Hibernate的博客系统设计与实现.pdf_第5页
免费预览已结束,剩余58页可下载查看

【硕士论文】基于Struts和Hibernate的博客系统设计与实现.pdf.pdf 免费下载

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

文档简介

大连理工大学 硕士学位论文 基于struts和hibernate的博客系统设计与实现 姓名:高大伟 申请学位级别:硕士 专业:软件工程 指导教师:姜国海 20070602 大连理工大学专业学位硕士学位论文 摘要 随着计算机和互联网技术的飞速发展,信息在各个领域己经成为越来越重要的组成 部分。博客是继e m a i l 、b b s 、i c q 之后的第四代信息传播方式,它在教育、科研、娱 乐等方面得到了越来越广泛的应用,博客和博客文化深刻影响着人们的生活,成为目前 最热门的信息传播平台,具有良好的应用前景。 本文首先对分层体系结构作了详细的分析,对单层体系结构、双层体系结构、多层 体系结构的优点和缺点作了对比,并且对s m i t s 框架与h i b c m a m 技术作了深入的研究。 其次对博客系统作了功能性与非功能性需求分析,用u m l 建模语言对系统进行了详细 的分析与设计,包括系统的用例分析、主要业务流程的分析以及数据库的设计。然后结 合分层体系结构、s t r u t s 框架、h i b e r n a t e 技术,搭建了博客系统的应用框架,提供了表 现层、业务逻辑层、数据访问层的相关基类。搭建在这个应用框架上的博客系统可以实 现编程接口的统一,以及对事务的自动控制。论文最后完成了基于上述框架的博客系统 的实现。详细描述了s t r u t s 框架、h i b e r n a t e 技术的实际应用。博客系统在实现上,借鉴 了主流博客的设计理念,提供了博客系统所必备的常用功能。并且提供了可视化的编辑 器,方便了用户日志内容的组织。系统还具有静态页面的生成能力,这样可以大大减轻 服务器的负担。 实践表明,该博客系统具有很好的稳定性和灵活性,同时也满足了对系统的可扩展 性和可维护性的要求。 关键词;博客;框架;分层体系 基于s 虮l 坞和h i b l 疵的博客系统设计与实现 d e s i g na n di m p l e m e n t a t i o no fab l o gs y s t e mb a s e do ns t o a t sa n dh i b e r n a t e a b s t r a c t a st h ef a s td e v e l o p m e n to fc o m p u t e ra n di n m r n e tt e c h n o l o g y ,i n f o r m a t i o ni sp l a y m ga m o r ea n dm o r ei m p o r t a n tr o l ei ne v e r yf i e l d b l o gi st h ef o u r t hg e n e r a t i o nc o m m u n i c a t i o n m e t h o di ns u c c e s s i o no fe - m a i l b b s ,a n di c q ,a n di s 、】i r i d e l ya p p l i e di ne d u c a t i o n , s e i e n l i i i e r e s e a r c h , e n t e r t a i n m e n t , e r e b l o ga n db l o gc u l t u r ei si m p o s i n ge f f e c to np e o p l e sl i f e ,a n di t b e c o m e so n eo ft h eh o t t e s ti n f o r m a t i o n 缸 a n s m i s s i o np l a t f o r m sw h i c hh a sg r e a ta p p l i c a t i o n p r o s p e c t 皿et h e s i sa n a l y z e st i e r e d - a r c h i t e c t u r ei nd e t a i l ,a n dc o m p a r e ss i n g l e - t i e ra r c h i t e c t u r e , t w o - t i e rm c f 蚯t c c t u r ea n dm u l t i - t i e ra r c h i t e c t u r ei nt h ea s p e c to f t h e i rr e s p e c t i v ea d v a n t a g ea n d d i s a d v a n t a g e ,a n dd e e pr e s e a r c ho ns t r u t sf r a m e w o r ka n dh i b e r n a t et e c h n o l o g yi sd o n e t h e n b l o gs y s t e m sf u n c t i o n a la n dn o n - f u n c t i o n a lr e q u i r e m e n ti sa n a l y z e du s i n gu m l ,i n c l u d i n g a n a l y s i so fu s cc a m a i nb u s i n e s sl o g i cw o r k f l o w , a n dd e s i g no fd a t a b a s e f o f i o w i n 岛 t o g e t h e rw i t ht i e r e d a r c h i t e c l :i l 把,s m ma n dh i b e r n a t e ,a na p p l i c a t i o nf r a m e w o r kf o rt h eb t o g s y s t e mw h i c ho f f e r sas e r i e so fb a s ec l a s s e sf o rp r e s e n t a t i o nt i e r , b u s i n e s sl o g i ct i e ra n dd a t a a c c e s st i e ri sc a r d e do u t 1 1 b l o gs y s t e mb a s e do nt h i sf i - a m e w o r kr e a l i z e st h ec o n s i s t e n c yo f p r o g r a m m i n gi n t e r f a c ea n dt h ea u t o m a t i cc o n t r o lo ft r a n s a c t i o n f i n a l l y ,ab l o gs y s t e mi s r e a l i z e db a s e do nt h ea b o v e - m e n t i o n e df r a m e w o r ka n dt h ep r a c t i c a la p p l i c a t i o no fs t r u t sa n d h i b e r n a t e 躺d e s c r i b e d d u r i n gt h e1 髓l i z a t i o no ft h eb l o gs y s t e m , t h ed e s i g nm o d e l so f p o p u l a rb l o gs y s t e ma r ea b s o r b e d , e q u i p p i n gt h es y s t e mw i t hc o m m o l lf u n c t i o n a l i t i e s 叨1 e s y s t e mo f f e r sav i s u a le d i t o rw h i c hr e l i e v e st h ea r r a n g e m e n to ft h eb l o g sc o n t e n t a l s o t h e s y s t e m h a sa c a p a c i t yo f g e n e r a t i n gs t a t i cp a g e s ,a n dt h i sm a yg r e a t l yr e d u c et h eb u r d e no f t h e s e l r v e r m p r a g l :i g a op r o v e st h a tt h eb l o gs y s t e mi ss t a b l ea n df l e x i b l e ,a n ds a i l s 矗e st h e r e q u i r e m e n to f m a i n t e n a n c ea tt h es a m et i m e k e yw o r d s :b l o g ;f r a m e w o r k ;t i e r e d - a r c h i t e c t u r e 独创性说明 作者郑重声明:本硕士学位论文是我个人在导师指导下进行的研究工 作及取得研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写的研究成果,也不包含为获得大连理 工大学或者其他单位的学位或证书所使用过的材料。与我一同工作的同志 对本研究所做的贡献均已在论文中做了明确的说明并表示了谢意。 作者签名:函塞遗日期:2 幽空旦! 算 大连理工大学专业学位硕士学位论文 大连理工大学学位论文版权使用授权书 本学位论文作者及指导教师完全了解“大连理工大学硕士、博士学位论文版权使用 规定”,同意大连理工大学保留并向国家有关部门或机构送交学位论文的复印件和电子 版,允许论文被查阅和借阅。本人授权大连理工大学可以将本学位论文的全部或部分内 容编入有关数据库进行检索,也可采用影印、缩印或扫描等复制手段保存和汇编学位论 文。 作者签名:壶垃 导师签名: 立4 年上月3 日 大连理工大学专业学位硕士学位论文 引言 博客( b l o g ) 的全名是w e bl o g ,中文意思是网络日志,后来缩写为b l o g 。从理解 上讲,博客是一种表达个人思想、网络链接、内容,按照时间顺序排列,并且不断更新 的出版方式。 b l o g 是继e m a i l 、b b s 、i c q 之后出现的第四种网络交流方式,是网络时代的个人 “读者文摘”,是以超级链接组织的网络日记,是代表着新的生活方式和新的工作方式, 更代表着新的学习方式。具体说来,博客( b l o g g e r ) 这个概念解释为使用特定的软件, 在网络上出版、发表和张贴个人文章的人。 最早,是由j o i nb a r g e r 在1 9 9 7 年1 2 月提出博客这个名称。但是在1 9 9 8 年,互联 网上的博客网站却屈指可数。那时,i n f o s i f t 的编辑j e s s ej g a r r e t t 想列举一个博客类似 站点的名单,便在互联网上开始了艰难的搜索。 终于在1 9 9 8 年的1 2 月,他的搜集好了部分网站的名单。他把这份名单发给了 c a m e r o nb a r r e t t ,c a m e r o n 觉得这份名单非常有用,就将它在c a m w o r l d 网站上公布于 众。其它的博客站点维护者发现此举后,也纷纷把自己的网址和网站名称、主要特色都 发了过来,这个名单也就日渐丰富。到了1 9 9 9 年初,j e s s e 的“完全博客站点”名单所 列的站点已达2 3 个。 由于c a m e r o n 与j e s s e 共同维护的博客站点列表既有趣又易于阅读,吸引了很多人 的眼球。在这种情况下,p e t e r m e r h o l z 宣称:“这个新鲜事物必将引起大多数人的注意。 作为未来的一个常用词语,w e b - b l o g 将不可避免地被简称为b l o g ,而那些编写网络日志 的人,也就顺理成章地成为b l o g g 瞥_ 尊客”。这代表着博客被正式命名。 随着博客数量的增多,每个博客网站上编写的网络日志的内容也混杂起来,以至把 每一个新出的站点主要内容和特色都不可能搞清楚。c a m e r o n 后来就只在网站上登载熟 悉的博客站点了。时隔不久,b r i g i t t ee a t o n 也搜集出了个名口q “ e a t o n 网络门户”的博 客站点名单,并且提出应该以日期为基础组织内容。这也建立了b l o g 分类排列的一大标 准。 1 9 9 9 年7 月,一个专门制作博客站点的“p i t a s ”免费工具软件发布了,这对于博客 站点的快速搭建起着很关键的作用。随后,上百个同类工具也如雨后春笋般制作出来。 这种工具对于加速建立博客站点的数量,是意义重大的。同年的8 月份,p y r a 发布了 b l o g g e r 网站,g r o k s o u p 也投入运营,使用这些企业所提供的简单的基于互联网的工具, 博客站点的数量终于出现了一种爆炸性增长。1 9 9 9 年末,软件研发商d a v ew i r i e r 向大 基于$ 1 r m s 和h i b e m a t e 的博客系统设计与实现 家推荐e d i tt h i sp a g e 网站,j e f f 丸c a m p b e l l 发布了v e t o c i n e w s 网站。所有的这些服务 都是免费的,他们的目的也很明确:让更多的人成为博客,来网上发表意见和见解。 现在,全世界每天传播的媒体内容,有一半是由6 大媒体巨头所控制。其利益驱动、 意识形态以及传统的审查制度,使得这些经过严重加工处理的内容已经越来越不适应人 们的需求。媒体的工业化,内容出口的工厂化,都在严重影响其发展。比如,以美联社 为例,有近4 0 0 0 人专业记者,每天“制造并出厂- 2 0 0 0 万字的内容,每天发布在8 5 0 0 多 种报纸、杂志和广播中,把读者当作“信息动物”一样。这种大教堂式的模式主导了整个 媒体世界。这时,以个人为中心的搏客潮流却开始有力冲击传统媒体,尤其是对新闻界 多年形成的传统观念和道德规范。 博客的出现集中体现了互联网时代媒体界所体现的商业化垄断与非商业化自由,大 众化传播与个性化( 分众化,小众化) 表达,单向传播与双向传播3 个基本矛盾、方向和 互动。这几个矛盾因为博客引发的开放源代码运动,至少在技术层面上得到了根本的解 决。 大连理工大学专业学位硕士学位论文 1 软件分层体系结构与主流框架技术 1 1 软件分层体系结构 软件分层包含两种含义:一种是物理分层,即每一层都运行在单独的机器上,这意 味着创建分布式的软件系统;另一种是逻辑分层,指的是在单个软件模块中完成特定的 功能。适当的分层,将会增强系统的伸缩性、可维护性、可扩展性、可重用性和可管理 性以及代码的可读性。 软件分层必须符合以下特征【l 】: ( 1 ) 每个层由一组相关的类或组件构成,共同完成特定的功能。 ( 2 ) 层与层之间存在自上而下的依赖关系,即上层组件会访问下层组件的a p i ,而 下层组件不应该依赖上层组件。 ( 3 ) 每个层对上层公开a p i ,但具体的实现细节对外透明。当某一层的实现发生变 化,只要它的a p i 不变,不会影响其它层的实现。 1 1 1 单层体系结构 简单的软件系统往往运行在单一计算机上,由应用软件提供所有服务,包括用户界 面、数据库访问、处理用户输入的逻辑等。而且这些服务常常集中在同一个应用程序中。 因为这种体系中的所有逻辑应用服务服务,包括表示层、业务逻辑层、数据访问层都位 于同一模块中,所以这种结构称为“单层”体系结构,如图1 1 所示: 工作站 图i i 单层体系结构 f i g 1 1a r c h i t e c t u r eo f s i n g - t i e r 单层系统相对而言是容易管理的,而且由于数据都存放在唯一的一个地方,所以数 据的一致性也很简单。但是,单层系统也有一些缺点:单层系统不能扩展以便处理大量 一3 一 基于s o u r s 和h i b e r n a t e 的博客系统设计与实现 用户,也不易于跨企业共享数据。例如字处理软件,它能很出色地帮助人们创建文档, 但是同时只能由一个人用这个应用软件。而且,即使将这个文档共享给其他用户,同一 时刻也只能由一个人编辑。 1 1 2 客户端服务器两层体系结构 有一些应用软件可能用到了数据库服务器,并且通过服务器端存取数据。在这种情 况下,数据库是在应用程序之外运行的另一个进程,甚至它和应用程序不在同一台机器 上运行。如图1 2 所示,数据访问的逻辑组件是和应用程序的其它逻辑分开的。 工作站 应用 服务器 图1 2 客户端服务器两层体系结构 f i g 1 2a r c h i t e c t u r eo f t w o - t i e r e dc f i e n t s e r v e r 采用这种方法的好处是把数据集中起来,允许多个用户同时访问同一个数据库,而 且采用集中的数据库服务器还可以分担一些应用软件的运行负载。这种体系结构通常称 为“客户端n 务器”结构,无论服务器提供的数据访问或者其它什么服务,只要存在客 户端和服务器的通信,都属于这一体系结构范畴。 两层体系结构的缺点之一是把管理数据,以及使用与数据相关的应用逻辑都集中于 程序自身中。当多个应用程序共享一个数据库时,问题就出现了。例如某公司规定,对 逾期9 0 天未付款的账号要进行信用冻结。在每个应用程序中,建立这个逻辑规则来处 理客户的数据似乎是非常简单的,但是当策略变为1 2 0 天进行信用冻结时,那么相应修 改每个应用程序将会很麻烦。 这个问题可以通过封装业务逻辑规则,建立可利用的库来试图解决。当这些规则发 生变化时,可以只替换掉这些库。但是这个方法会带来一些问题,其中最主要的是同步 问题。因为有可能某些工作站上已经替换了最新版本的库文件,而有些则仍然使用旧版 本的库文件,这必然会导致业务逻辑的冲突。 大连理工大学专业学位硕士学位论文 为了更好地解决这个闯题,合理地把业务规则从正在运行应用程序的工作站上分离 出来,可以另外设一台业务规则服务器,这样每次更新业务规则也只需要实施一次,而 不需要更新每台运行着这个应用程序的工作站。 1 1 3 客户端服务器n 层体系结构 如图1 3 所示是一个基于客户端服务器模型的三层体系结构。在这个模型中,所有 的业务逻辑独立于桌面运行的应用程序。桌面应用程序只作为表示层,除了负责用户晃 面的展示之外,还负责与业务逻辑层的通信,但不再负责业务逻辑与数据访问。 鞫 鋈 t = : 业务逻辑 服务嚣 错圄 图1 3 客户端服务器n 层体系结构 f i g 1 3a r c i l i t e c h eo f m u l t i - t i e l e dc l i e n t s e r v e r 通常,逻辑层单独运行在一台服务器上,而不是运行在工作站上。业务逻辑层负责 将表示层和数据库通过一定的逻辑联系起来,由于业务逻辑层运行在一台服务器上,所 以任何用户的应用程序都可以通过网络来使用它的业务规则。当使用这些服务的用户数 量增加了,并且业务逻辑变得更复杂了,对服务器的负载能力要求也就更高了。这时可 以升级服务器,或者增加服务器的数量。扩展单台服务器相对于修改工作站的程序而言 是容易的,并且节约成本。 这个体系结构在于可以直接从应用域获得业务逻辑层的类,从而方便快捷地建立应 用模型。业务逻辑层可以利用真实的模型的类来实现,而不是复杂的s q l 语句。通过 将实现细节放到合适的层,并且利用实际的类来进行设计,应用程序也变得非常易于理 解和容易扩展。 1 1 4 浏览器b l 务器n 层体系结构 b s ( b r o w s e r s e r v e r ) 结构即浏览器服务器结构。它是随着i n t c m e t 技术的兴起, 对c s 结构的一种变化或者改进的结构。在这种结构下,用户工作界面是通过浏览器来 实现,极少部分事务逻辑在前端( b r o w s e r ) 实现,但是主要事务逻辑在服务器端( s e r v e r ) 一5 一 基于s t r u t s 和h i b e r n a 把的博客系统设计与实现 实现,这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降 低了用户的总体成本。 鼹 i 圄 ,鋈 i 巨 ,= 耀 。霪 i 謇 i 芒竺要翌 翟 厘 l 车己 f = 应用 用户界面逻辑业务逻辑 服务器 服务器服务器 图1 4 基于浏览器服务器模式的n 层体系结构 f i g 1 4a r c h i t e c t u r eo f m u l t i - t i e r e db sp a t t e r n 目前,软件系统的改进和升级越来越频繁,b s 架构的产品明显体现着更为方便的 特性。对一个稍微大一点单位来说,系统管理人员如果需要在几百甚至上千部电脑之间 来回奔跑,效率和工作量是可想而知的,但b s 架构的软件只需要管理服务器就行了, 所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少 分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行;如果 是异地,只需要把服务器连接专网即可,实现远程维护、升级和共享。所以客户机越来 越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维 护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省 是显而易见的,惊人的。因此,维护和升级革命的方式是“瘦”客户机,“胖”服务器。 1 2a p a c h es t r u t s 应用框架 t h ej a k a r t as t m t s 项目是由a p a c h es o i t w a r ef o u n d a t i o n 发起的开源项目,它在j a v a 服务器端实现了m v c ( m o d e l - v i e w - c o n t r o l l e r ) 设计模式。t h ej a k a r t as t r u t s 项目最初 是由c r a i gm c c l a n a h a n 在2 0 0 0 年5 月创建的,后来被开源组织所接收。t h ej a k a r t as t r u t s 作为一个开源框架的主要意图是为了在创建w e b 应用时能比较容易的分离表示层和业 务数据层。自从它诞生以来收到大量开发人员的支持,并很快的成为开源社区中一个重 要的成员【2 】。 s t r u t s 在a p a c h e 软件协议( a s f ,l i c e n s e :w w w a p a c h e o r g l i c e n s e ) 保证下不会被 收取任何费用,这个协议与其他开源协议不同的地方是在a s f 具有特别的商业友好性, 使用s u l i t s 框架开发的商用软件,不必支付任何再现费用,也不会引起任何的争议。你 大连理工大学专业学位硕士学位论文 也可以将s t r u t s 组件嵌入到你自己开发的商业框架中,就像这些代码是你自己写的一样。 s m m 为开发w e b 应用程序提供了一个框架( f r a m e w o r k ) 。s t u r t s 建议使用m o d e l2 的模 式开发w e b 应用程序。s t u r t s 提供了c o n t r o l l e r 层组件,这些组件可以和多种已有m o d e l 层和v i e w 层技术集成使用。 1 2 1w c 设计模式 m v c 是m o d e l v i e w - c o n t r o l l e r 的缩写,事件导致c o n t r o u e r 改变m o d e l 或v i e w , 或者同时改变两者。只要c o n t r o u e r 改变了m o d e l s 的数据或者属性,所有依赖的v i e w 都会自动更新。类似的,只要c o n t r o l l e r 改变了v i e w ,v i e w 会从潜在的m o d e l 中获取 数据来刷新自己。m v c 模式最早是s m r l l t f l l k 语言研究团提出的,应用于用户交互应用 程序中【3 】。s t r u t s 只实现了m v c 的v i e w 和c o n t r o l l e r 两个部分,m o d e l 部分需要开发者 自己来实现,s t r u t s 提供了抽象类a c t i o n 使开发者能将m o d e l 应用于s m m 框架中。 ( 1 ) 视图( v i e w ) 视图代表用户交互界面,对于w c b 应用来说,可以概括为h t m l 界面,但有可能 为x h t m l 、x m l 和a p p l e t 。随着应用的复杂性和规模性,界面的处理也变得具有挑战 性。一个应用可能有很多不同的视图,m v c 设计模式对于视图的处理仅限于视图上数 据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的 处理交予模型( m o d e l ) 处理。比如一个订单的视图只接受来自模型的数据并显示给用户, 以及将用户界面的输入数据和请求传递给控制和模型。 ( 2 ) 模型( m o d e l ) 模型就是业务流程,状态的处理以及业务规则的制定。业务流程的处理过程对其它层 来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计 可以说是m v c 最主要的核心。 业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据 保存( 持续化) 。比如将一张订单保存到数据库,从数据库获取订单。设计人员可以将 这个模型单独列出,所有有关数据库的操作只限制在该模型中。 d ) 控制器( c o n t r o l l e r ) 控制器可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请 求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的 模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。 例如,用户点击一个连接,控制层接受请求后,并不处理业务信息,它只把用户的信息 基于s m t t s 和h i b e r n a t e 的博客系统设计与实现 传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能 对应多个视图,一个视图可能对应多个模型。 模型、视图与控制器的分离,使得一个模型可以具有多个显示视图【4 】。如果用户通 过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这 些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导 致显示的更新。这实际上是一种模型的变化传播机制。模型、视图、控制器三者之间 的关系和各自的主要功能,如图1 5 所示: 图1 5g v c 设计模式 f i g 1 5m v cd e s i g np a t t e m 大部分w e b 应用程序都是用像a s p ,p h p ,j s p 这样的过程化语言来创建的。它们 将像数据库查询语句这样的数据层代码和像h t m l 这样的表示层代码混在一起。经验 比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精 心的计划和不断的尝试。m v c 从根本上强制性的将它们分开。尽管构造m v c 应用程 序需要一些额外的工作,但是它带来的好处是无庸质疑的【5 】。 首先,最重要的一点是多个视图能共享一个模型。无论你的用户想要f l a s h 界面或 是w a p 界面,用一个模型就能处理它们。由于已经将数据和业务规则从表示层分开, 所以可以最大化的重用代码了。 由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。例如, 很多数据可能用h t m l 来表示,但是它们也有可能要用m a c r o m e d i af l a s h 和w a p 来表 示。模型也有状态管理和数据持久性处理的功能,例如,基于会话的购物车和电子商务 过程也能被f l a s h 网站或者无线联网的应用程序所重用。 因为模型与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务规 则。如果想把数据库从m y s q l 移植到o m c l e ,只需改变你的模型即可。一旦正确的实 现了模型,不管你的数据来自数据库或是l d a p 服务器,视图将会正确的显示它们。由 一8 一 大连理工大学专业学位硕士学位论文 于运用m v c 的应用程序的三个部件是相互对立,改变其中一个不会影响其它两个,所 以依据这种设计思想能构造良好的松偶合的构件嘲。 控制器的也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成 用户的需求,这样控制器可以为构造应用程序提供强有力的手段阴。给定一些可重用的 模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果 显示给用户。 1 2 2s t r u t s 框架概述 s m n s 框架是a p a c h ej a k a r t a 项目的一部分,是一种使用j s p 和s c r v l c t 来开发 w e b 层的应用框架。它是m v c 设计模式的一种实现。它由一组相互协作的类、s c r v l c t 以及丰富的标记库( t a g l i b ) 组成,同时s t r u t s 也包含了独立于该框架工作的实用工具 类。 图1 6s t r u t s 体系结构 f 培1 6a r c h i t o c t u r eo f s t r m s s t r u t s 作为一个m v c 的框架,s m a s 对m o d e l 、v i e w 和c o n t r o u c r 都提供了对应的 实现组件,对应图1 6 ,分别进行介绍,并且看看它们是如何结合在一起的。 ( 1 ) 模型 m v c 系统中的m o d e l 部分从概念上可以分为两类:系统的内部状态和改变系统状 态的动作。s t r u t s 为m o d e l 部分提供了a c t i o n 和a c t i o n f o r m 对象,所有的a c t i o n 处理 器对象都是开发者从s m a s 的a c t i o n 类派生的子类。a c t i o n 处理器对象封装了具体的处 理逻辑,调用业务逻辑模块,并且把响应提交到合适的v i e w 组件以产生响应。s m a t s 提供的a c t i o n f o r m 组件对象,它可以通过定义属性描述客户端表单数据。开发者可以 从它派生子类对象,利用它和s m u t s 提供的自定义标记库相结合,可以实现对客户端的 表单数据的良好封装和支持。a c t i o n 处理器对象可以直接对它进行读写,而不再需要和 一9 一 基于s t r u t s 和h i b e r n a t e 的博客系统设计与实现 r e q u e s t 、r e s p o n s e 对象进行数据交互。通过a c t i o n f o r m 组件对象实现了对v i e w 和m o d e l 之间交互的支持。s t r u t s 通常建议使用一组j a v a b e a n 表示系统的内部状态,根据系统的 复杂度也可以使用像实体b e a n 和s e s s i o nb e a n 等组件来实现系统状态。s t m t s 建议在实 现时把a c t i o n 和业务逻辑分离。这样可以实现业务逻辑的重用。在模型层,s t r u t s 可以 很容易的与数据访问技术相结合,包括j n d i ,j d b c 和m o 。 ( 2 ) 视图 s t m t s 应用中的v i e w 部分是通过j s p 技术实现的。s m a s 提供了自定义的标记库可 以使用,通过这些自定义标记可以非常好地和系统的m o d e l 部分交互,通过使用这些自 定义标记创建的j s p 表单,可以实现和m o d e l 部分中的a e t i o n f o r m 的映射,完成对用 户数据的封装,同时这些自定义标记还提供了像模板定制等多种显示功能。同时,在视 图层,s t r u t s 能够与v e l o c i t y ,w e b w o r k , t i l e s 等表示层组件相结合。 ( 3 ) 控制器 控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后把响应结 果送回到客户端。在s t r u t s 中c o n t r o l l e r 由a c t i o n s e r v l e t 和a c t i o n m a p p i n g 对象构成, 核心是一个s e r v l e t 类型的对象a e 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 m a p p i n g 对象,每个a c t i o n m a p p i n g 对象实现了一个请求到 一个具体的m o d e l 部分中a c t i o n 处理器对象之间的映射。 1 2 3s t r u t s 工作原理 s t r u t s 具体地实现了m v c 框架,在s t r u t s 框架的控制器功能由负责寻找相应处理过 程的a c t i o n m a p p i n g 和负责寻找处理后的目标对象( j s p 页面) 的a c t i o n f o r w a r d 对象构成, 两者配合完成一个请求处理过程;模型的实现通过表示处理目的的a c t i o n 调用表示具体 处理动作的d a o 对象和存储处理数据的b e a n 对象完成一个处理过程;视图部分是通过 j s p 技术实现的嘲。s t r u t s 提供了自定义的标记库,通过这些自定义标记可以非常好得和 系统的模型部分交互并输出数据。 在s t r u t s 中用户的请求一般以d o 作为请求服务名,所有的d o 请求均被指向 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 r u t s c o n f i g x m l 中的配置信息,将用户请求封装成一 个指定名称的f o r m b e a n ,并将此f o r m b e a n 传至指定名称的a c t i o n b e a n ,由a c t i o n b e a u 完成相应的业务操作。每一个d 0 均有对应的f o r m b e a n 名称和a c t i o n b e a n 名称,这些 要在s t r u t s - e o n f i g x m l 中配置。s t r u t s 工作流程如图1 7 所示; 大连理工大学专业学位硕士学位论文 回回囤 田 i一 7 lj i l i i 删t e o 4 设置属性 、r 7 l a c t i o n f o r w a r d 渲染页面 1 , 获取属性 j 、 渲染后的页面 图1 7s t r u t s 工作原理图 f 培1 70 i 埘砒j 彻a lp r i n c i p l eo f s 仃u t s s t r u t s 主要通过四个核心组件来完成控制和对用户请求的处理,它们分别是 a c t i o n s c r v l c t 、a c t i o n 、a c t i o n f o r m 、a c t i o n m a p p i n g 。下面来对这几个核心组件进行一 下说明: ( 1 ) a c t i o n s c r v l c t a c t i o n s c r v l c t 继承自j a v a x s c r v l e l h u p h t t p s c r v l c t 类,其在s t r u t s 体系结构中扮演的 角色是控制器,控制器主要负责将h t t p 的客户请求信息组装后,根据配置文件的指定 描述,转发到适当的处理器。当用户向服务器端提交请求的时候,实际上信息是首先发 送到控制器,一旦控制器获得了请求,其就会将请求信息传交给一些辅助类( h d pc l a s s e s ) 处理。这些辅助类知道如何去处理与请求信息所对应的业务操作。在s t f l l 协中,这个辅 助类就是a c t i o n 。通常开发者需要自己继承a c i t o n 类,从而实现自己的a c t i o n 实例。 基于s t n a s 和h i b e m a t e 的博客系统设计与实现 ( 2 ) a c t i o n 一个a c t i o n 类的角色,就像客户请求动作和业务逻辑处理之间的一个适配器,其功 能就是将请求与业务逻辑分开。这样的分离,使得客户请求和a c t i o n 类之间可以有多个 点对点的映射。而且a c t i o n 类通常还提供了其它的辅助功能,比如:认证、日志和数据 验证。 ( 3 ) a c t i o n m a p p i n g a c t i o n m a p p i n g 存储了特定请求映射到特定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 m a p p i n g 传送到a c t i o n 类的e x e c u t e 0 方法,a c t i o n 将使用a c t i o n m a p p i n g 的 f i n d f o r w a r d o 方法,此方法返回一个指定名称的a c t i o n f o r w m d ,这样a c t i o n 就完成了本 地转发。若没有找到具体的a c t i o n f o r w a r d ,就返回一个n u l l 。 ( 4 ) a c t i o n f o r m 一个应用系统的非持久性数据存储,是由a c t i o n f o r m 负责保持的。a c t i o n f o r m 的 主要功能就是为a c t i o n 的操作提供与客户表单相映射的数据( 如果在客户指定的情况 下,还包括对数据进行校验) 。a c t i o n f o r m 负责对系统数据状态的保持,而a c t i o n 则 负责根据业务逻辑的需要,对数据状态进行修改,在改变系统状态后,a c t i o n f o r m 则自 动的回写新的数据状态并保持。 对于每一个客户请求,s t r u t s 体系结构在处理a c t i o n f o r m 的时候,一般需要经历如 下几个步骤: ( 1 ) 检查a c t i o n 的映射,确定a c t i o n 中已经配置了对a c t i o n f o r m 的映射 ( 2 ) 根据n a m e 属性,查找f o r mb e a n 的配置信息 ( 3 ) 检查a c t i o n 的f o r m b e a n 的使用范围,确定在此范围下,是否已经有此f o r m b e a n 的实例 ( 4 ) 假如当前范围下,已经存在了此f o r mb e a n 的实例,而是对当前请求来说,是同 一种类型的话,那么就重用;否则,就重新构建一个f o r m b e a n 的实例 ( 5 ) f o r mb e a n 的r c s c t o 方法各调用 ( 6 ) 调用对应的s e t t e r 方法,对状态属性赋值 ( 7 ) 如果v a l i d a t e 的属性被设置为t r u e ,那么就调用f o r mb e a n 的v a l i d a t e 方法。如果 没有返回任何错误,控制器将a c t i o n f o r m 作为参数,传给a c t i o n 实例的e x e c u t e 方法并 执行。 s t r u t s 自带的a c t i o n s c r e l e t 相当于程序的m a i n 函数,也就是程序的入口点,它是框 架的主要控制器类,它接收所有传入的h t t p 请求。a c t i o n s e r v l e t 调用a c t i o n 实例的 e x e , c u i e 方法,并且传入一个a c t i o n f o r m 实例,如果这个实例在配置的范围内不存在, 大连理工大学专业学位硕士学位论文 则由框架自动创建一个新的实例。在e x c c l l t e 方法中完成一些操作后,返回一个 a c t i o n f o r w a r d 实例,它封装了一个转发的别名与u r l 之间的映射,使得开发人员不必 在程序中硬编码u r l 。s m u t s 框架负责完成j s p 页面与a c t i f o 皿之间的映射,只要 a c 曲n f o 皿提供了一系列的g e t t e r 和s e t t e r 方法。 在s m a s 框架中,配置文件具有相当重要性。s m a s 应用采用两个基于x m l 的配置 文件来配置,分别是w e b x m l 和s t r u t s - c o i i g x m l 文件。w e b x m l 文件主要用来配置 a c t i o n s e r v 奴以及标签库等。而s m n s - c o n f i g x m l 文件是s l n r s 专用的配置文件,定义了 数据源、缸d o n f o 咖、a c t i o n 、转发等配置信息。典型的s u u t s - c o n f i g x m l 配置文件如下: 元素用来配置应用所需要的数据源,数据源负责创建和特定的数据库 的连接。许多数据源采用连接池的机制实现。以便提高数据库访问

温馨提示

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

评论

0/150

提交评论