已阅读5页,还剩68页未读, 继续免费阅读
(计算机应用技术专业论文)基于struts、hibernate和spring的论坛系统研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖北工业大学硕士学位论文 摘要 随着j a v a 的普及和流行,j 2 e e 平台也在w e b 开发中发挥着越来越大的作 用。伴随其的各种新技术如雨后春笋般大量的涌出。为了更好的研究j 2 e e 体系架 构,本文采用了业界流行的s t r u t s 、h i b e r i l a t e 和s 硼n g 三种框架,实现了一个功 能强大的高性能论坛社区,从而在实践中更深入的理解j 2 e e 。 表现层是系统很重要的一层,采用m v c 框架的杰出代表s 仰t s 来实现表现层, 可以更清晰的把模型,控制器,视图分开,使页面更加简洁,便于后期的维护和 升级。s 虹1 l t s 的自定义标签十分有用,并能与s t n l t s 本身很好的融合,在实际应用 中因该尽可能多用。本文改写了s t m t s 的核心类a c t i o n s e n ,l e t ,并将同一模块的多 个a c t i o n 整合到一个改写后的a c t i o n 中,灵活的运用了s t r u t s 框架可扩展的特点。 持久层是在数据库和业务层中添加的一层。有了持久层,可以避免业务层直 接和数据库打交道,增强了系统的灵活性和可移植性。本文使用h i b 黜a t e 来实现 持久层。h i b e m a t e 是一个十分优秀的o r m 框架,用它来进行持久层的开发,可 以减少持久层的工作量。据统计相同程度的工作,用h i b e m a t e 来实现比直接用 j d b c 来实现要减少3 0 的工作量。同时本文利用h i b e r n a t e 的延迟加载功能提高 了系统性能,并使用h i b e n l a t e 的条件查询语句实现了一个通用性很强的分页方案。 s p r i n g 是用在业务层的框架。在本文实现的系统中所有的类都是由s p 订n g 的 i o c 容器管理的。这样做可以充分利用s p r i n g 依赖注入的特性,当修改类的属性时 不用直接修改类的代码,而只用在配置文件里面进行简单的设置。 s p r i n g 的声明式事务管理功能也运用在了文章最后的系统中,通过在x m l 文 件里面进行简单的配置,我们就可以获得强大的事务管理功能。 基于s p r i r 喀的a c e 舀被用来实现权限管理功能。a c e 西充分利用s 砸n g 的依赖 注入特性,具有很强的可扩展性 利用o s c a c h e 框架来实现系统的缓存功能,大大提高了系统性能。 s t n l t s 、h i b 黜a t e 和s 砸n g 三种框架可谓各有千秋,各自都有自己的优点,同 时也都有自己的不足,我们把它们整合在一起使用,可以更好的弥补它们各自的 不足,使得它们的优点能够更加充分的发挥出来。 关键词:s 仃u t s ,h i b e m a l e ,s 埘n 岛权限管理,缓存 湖北工业大学硕士学位论文 a b s t r a c t w i t ht l l ep o p u l 捌t yo fj a v a ,t h ep l a t f o n l lo fj 2 e ei sp l a y i n gam o r ea n dm o r e i m 口o n a n tr o l ei nt l l ep r o c e s so f w e bd e v e l o p m e i l t m e a i l w l l i l c ,al a r g en u 瑚【b e ro f n e w te c _ h n 0 1 0 垂e sc o m et ou sq u i c l ( 1 y f o rw ew a l l tt os m d yj 2 e em o r ed e 印l y ,w eu s ev e r y p o p u l a rt e c h n o l o 百e ss u c ha ss h t s 、h i b e l l l a t ea n ds p r i n gt od c v e l o pab b ss y s t 锄b y t h i s 口r o c e s s ,w ec a l ll ( i l o wj 2 e eb e t t c r v i e wp a r ti sv e r yi m p o r t a i l ti nt h es y s t 锄,w eu s es t m t st oi m p l e l i l e n ti t b yt l l i s w a y ,w ec a i ld i s t i n 印i s hv i e w 、m o d e la 1 1 dc o n t r 0 1 e rc l e a r l y m e a i l w l l i l e ,i tc a nm a l ( e h t i i l lp a g e sm o r ed e a n e r ,w h i d hw mb em u c hm o r ec o n v e n i e n tf o rm a i m e n 孤c ea n d u p 盯a d ei nt h e 如t l l r e t h et a g st h a ts t n l t sd e f i n ea r cv e r yu s e 血la n dc o m p a t i b l e 、 l ,i m s t m t s ,w es h o u l du s em e ma sm o r ca sp o s s i b l e i nt h i sp a p e r ,w er e w r i t et h ec o r ec l a s s a c t i o n s e r v e l e ti ns t m t sa n dc o m b i n ea c t i o n so ft h es 锄em o d u l ei l lj u s to n ea c t i o n , w h i c hd e p c n d so nt h en e x i b i l i t yo fs u t s h i b e m a t el a v e ri st h el a y e rb e t w e e nd a t a b a s ea n ds e r v i c el a y e r b e c a u s eo ft l l i s 1 a v e rw ec a ns t o ps e r v i c el a y e rc o n t a c t i n gd a t a b a s ed i r e c n y ,w h i c hm a k e st h es y s t 锄 m o r ef l e x i b l e h i b e m a t ei sav e r yg o o do n l lt 0 0 1 ,i fw ea p p l yi tf o fp m c e s s i n gd a t a ,w e c a l lr e d u c e3 0 w o r kc o m p a r e dw i t hu s i n gi d b cd i r e c t l y m e a i l w h i l e ,b yh i b e m a t ew e u s e1 a z yi n i t i a l j z a t i o nt om a k es ”t 锄m o r ce f ! e i c i e n ta n d 百v eag o o dp a 百n a t i o n i n l p l e m e n t a t i o n s p r i n gi su s e di nt h es e r v i c el a y e r i nm i ss y s t e m ,a l lt l l ed a s s e sa r em a i l a g c db y t h ei o c ( i n t e r f a c eo r i e n t e dc o n t m l ) c o n t a i n e ro fs p r i n w h i c hc a i lm a l ( eu s eo fi o c c h a r a c t c rm o r ce f 6 c i e n t l y i fw ew a n tt oc h a n 星r et h e 矗e l d so fac l a s s ,w ej u s tn e c d u p d a t i n gt h ec o n f i g u r ef i l e sb yu s i n gi o cc o n t a i n e r d e c l 撕n gt r a n s a c t i o n 向n c t i o no fs p r i n gi sa l s ou s e di nt 1 1 i ss y s t 锄w ec 锄咖o y t l l i sp o w e r 如l 向n c t i o nj u s tb yc o n f i g i | r i n gi n 出ex m lf i l e s a c e g iw h i c hb a s e so ns p r i n gi su s e dt oi m p l e m e l l ta c c e s sc o n t r 0 1 a c e 舀m a l ( e su s e o f i o cc h a r a c t e ro f s p r i n g s oi ti sv e r yn e x i b l e o s c a c h ei su s e dt oc a c h ei nt h i ss v s t e m w h i c hm d k e si tm o r ee f n c i e n t e a c ho fs p r i n g 、h i b e m a t ea n ds t n l t sh a si t so w na d v 卸t a g c sa n dd i s a d v a n t a g e s t h e yc a t lh c l pe a c ho 也e ra n db em o r eu s e 血lb yu s i n gt h e n lt o g e t h e r k e y l r o r d s :s t n l t s ,h i b e n l a t e ,s 研n g ,a c c e s sc o n 们l ,c a c h e i i 诹 j l 亡工繁火港 学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进行研究工 作所取得的研究成果。除文中已经标明引用的内容外,本论文不包含任何其他个 人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体, 均己在文中以明确方式标明。本声明的法律结果由本人承担。 学位论文作者签名:叶欣七 日期:2 0 0 8 年5 月2 3 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有 权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和 借阅。本人授权湖北工业大学可以将本学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 学位论文作者签名:叶欣 日期:0 8年5 月2 3 日 指导教师签名 湖北工业大学硕士学位论文 1 1 研究背景和意义 第1 章引言 当今社会是个信息化的社会,我们在日常工作学习中,每时每刻都需要大量 的信息,而上网也就成了获取信息最快和最直接的方式。为了方便人与人,人与 事之间的交流,大量的信息系统产生了,比如我们常见的b b s ,成绩管理,在线商 城等等。为了更好的解决企业的需要,j 2 e e 这个专门为企业级j a v a 应用量身定做 的平台产生了。在w e b 开发中,我们遵循j 2 e e 规则,可以更快更好的开发出我们 需要的系统。 但是随着应用的增多,也产生了许多问题,像混合在j s p 页面让人不知所谓 的业务逻辑内容和h t m l 语言,直接用j d b c 进行数据处理时繁冗和重复的过程, 仅仅使用e j b 的一小部分功能确偏偏要按其规则进行复杂和冗长的部署等等。 为了解决这些问题,使我们能够更好,更快,更有效率的开发出令人满意的 系统,各种新技术源源不断的产生,其中,代表性的几种技术就是s t r u t s , h i b e r n a t e 和s p r in g 。 使用s t r u t s ,我们就等于使用了m 、,c 的思想,将业务逻辑从表现层分开,使 页面的整洁程度大幅度提高,同时也方便了以后的维护。不仅如此,采用m v c 思 想设计的系统,条理清楚,逻辑分明,可扩展性强。比传统的j s p + j a v a b e a n 模式在各个方面都有质的提高。 使用h i b e r n a t e ,用面向对象的思想来处理数据,可以减轻我们在数据处理 方面的工作。据统计,同一项目中,用h i b e r n a t e 来代替传统的j d b c 进行数据处 理,可以节约我们大约百分之3 0 的工作量。并且在更换数据库的时候,如果我们 用了h i b e r n a t e ,几乎不用怎么修改数据处理部分,但是用j d b c 的话,就需要很 大的工作量。 用s p r i n g 可以让我们更好的把s t r u t s 和h i b e r n a t e 融合在一起,它的声 明式事务处理功能在大多数情况下也都能满足系统的需求,从而使我们可以避免 使用复杂的e j b 。 使用基于s p r i n g 的a c e g i 进行权限管理,避免了重复开发权限管理模块,并 且a c e g i 具有很强大的可扩展性,可以很方便的根据自己的需要对它进行修改。 在如今的信息时代,论坛社区已经成了一个几乎人人都会去的地方,在这个 湖北工业大学硕士学位论文 地方,人们可以自由的发表自己的观点,同时浏览别人的观点。那么如何开发出 一个高效,快速,可维护性和可扩展性都很好的社区信息系统昵? 本文采用上述三种技术,在末章实现了一个高性能论坛社区,展示了这三种 技术和在一起使用时的便利性和高效性,同时通过这个开发过程,也可以更好的 了解到它们的优点与不足以及彼此之间的互补,从而在今后的工作中能够用它们 的强大功能开发出更好的系统出来1 1 2 国内外研究现况 i n t e r n e t 的飞速发展大大改变了人们传统的生活,工作和学习方式,它己经成 为一种信息交流,技术合作及商业活动的工具,同时也己成为世界范围内运用最广 泛,最有效的信息获取和发布的媒体。 在这种形势下基于w e b 的应用开发成为了当前计算机应用开发的热点。比如 我们常说的p h p ,a s p ,j s p 等都是w e b 开发的主流技术。 j 2 阻平台的目标是定义一个标准,实现这个标准可以使企业在信息经济市场 竞争中保持很强的竞争力,遵循j 2 e e 标准开发出来的w e b 系统具有以下优势:增 快了开发速度,可扩展性好,组件模型带来简化的构架,容易与现有系统集成, 服务器,工具,组件的自由选择等。 正因为j 2 e e 有如此多的优点,所以它现在已经成为炙手可热的w e b 开发模式。 j 2 e e 有着多层框架,各个框架上又有各自代表的技术,本文所研究的s t r u t s ,h i b e r n a t e 和s p r i n g 就是各自框架领域的佼佼者。合理的运用这几个框架,就 能构建出足够复杂的高性能w e b 信息系统。 基于m v c 的开发模式实质上是一种j s p + s e r v l e t + j a v a b e a n 模式。这种设 计模式是一种联合使用j s p 与s e r v l e t 来提供动态内容服务的方法,使用它来分配 视图j s p 的显示页面,同时调用j a v a b e a n 模型来控制业务逻辑,实现了视图层与 模型和逻辑层的分离,使得整个系统结构清晰,可维护性和可扩展性都比传统的 j s p + j a v a b e a n 形式有较大提高。 1 2 1 本文的主要工作 利用s p r i n g ,h i b e r n a t e ,s t r u t s 框架,在j 2 e e 平台的基础上,开发出一个 灵活性好,可扩展性强,易于维护的多层框架的高性能社区信息系统。实现这个 系统有以下解决方案; l 利用s t r u t s 来实现表现层。传统的j s p + j a v a b e a n 的开发模式将模型,控 湖北工业大学硕士学位论文 制器,视图层全部混合在一起,可读性很差,逻辑性不强,并且难以维护。使用 s t r u t s 以后,将模型和控制器从视图层分出,大大简化了j s p 页面的同时,也使 得系统层次分明,灵活性增强。 2 利用h i b e r n a t e 来实现持久层。使用了h i b e r n a t e 之后,不用直接书写s q l 语句,简化了持久层开发的同时避免了在插入复杂数据时出错的可能性。同时增 强了系统的可移植性。在换数据库时候不需要再对持久层做出大的修改。 3 如果只使用h i b e r n a t e 和s t r u t s ,则这两个框架都是在孤军奋战,而s p r i n g 则提供了强大的业务支持,可以把h i b e r n a t e 和s t r u t s 很好的融合在一起。s p r i n g 本身的面向切面和依赖注入的思想也使得系统更加灵活。 4 利用s p r i n g 的a c e g j 框架1 2 1 的实现系统的权限管理模块。 5 用0 s c a c h e 实现系统缓存模块。 使用了多层框架以后,该论坛系统能够更加健壮,并且具有良好的可扩展性 和可维护性。而对系统进行缓存处理,则可以大大提高系统性能。 1 2 2 本文的创新点 本文用s t r u t s ,h i b e r n a t e 和s p r i n g 的多层框架实现一个高性能论坛社区, 充分利用了各个框架的优势并将其整合在一起,采取b s 构架,使得该论坛系统 能够达到最优化。该系统具有以下的创新点: 1 利用m v c 设计思想代替传统的j s p + j a v a b e a n 川设计模式,使得系统结构清 晰,逻辑层,视图层,模型层层次分明。对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 处 理,避免出现太多a c t i o n 。 2 利用h i b e r n a t e 来代替j d b c 进行持久层的开发,减轻了工作量的同时,增 强了系统的可移植性。利用h i b e r n a t e 的延迟加载提高系统性能,使用h i b e r n a t e 的条件查询语句生成一个通用的分页方法同时满足普通分页和查询后分页。 3 利用s p r i n g 进行类的管理和加载以及事务管理,充分发挥了依赖注入和面 向切面的优势。同时使用s p r i n g 的a c e g i 实现权限管理模块,大大减少了在权限 管理上的成本投入。 4 用多层框架实现整个系统,使系统具有较传统模式更强的可扩展性和可维 护性。 5 利用0 s c a c h e 实现系统缓存,从而大大提高系统性能。 实现后的系统能够长时间,稳定的运行。在进行扩展时不需要对系统的构架 进行很大的修改。 湖北工业大学硕士学位论文 第2 章j 2 e e 模型概述 2 1j a v a 平台概述 该论文的研究就是建在j a v a 平台基础上的,通过对j a v a 平台的介绍,打下 一个扎实的理论基础,为以后系统的具体实现做一个好的铺垫。 j a v a 自从问世以来,因为其开发的便利性,平台无关性,强大的网络设计功 能,简单的语法等特点,立刻得到了迅猛的普及和推广。在高校和i t 界,越来越 多的人开始研究和学习j a v a 。越来越多的企业也开始使用j a v a 来做他们需要的各 种软件系统。 从计算的结构来看,j a v a 主要分三大类:第一类是适用于创建服务器应用程 序和服务的j a v a 2 平台企业版,即j 2 e e ;第二类是适用于桌面系统的j a v a 2 平台 标准版桌面即j 2 s e 标准版:第三类就是适用于掌上电脑、移动设备等小型设备 的t 2 m e 版。 2 2j 2 e e 简介 j 2 e e 是s u n 公司定义的一个开发分布式企业级应用的规范。它实际上是在 j a v a 8 语言的基础上整合了s e r v l e t ,j s p ,e j b ,a p p l e t ,j a v a b e a n s ,j n d i ,j d b c 等 许多技术的新框架。 j 2 e e 定义了一些标准,根据这些标准,可以开发出多层的企业级系统。在此 同时j 2 e e 定义了许多组件,并为组件配套了许多完整的服务。 j 2 e e 的组成部分有以下些内容: l 企业级开发内容设计指南。 2 可操作视图参考工具。 3 第三方组件。 4 通用编程接口。 5 企业级j a v a 开发技术。 以上所有内容构成了一个完整的j 2 e e 体系结构。企业开发企业级系统时候, 需按照j 2 e e 定制的标准进行,以保证程序的通用性和规范性。 4 湖北工业大学硕士学位论文 2 3j 2 e e 的结构 j 2 e e 是一种多层的分布式体系结构,它的应用逻辑按功能可以划分为不同的 组件,各个组件之问根据自己所在的层的不同分布在不同的机器上,当然也可以 分布在同一个机器上。这样做克服了两层模式的弊端。 在传统的模式中客户端往往因为充当了过多的角色而显得很臃肿,在这种模 式中,第一次部署的时候很容易,但是在以后确很难升级和改进,扩展性也不理 想,而且常基于某种专有协议,这样做的后果就是使得重用业务逻辑和界面逻辑 非常困难。可重用性差就会导致我们会浪费很多精力在重复的过程上,这样的开 发过程会使人相当劳累和沮丧。 现在的j 2 e e 框架为不同的服务提供了独立的层,比如j 2 e e 典型的四层架构 就是由客户层,w 盼【9 1 表示层,业务逻辑层,企业信息系统层组成。 可是在实际的项目中,四层的划分往往不能很准确的指导开发,因为在业务 逻辑层与数据库交互的过程中往往需要对数据库调用接口,然后再做进一步的封 装。所以在业务逻辑层与数据库之间增加数据持久层位于数据库之上,用来隐藏 数据读取和操纵中的所有数据访问细节。我们经常使用的h i b e r n a t e 做的就是数 据持久层的工作,通过它我们可以将更多的精力集中在对客户有价值的业务逻辑 上,从而避免在数据处理细节浪费过多的精力。 以上的五层结构,可以用图2 1 来表示,从而能有个更直观的映像: 图2 1j 2 e e 架构图片 2 4j 2 e e 的多层w e b 框架及其介绍 j 2 e e 为多层w e b 应用程序提供了容器平台。容器实际上是指应用服务器提供 的特定功能的软件模块。用户开发的程序构件要在容器内运行,它们之间的关系 就好像计算机插件与主板的关系。 湖北工业大学硕士学位论文 j 2 e e 应用框架使得同样的程序构件在一个w e b 程序内能够根据它的部署方式 的不同实现所有的功能。 j 2 e e 的w e b 容器管理所有的j s p ,j s t l 和s e r v l e t 等w e b 构件运行,这一层对 应的是多层架构中的表示层。 应用客户端容器负责所有的w 髓程序在客户端构件的运行。 a p p l e t 容器可以堪称是特殊的应用客户端容器,它负责w e b 浏览器和j a v a 插 件上运行j a v aa p p l e t 程序。 每种容器内都使用相关的j a v aw e b 编程技术,这些技术包括三类: 1 j 2 e e 各种不同的应用构件,它们构成了应用的主体。 2 j 2 e e 平台提供的应用服务( 如j d b c ,j t s ,j n d i ) 。这些服务保证并促进构 件的良好运行。 3 j 2 e e 的应用通信技术( 如r m i ,j m s ,j “a m a i l ) 在平台底层实现机器和程 序之间的信息传递。 在构架w e b 应用程序时候,人们往往要考虑到很多因素,这使得开发一个系 统经常变得很复杂。采用j 2 e e 的多层架构,将程序分层化,从一定程度上降低了 开发系统的复杂度。我们可以用图2 2 表来表示出它们之间的关联关系: 表现层业务层持久层 数据库 s 奸u t s s p r i n g h i b e m a t e w 曲w o i k 2w a fi b a t i s t a p e s 竹 j d o 图2 2j 2 e e 多层框架图解 应用于w e b 表现层的框架及其对应的介绍 1 s t r u t s 是目前j a v a w e b 应用程序中应用最广泛的 i v c 开源框架。自从2 0 0 1 年发布以来,s t r u t s 作为j a v ee e 领域内的第一个m v c 框架,极大的简化 了基于j s p 和s e r v l e t 的w 阻开发,提供了统一的m v c 编程模型。虽然有 许多m v c 框架拥有更好的设计,但是s t r u t s 仍然拥有广泛的社区支持和 开发人员,这使的它仍然是m v c 框架的首选。 2 w e b w o r k 2 是一个非常简洁和优雅的w e b 框架,它的架构设计非常容易理解, 它构建在一个命令模式的x w o r k 框架之上,支持多种视图技术,并且它本 6 湖北工业大学硕士学位论文 身也提供一个丰富的标签库,能够非常容易的实现验证等功能。它最大的 特点就是用i o c 容器来管理所有的a c t i o n ,并且拥有拦截器等一系列类似 a o p 的概念,因此它的整体设计比s t r u t s 更优秀,也更容易扩展。 3 t a p e s t r y 是一个用面向组件的思想开发出来的m v c 框架。它将每个页面都 看成是用许多组件拼凑成的,并且提供许多通用的组件来方便开发,大大 提高了系统的可重用性。同时支持用户自定义组件。在开源社区里面不停 的产生着新的组件供开发者使用。t a p e s t r y 的学习曲线比较陡。一开始学 习难度相对较大,但上手以后可以使得开发速度有很大的提高。 应用于业务层的框架介绍: 1 简单来说,s p r i n 4 1 就是一个实现了a o p 功能的i o c 容器,虽然这种说法 不太全面,但确实概括了s p r i n g 框架的核心功能。整个s p r i n g 框架都是 轻量级的,和e j b 这种重量级的组件需要在重量级的e j b 容器中运行相比, s p r i n g 为普通的j a v a b e a n 提供了一个轻量级的容器,因此不需要全功能 的j a v ae e 服务器,s p r i n g 的依赖注入和面向切面的思想可以使得系统具 有良好的可扩展性和伸缩性。它对其他框架的良好支持也使得它能够将多 个框架糅合在一起,并发挥出比以前单个使用更好的功效。它的声明式事 务功能也使得人们在某些场合可以避免使用重量级的e j b 。 2 w a f 框架:w a f 是w e ba p p l a t i o nf r a m e w o r k 的简称,是s u n 公司在蓝 皮书里面提出的应用程序。它实现了m v c 和其他良好的设计模式。 应用于持久层的框架介绍: 1 h i b e r n a t e 是一个非常出色的0 r m 框架,不仅因为其强大的功能和优秀 的性能,还因为h i b e r n a t e 是完全开源并且免费的。h i b e r n a t e 不仅管 理j a v a 类到数据库表的映射,还提供了强大的基于对象的数据查询语 言( h q l ) ,可以大幅度减少访问数据库需要编写的j d b c 代码和繁琐的 s q l 语句。此外h i b e r n a t e 通过自己专门的查询语言最大程度降低了对 特定数据库厂商的依赖,同时又能够利用其他专有的s q l 语法优化性 能。事实上,h i b e r n a t e 只是对j d b c 一层较薄的封装。 2 i b a t i s 也是一个开源并且免费的o r m 框架,和h i b e r n a t e 这种全自动 化的框架相比,i b a t i s 只能算是一个半自动化的框架。因为所有的数 据库操作的s q l 语言都需要自己手写,虽然增加了一定的开发难度, 但是由于s q l 语句的操作掌握在程序员自己手里,可以实现s q l 的最 大优化,其速度和直接使用j d b c 相似。 3 j d o 即j a v ad a t a0 b j e c t 的缩写,是j a v a e e 平台的另一个持久化规范。 7 湖北工业大学硕士学位论文 与作为e j b 持久化机制的e n t i t yb e a n 只能运行在e j b 容器中相比, j d o 作为一种轻量级的持久化规范可以运用于任何的j a v a 环境。包括 j 2 s e 环境。 数据库的选择是自由的,小型的数据库,如免费的m y s q l 现在深受开源社区 的欢迎。还有在中小型企业中运用良好的s q l 系列等。当然,功能最强大的还是 要数甲骨文公司的o r a c l e 。如何选择数据库要看各自公司系统的需求。 湖北工业大学硕士学位论文 第3 章s t r u t s 框架研究与分析 3 1s t r u t s 实现m v c 的机制与工作流程 s t r u t s 【9 】框架是一个良好的m v c 模式的框架。本章将从各个角度对s t r u t s 框 架进行研究和分析,为以后的开发打下一个坚实的基础。 在s t r u t s 设计模式中,模型是由实现业务逻辑的j a v a b e a n 组件构成,控制 器是由a c t i o n s e r v l e t 和a c t i o n 来实现,视图由一组j s p 文件和s t r u t s 标签库 构成。再配合s t r u t s 的配置文件,则组成了一个完整的s t r u t s 框架“”“。组件, 控制器,j s p 文件相互配合,就可以充分实现s t r u t s 作为表现层的强大功能,s t r u t s 这个名字本身就有构架,框架的意思,也从一定程度上暗示着s t r u t s 在w e b 开发 中起着撑起整个系统框架的重要作用。下面的图3 1 直观的反映出了s t r u t s 的实 现机制: 图3 1s t r u t s 实现机制过程图 通过上图,我们可以清楚的看出s t r u t s 的工作流程和实现机制。当用户在浏 览器端发出请求以后,这个请求会被1 】| e b 服务器接受( 常见的w e b 服务器有 t o m c a t ,w e b s e r v i c e 等) 。后系统将建立一个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 r v l e t 接收到客户端的请求以后,根据s t r u t s 配置文件 中的内容,选择合适的a c t i o n 处理业务逻辑。这些a c t i o n 又会调用已经建立好 9 湖北工业大学硕士学位论文 的模型( 即j a v a b e a n ) ,处理好业务之后,向客户端反馈一个结果。则一次请求处 理的过程至此结束。用户如果还有需要,继续向客户端请求即可。 在上述途中,s t r u t s 的视图部分依然可以采用j s p 来实现,在这些j s p 文件 中没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标准的j s p 标签, 也可以是s t r u t s 自带的标签,这些在本文后面会详细的介绍。 模型部分表示的是应用程序的状念和业务逻辑,对于大型的应用程序,业务 逻辑通常采用e j b 或者其他的对象映射工具,比如说h i b e r n a t e ,i b a t i s 等来实现 模型组件。 控制器部分由s t r u t s 提供的控制器组件a c t i o n s e r v l e t 实现,它继承自 h t t p s e r v l e t ,并且重载了h t t p s e r v l e t 的d o g e t ( ) 和d o p o s t ( ) 方法,可以接受h t t p 响应,并且进行转发,同时还提供了映射功能。 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 调用它的 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 ,必须覆盖e x e c u t e ( ) 方法,否则会返回 一个n u l l 的信息。 整个s t r u t s 的工作流程可以用图3 2 来直观的表示: 图3 2s t r u t s 工作流程图 0 湖北工业大学硕士学位论文 3 2s t r u t s 组件分析和研究 3 2 1s t r u t s 控制器组件研究与分析 在m v c 设计模式中,控制器组件负责来自用户或者其他组件的输入,处理数 据,选择或者转发到下一个视图,根据数据处理结果可能还需要更新模型组件。 s t r u t s 设计模式的核心是一个m v c 风格的控制器,该控制器实际上是模型组件和 视图组件之间的桥梁,是整个w e b 应用程序的重要组成部分“”。 s t r u t s 的控制器组件主要完成以下任务: 1 接收用户请求。 2 依据用户的请求,s t r u t s 调用合适的模型组件来执行相应的业务逻辑。 3 获取业务逻辑执行结果并保存该结果。 4 根据当前状态以及业务逻辑执行的结果来选择合适的视图组件返回给用 户。 s t r u t s 的控制器组件主要包括a c t i o n s e r v l e t 类,r e q u e s t p r o c e s s o r 类和 a c t i o n 类。这几个类的分工和功能各不一样,组合在一起形成了s t r u t s 控制器组 件模块。 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 r v l e t 负责收到客户请求以后将请求发布到相应的业务 逻辑中去处理,再根据处理结果的不同返回到响应的j s p 页面进行显示。 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 e r v l e t 的i n i t ( ) 方法被调用,完成必要的初始化工作,下面是i n i t ( ) 方法完成的初始化流程的具体过程。 1 调用i n i t i n t e r n a l ( ) 方法,初始化s t r u t s 内在的消息自愿,这些用来把 消息错误输出到日志。 2 调用i n i t o t h e r ( ) 方法,从w e b x m l 文件加载控制着a c t i o n s e r v l e t 不同 行为的参数。 3 调用i n i t s e r v l e t ( ) 方法,从w e b 蛐l 文件中加载a c t i o n s e r v l e t 类的信 息。 4 调用i n i t m o d u l e c o n f i g ( ) 方法,加载并且初始化默认应用模板的s t r u t s 配置数据。 5 调用i n i t m o d u l e m e s s a g e r e s o u r c e s ( ) 方法,加载并且初始化默认应用模 板的s t r u t s 配置参数。 湖北工业大学硕士学位论文 6 调用i n i t m o d u l e d a t a s o u r c e s ( ) 方法,加载并且初始化予应用模块的数据 源。 加载并且初始化默认应用子模块的所有 8 默认子模块加载正确以后,如果还有其他子模块,那么就重复流程4 到流 程7 的过程。 在a c t i o n s e r v l e t 类中有个很重要的方法,即p r o c e s s ( ) 方法。当 a c t i o n s e r v l e t 通过d o g e t ( ) 或者d o p o s t ( ) 处理用户请求的时候,实际上都是调 用p r o c e s s ( ) 方法处理的。此方法的源代码如下: p r o t e c t e dv o i dp r o c e s s ( h t t p s e r v l e t r e q u e s tr e q u e s t , h t t p s e r v l e t r e s p o n s er e s p o n s e ) t h r o w si o e x c e p t i o n , s e r v l e t e x c e p t i o n m o d u l e u t i l s g e t i n s t a n c e ( ) s e l e c t m o d u l e ( r e q u e s t , g e t s e r v l e t c o n t e x t ( ) ) : m o d u l e c o n f i gc o n f i g = g e t m o d u l e c o n f i g ( r e q u e s t ) ; r e q u e s t p r o c e s s o rp r o c e s s o r = g e t p r o c e s s o r f o r m o d u l e ( c o n f i g ) ; i f ( p r o c e s s o r = = n u l l ) p r o c e s s o r = g e t r e q u e s t p r o c e s s o r ( c o n f i g ) : p r o c e s s o r p r o c e s s ( r e q u e s t ,r e s p o n s e ) : ) 在上述代码中,虽然p r o c e s s ( ) 方法的实现代码只有几行,但是其中原理还 是比较复杂的。首先,r e q u e s t 类的静态方法s e l e c t m o d u l e ( ) 被调用,并将当前 请求和w e b 应用程序的上下文环境s e r v l e t c o n t e x t 作为参数传递到该方法中去。 s e l e c t m o d u l e ( ) 方法的职责是选择一个应用程序模块来处理当前请求,应用程序 模块的选择是通过匹配请求对象的s e r v l e t 请求路径。 其次,g e t m o d u l e c o n f i g ( ) 方法取得当前应用模块的配置,最终调用 r e q u e s t p r o c e s s 类的p r o c e s s ( ) 方法处理的用户的请求。 r e q u e s t p r o c e s s 类中真正包含了s t r u t s 控制器在处理s e r v l e t 请求时候所遵 循的控制逻辑。 r e q u e s t p r o c e s s 类中的p r o c e s s ( ) 方法一次执行的处理步骤如下。 1 调用p r o c e s s m u l t i p a r t ( ) 方法,如果请求方式是g e t ,就直接返回原 始的h t t p s e r v l e t r e q u e s t 对象,如果h t t p 请求方式为p o s t ,就重新 1 2 法方)l s抽 唱 卯山甜h1 q用件调插 7 湖北工业大学硕士学位论文 包装i i t t p s e r v l e t r e q u e s t 对象。 2 调用p r o c e s s p a t h ( ) 方法,获取请求的u r i 路径,以便于选择合适的 a c t i o n 组件。 3 调用p r o c e s s l o c a l e ( ) 方法,读取用户请求中包含的1 0 c a l 信息, 然后将实例保存在s e s s i o n 中。 4 调用p r o c e s s c o n t e n t ( ) 方法,设置相应结果的文档类型和字符编码。 5 调用p r o c e s s n o c a c h e ( ) 方法,在响应结果中加入特定参数,防止页 面被存贮在客户端浏览器的缓存中。 6 调用p r o c e s s p r e p r o c e s s ( ) 方法,该方法不执行任何操作,开发人 员可以根据自己需要在这里加入一些必要的操作。 7 调用p r o c e s s m 印p i n g ( ) 方法,寻求和用户匹配的a c t i o n m a p p i n g , 如果没有就返回一个错误信息。 8 调用p r o c e s s r o l e s ( ) 方法,判断当前用户是否具备必备角色,如果 没有就返回一个错误信息。 9 调用p r o c e s s a c t i o n f o r ( ) ,判断是否配氲了a c t i o n f o r m ,如果没有, 则创建一个,并且保存在合适的范围内。 1 0 调用p r o c e s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版(2024)一年级数学上册期末复习专项突破卷(二)(含答案)
- 黑龙江省智研联盟2026届高三上学期1月份第一次联合考试生物试卷(含答案)
- 2025-2026学年安徽省县域高中合作共享联盟高三(上)期末数学试卷(A卷)(含答案)
- 化工企业三级安全培训课件
- 高层建筑施工技术要点
- 钢结构工程造价控制技术要点
- 2026江苏泰兴市急救中心招聘劳务派遣人员2人备考考试题库及答案解析
- 2026山东事业单位统考济宁嘉祥县招聘34人备考考试试题及答案解析
- 市场调研公司安全管理责任制度
- 2026北京第二外国语学院第一批非事业编制人员招聘5人笔试参考题库及答案解析
- 2024压力容器设计审批考试题库 判断题
- 客运春运安全培训
- 2025年太原铁路局招聘笔试参考题库含答案解析
- CHB-系列温控仪表说明书
- 《植物生产与环境》第二章:植物生产与光照
- 短链脂肪酸在肠内营养中的影响
- 春秋战国的服饰文化课件
- 单值-移动极差控制图(自动版)
- 《GNSS基础知识》课件
- 第7课-离子推进技术(推力器)
- 2023年新版新汉语水平考试五级HSK真题
评论
0/150
提交评论