




已阅读5页,还剩57页未读, 继续免费阅读
(计算机软件与理论专业论文)jakartastruts开源项目的研究与web应用.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 目前,越来越多的开发人员开始使用w e b 应用框架来进行软件开发。框架为w e b 应用程 序提供了预备的软件架构和相关的软件包,它极大地提高了开发人员开发的速度和效率。 j a k a r t a - s t r u t s 是a p a c h e 软件组织提供的一项开放源代码项目,从2 0 0 0 年5 月开始 项目启动以来,经过长达五年的发展,s w a t s 已经逐渐成长为一个稳定、成熟的框架,并且 占有了m v c 框架中最大的市场份额。s w a t s 是目前j a v aw c bm v c 框架中不争的王者。 随着s t r u t s 在业界的大量使用,也促使j 2 e e 技术进行改变,在新的j 2 e e 技术中的w e b 层的新框架j s f ( j a v a s e r v e r f a c e s ) 就是对s t r u t s 的思路进 i 政进的产物。 本文 j a k a r t a s t r u t s 开源项目的研究与w e b 应用即以此背景立题进行研究。 本文对s t r u t s 框架技术进行了研究,重点讨论在s w a t s 框架中m v c ( 模型一视图一控 制器) 的各个部分的实现及整合,包括s w a t s 的基本原理、模型组件、视图组件,控制器组 件、标签库和在应用程序中如何配置s t r u t s 框架等方面的技术。结合实际,对在仓单质押管 理信息系统项目中s t r u t s 框架技术的具体应用进行研究。本文研究的关键技术、创新点和 所做的工作如下: 1 s t r u t s 为j a v aw e b 应用程序的设计提供了m v c ( 模型一视图一控制器) 的一个框 架,它的核心是提供一个基于j a v a 标准技术j a v as e r v l e t s ,j a y a b e a r l s , r e s o u r c e b u n d l e s ,和x m l 以及不同的j a k a r t a 公共项目包的灵活的控制层。 2 本系统是一套以互联网为基础,结合w e b 技术,j a v a 技术、工作流技术,数据库 技术,将传统物流的仓储业务和与金融的质押贷款业务有机结合在一起的综合管理 信息系统。 3 本系统的主要功能包括:金融协议管理、货物评估管理、货物库存管理、银行贷款 管理、业务风险监控、综合查询分析和报表等。 4 本系统采用了b s 结构,系统的所有用户可以通过i n t e m e t 远程使用本系统,不受 时间和地点的限制,进行远程的业务操作和业务监控。 5 本系统基于s t r u t s 框架进行开发,并根据实际需求使用和扩展s w a t s 框架技术,基 于模型一视图一控制器( m o d e l - y i e r c o n t r o l l e r ,m 、,c ) 设计模式,将各个模块和对 象,封装在各个类中,使系统具有开放、安全、健壮、跨平台等优势。 6 本系统采用m i c r o s o f t 的s q ls e r v e r 2 0 0 0 数据库,在系统中使用香港志鸿科技公司 研发的c o m l i b 软件包来进行系统的持久化操作,使用通过数据访问对象( d a o ) 将c o m h b 访问数据库的语句封装起来,然后在其它层中统一调用,不仅提高了程 序的运行效率,而且还解决了一般常出现的园d a o 对象和s q l 语句紧密耦合在一 起而在大型项目中难以维护的缺点。另外在系统中还借助c o m l i b 提供的缓存机制 来提高数据的存取性能,从而提高了系统的整体性能。 7 本系统在以x m l 格式为主的外部配置文件中以声明的方式指定系统的许多配置, 而不是将它们硬编码到系统中,因此可以对系统进行各种更改而无需重新编译任何 代码,大大简化了开发过程。 s 本系统实现了对国际化的支持。 本系统已开发完成并在中国对外贸易运输( 集团) 总公司实际投入运行。 关键词:s w a t s ,框架,m v c ,模型组件,视图组件,控制器组件 中图分类号:t p 3 1 1 5 2 4 沥 ,:f十,r a b s t r a c t a tp r e s e n t ,m o r ea n dm o r ed e v e l o p m e n tp e r s o n n e le a l r yo nt h es o f t w a r ed e v e l o p m e n tb y u s i n gt h ew e ba p p l i c a t m nf r a m e t h ef r a m eh a sp r o v i d e dt h ep r e p a r a t i o ns o f t w a r eo v e r h e a d c o n s t r u c t i o na n dt h ec o r r e l a t i o ns o f h v a r cp a c k a g ef o r t h ew e ba p p h e a t i o np r o c e d u r e i t e n o r m o u s l ye n h a n c e dt h es p e e da n dt h ee f f i c i e n c yw h i c ht h ed e v e l o p m e n tp e r s o n n e ld e v e l o p e d j a k a r t a - s t r u t si sa ni t e mo f o p e ns o u r c ec o d ep r o j e c tw h i c hp r o v i d e db yt h ea p a c h es o f t w a r e o r g a n i z a t i o n i th a ss t s r t e ds i n c em a y , 2 0 0 0 ,a n dt h r o u i g hf i v ey e a r sd e v e l o p m e n t ,s t r u t sa l r e a d y g r a d u a lg r o w e das t a b l e ,m a t u r ef r a m e ,a n dh e l dt h eb i g g e s tm a r k e ts h a r ei nt h em v cf l a m e s t r u t si st h ek i n gi nt h ej a v aw e bm v cf r a m ep r e s e n t a l o n gw i t hs t r u t su s e di nf i e l dm a s s i v e ,u r g e st h ej 2 e et e c h n o l o g yt oc a r r yo nt h e c h a n g e ,t h en e wf r a m ej s f ( j a v a s e r v e r f a c e s ) i nt h ew e bl e v e li nn e wj 2 e et e c h n i c a li st h e p r o d u c tb ym a k e st h ei m p r o v e m e n t t ot h es t r u t sm e n t a l i t y t h i sa r t i c l e 一”j a k a r t a - s t r u t so p e n ss o u r c ei t e mg o a lr e s e a r c ha n dt h ew e ba p p h c a t i o n ” n a m e l ys e t su pt h et o p i cb yt h i sb a c k g r o u n dt oc o n d u c tt h er e s e a r c h t i l i sa r t a c l eh a sc o n d u c t e dt h er e s e a r c ht ot h es t r u t sf l a m et e c h n o l o g y , a n dt h em a i n d i s c u s s i o ni st h er e a l i z a t i o na n dt h ec o n f o r m t yo f e a c hp a r to f m v c ( m o d e l v i e w c o n t r o l l e r ) i ns t r u t sf r a m e ,w h i c hi n c l u d m gt h et e c h n o l o g yo ft h eb a s i cp r i n c i p l e ,t h em o d e lm o d u l e ,t h e v i e wm o d u l e ,t h ec o n t r o l l e rm o d u l eo ft h es t r u t sa n dh o wt h el a b e ls t o r e h o u s ea n dd i s p o s et h e s t r u t sf r a m ei nt h ea p p l i c a t i o np r o c e d u r e t h i sa r t i c l es t u d i e st h ee s s e n t i a lt e c h n o l o g y , i n n o v a t i o n a n dd ow o r ka sf o l l o w s : 1 s t r u t si saf l a r n ew h i c hh a sp r o v i d e dm v c ( m o d e l v i e w c o n t r o l l e nf o rj a v aw e b a p p l i c a t i o np r o c e d u r ed e s i g n i t sc o r ei sp r o v i d e sac o n t r o ll e v e lt h a tb a s e do nj a v as t a n d a r d t e c h n i c a l ( j a v as e r v l e t a , j a v a b e a u s ,r e s o u r c e b u n d l e s ) ,x m la n dd i f f e r e n tj a k a r t ap u b l i cp r o j e c t p a c k a g e 2 t l 讧ss y s t e mi sas y n t h e s i sm a n a g e m e n ti n f o r m a t i o ns y s t e mw h i c ht a k ei n t e r a c ta sa f o u n d a t i o n ,u n i f i e st h ew e bt e c h n o l o g y , t h ej a v at e c h n o l o g y , t h ew o r kf l o w st e c h n o l o 肼也c d a mb a n kt e c h n o l o g y , a n df l o w st h et r a d i t i o ns t o r e ss e r v i c ea n dp a w n sw i t ht h ef i n a n c el o a n b u s i n e s so r g a n i cs y n t h e s i si nt o g e t h e r 3 t h em a i nf u n c t i o n so f t h es y s t e mi n c l u d e s :f i n a n c i a la g r e e m e n tm a n a g e m e n t ,c a r g oa p p r a i s a l m a n a g e m e n t ,c a r g os t o c km a n a g e m e n t ,b a n kl o a nm a n a g e m e n t ,s e r v i c er i s km o n i t o r i n g , s y n t h e s i s i n q u i r ya n a l y s i sa n dr e p o r tf o r ma n ds oo n 4 t h i ss y s t e mh a su s e db ss t r u c t u r e a l lu s e r 5o ft h es y s t e mm a yu s et h i ss y s t e mt h r o u g h i n t e m e tl o n g - d i s t a n c ew i t h o u tl i m i t i n gb yt h et i m ea n dt h ep l a c e t h e yc a nc a r r yo nt h e l o n g - d i s t a n c es e r v i c eo p e r a t i o na n dt h e5 n v i c em o n i t o r i n g 5 t 1 1 i ss y s t e mc a r r i e so nt h ed e v e l o p m e n tb a s e do nt h e s t r u t sf r a m e a n du s e sa n de x p a n d st h e s t r u t sf r a m et e c h n o l o g ya c c o r d i n gt ot h ea c t u a ld e m a n d ,b a s e do nt h em o d e l v i e wa i r - o p e r a t e d c o n t r o l l e r ( m o d e l - v i e w - c o n t r o l l e r , m v c ) p a t t e r n ,s e a l se a c hm o d u l ea n do b j e c ti ne a c hk i n d , e n a b l et h es y s t e mt oh a v et h eo p e n i n g ,t h es e c u r i t y , i sv i g o r o u sa n dh e a l t h y , s u p e r i o r i t ya n d5 0o n 6 1 1 1 i ss y s t e mu s e st h em i c r o s o f ts q ls e r v e r 2 0 0 0d a t a b a s e t k s e st h ec o m l i bs o r w a r ep a c k a g e w h i c hm a d eb yt h eh o n gk o n ge x c e lt e c h n o l o g yc o m p a n yt oc a n yo nt h el a s t i n go p e r a t i o no f t h es y s t e m ,a n du s e st h r o u 【g ht h ed a t aa c c e s s i n go b ) e c t ( d a o ) s e a l st h es e n t e n c et h a tc o m l i bv i s i t d a t a b a s e ,t h e nu n i f i e si no t h e ru a u s f e r s t h i sw a yi sn o to n l ye n h a n c e dt h eo p e r a t i n ge f f i c i e n c yo f t h ep r o c e d u r e ,b u ta l s os o l v e dt h es h o r t c o m i n gw h i c hb e c a u s eo ft h ed a o o b j e c ta n dt h es q l s e n t e n c eu g h tb o n di nt o g e t h e ro f t e na p p e a r e dg e n e r a l l y m o r e o v e ra l s od r a w ss u p p o r tf r o mt h e b u f i e fm e c h a n i s mi nt h es y s t e mw h i c hc o m l i bp r o v i d e st oe 。u h a n c et h ed a t at h ed e p o s i ta n d w i t h d r a w a lp e r f o r m a n c e t h u se n h a n c e dt h es y s t e mo v e r a l lp e r f o r m a n c e 7 t h i ss y s t e md e s i g n a t e dm a n yd i s p o s i t i o n sb ys t a t m gi ne x t e r i o rd i s p o s t t i o nd o c u m e n tb yt h e x m lf o r mp r i m a r i l y , w h i c hd o e s n tc o d ei nt h es y s t e md t r e c t l y s ot h eu s e p 3c a nc a r r yo i le a c h k m do fc h a n g et ot h es y s t e mw i t h o u tt r a n s l a t ea n yc o d ea g a i n i ts i m p l i f i e dt h ep e r f o r m a n c e h i s t o r yg r e a t l y 8 t h t ss y s t e ms u p p o r t st h em t e r n a t i o n a h z a t i n n t h i ss y s t e mh a sd e v e l o p e dc o m p l e t e l ya n dh a si n v e s t e da c t u a l l yi nt h em a i nc o r p o r a t i o no ft h e c h i n e s et of o r e i g nt r a d et r a n s p o r t a t i o n k e yw o r d s :s t r u t s ,f l a m e ,m v c ,m o d e lm o d u l e ,v i e wm o d u l e ,c o n t r o l l e rm o d u l e 6 第一章s t r u t s 的发展历程 1 1s t r u t s 的由来与命名 s u n 公司的j a v a2e n t e r p r i s ee d i t i o n ( j 2 e e ) 平台已经日趋成熟,并得到广泛应用,在 j 2 e e 技术中发展最迅猛的当数j a v a s e r v e rp a g e ( j s p ) 技术。几乎所有的基于j a v a 的w e b 应 用程序都使用j s p ,一些免费,开放源代码的j s p s e r v l e t 的容器的出现,更进一步推动了j s p 技术的发展。随着j s p 技术的成熟,越来越多的开发人员开始使用w e b 应用框架来进行开发。 框架为w e b 应用程序提供了预备的软件架构和相关的软件包,它极大地提高了开发人员开发 的速度和效率。 j a k a r t a s t r u t s 是a p a c h e 软件组织提供的一项开放源代码项目,它从2 0 0 0 年5 月开始启 动,直到2 0 0 1 年6 月,1 o 版本发布。目前发布的最新版本是1 2 6 版本 s t r u t s 框架的主要架构设计和开发者是c r a i gr m c c l a n a h a n c r a i g 同时也是t o m c a t4 的主要架构师、j a v a w e b s e r v i c e s 开发包的主要架构师和实现者。他现在是s u n 的j a v a s e r v e r f a c e s ( j s r - 1 2 7 ) 以及j 2 e e 平台的w e b 层架构的规范领导。 s t r u t s 在a p a c h e 软件许可 a s f ,l i c e n s e 下对公众是免费的。使用此软件没有任何 获得和再现成本。不象其他一些开源许可,a p a c h e 软件许可对商业用途是友好的。使用者 可以在他们的商业项目中使用s t r u t s ,并自由分发s t r u t s 库。也可以将s t r u t s 组件集成到 他们的框架中,就像是他们自己编写的一样。 s t r u t s 这个名字来源于在建筑和旧式飞机上使用的支撑金属架,它为j a v a w e b 应用程序 的设计提供了m v c ( 模型一视图一控制器) 的一个框架,使得开发人员可以把精力集中在如 何解决实际业务问题上,简化了开发过程,提高了开发效率。s t r u t s 框架的核心是为了提供 一个基于j a v a 标准技术j a v as e r v l e t s ,j a v a b e a n s ,r e s o u r c e b u n d l e s ,和瑚l 以及不同的 j a k a r t a 公共项目包的灵活的控制层。 s t r u t s 采用m v c 模式,能够很好地帮助j a v a 开发者利用j 2 e e 开发w e b 应用。和其它的j a v a 架构一样,s t r u t s 也是面向对象设计,将m 1 ,c 模式分离显示逻辑和业务逻辑的能力发挥得 淋漓尽致。 1 2 应用框架 框架( f r a m e w o r k ) 是可重用的,半完成的应用程序,可以通过对其定制来生成一个客 户需要的真正的应用程序。与人一样,应用程序之间的相似性要远远多于其差异性应用程 序都是运行在相同的机器上,期望从相同的设备输入信息,输出到相同的显示设备,并且存 储数据到相同的硬盘上开发传统桌面应用程序的开发人员习惯于使用一些开发工具和开发 环境并利用应用程序之间的这些相似性来加快开发过程。基于应用程序的相似性应用框架可 以为开发人员提供可重用的模块,程序员可以使用这些模块来构造自己产品 框架给程序员提供了一系列的框架模块,这些模块具有如下特性: 它们都是为实践证明在应用程序上可以工作得很好的模块; 它们随时可以在下一个项目中使用: 它们可以被同一组织的其他团队使用。 1 3 基础知识 有一些基础知识是使用s t r u t s 来开发应用程序的开发人员必须掌握的。这些知识并不是 只针对s t r u t s 的,而是对所有j a v aw e b 应用都要使用的。作为一个s t r u t s 开发者并不需要 知晓所有的相关知识,但是掌握这些基础知识有助于开发者在遇到问题的时候设计出创造性 7 的解决方案。 t 3 1 超文本传输协议( h t t p ) 当计算机间对话时,需要遵循一个正式的协议。这个协议定义了数据是如何传输,以及 它们到达后如何进行解码。w e b 应用程序就是使用h t t p 协议在运行浏览器的计算机和运行的 服务器的程序问传输数据。 许多服务器应用程序使用h t t p 之外的其他协议。其中一些协议会在计算机之间维护一个 持久性的的连接,应用服务器可以清楚的知道是谁连接上来,而且何时中断连接。因为他们 知道每一个连接的状态,以及每一个使用它的用户的身份。这些协议被称为有状态协议。 与之相应的是h t t p 是一个无状态协议。一个h t t p 服务器可以接受来自于各种客户的各 种请求,并提供各种响应,即使是服务器拒绝该连接请求,服务器也会返回某个响应值。因 为不用建立和维护连接,无状态协议可以处理大量的请求。这也是i n t e r n e t 可以扩展到很多 计算机的原因。 另外一个使t t t t p 成为通用标准的原因是其简单性。一个h t t p 请求看起来就像一个一般 的文本文档。这使应用程序可以很容易创建h t t p 请求。用户甚至可以通过t e l n e t 这样的工具 来手动传递一个h t t p 请求。当h t t p 响应返回时,该响应也是一个开发者可以直接阅读的文 本文档。 在 m p 的请求中,第一行中包含了请求的方法名,其后是请求的来源地址和h t t p 版本号。 在第一行后是啪1 p 请求头,可以没有也可以有多个。h t t p 请求头向服务器提供额外的信息。 可以包括浏览器的种类和版本,可接受的文档类型,浏览器的c o o k i e s 等等。尽管定义了七 种请求方法,但其中g e t 和p o s t 是用得最多的。 一旦服务器接收到请求,它就会产生一个h t t p 响应。响应的第一行称为状态行,它包含 了h t t p 协议的版本,一个以数字表示的状态字以及对该状态的简单描述。在状态行后,服务 器将返回一个类似于h t t p 请求头的h t t p 响应头 如上所述,h t t p 并不在请求间保持状态信息。服务器会处理每一请求,发出响应,然 后再处理下一请求。 尽管简单和有效,但无状态协议对于那些需要跟踪用户状态的应用程序而言却有些显得 无能为力。c o o k i e s 和u r l 重定向是两个用来在不同的请求问跟踪用户状态的常用方法。 c o o k i e 是一种存储于用户的计算机中的特殊信息包。u r l 重定向是在页面地址中存放一个 特殊的标记,3 a v a 服务器可以用它来跟踪用户的状态。这两种方法对于应用程序来说都不 是透明的,不论使用哪一个都意味着在开发时需要额外的编码。就其本身而言,标准的盯t p w e b 服务器并不传输动态内容。它主要是使用h t t p 请求来定位h t m l 文件,然后将其内容返回 给请求者,浏览器会处理并显示该h t m l 文件的内容。h n i l 页面通常会包含一些到其他页面的 超文本连接,也可以显示其他一些内容比如图像和视频等等。用户点击连接将产生另一个请 求,就开始一个新的请求处理过程 标准的w e b 服务器可以很方便地处理静态文本以及图像文件,但在处理动态内容时则需 要一些额外的帮助手段。 1 3 2 公共网关接口( c g i ) 最先被普遍用来产生动态内容的标准技术是公共网关接口( c 6 i ) 技术。c 6 i 使用标准的 操作系统提供的特性,如环境变量和标准输入输出,在w e b j 强务器和服务器上运行的其它应 用程序之间建立联系。服务器上的其他应用程序可以通过分析由w e b 服务器发送给它们的请 求来创建客户化的内容。 当w e b 服务器接收到一个要被c g i 程序处理的请求时,它便从请求中提取出相应的信息 来,应用程序利用这些信息通过c g i 程序处理来产生动态内容,并将处理后的结果返回给w e b 服务器,w e b 服务器再将该响应输出到浏览器。 8 c g i 定义了一系列的规范来定义其信息传送格式。类似丁h t t p 一样,c g i 是相当灵活和 易于实现的,并且已经有大量现成的c g i 程序在使用。 c g i 的主要缺点是它必须为每个请求运行一个实例。这是一个相对昂贵的处理方法,对 大型站点来说,当请求过多时,有可能使站点瘫痪。c g i 程序的另一个缺点是平台依赖性, 在一个平台上能运行的程序并不一定在其它平台上能运行。 1 3 3 j a v as e r v l e t s u n 公司的j a v as e r v l e t 平台正好解决了c g i 程序的两个主要缺点。首先,s e r v l e t 比 常规c g i 程序提供更好的性能和资源利用。其次,。次编写,处处运行的j a v a 特性意味着 s e r v i e t 在具有j a v a 虚拟机的任意操作系统上运行。 一个s e r v l e t 看起来就好像是一个微小的w e b 服务器。它接受请求并产生响应。但和常规 w e b 服务器不同,s e r v l e ta p i 是专门设计用来帮助j a v a 开发人员创建可以返回动态内容 的应用程序的。 s e r v l e t 就像其他j a v a 对象一样,本身是遍译成字节码的j a v a 类。所以尽管s e r v l e t 可 i 以通过丰富的a p i 来使用和h t t p 相关的服务,但是它本质上还是一个j a v a 对象,因此它可以 在服务器中运行,并可使用j a v a 的其它特性 为了使常:规w e b 服务器能访问s e r v l e t ,s e r v l e t 是在一个w e b 容器之中运行的。而运行 s e r v l e t 的容器就布署在w e b 服务器上。每个s e r v l e t 都可以定义其处理的u r l 模式。当到来 的一个h t t p 请求符合已注册的u r l 模式时,w e b 服务器将该请求传递给s e r v l e t 容器,该容器 会调用相应的s e r v l e t 来处理该请求; 与c g i 程序不一样,并不是每个对请求都会创建一个新的s e r v l e t 。一旦容器实例化一个 s e r v l e t ,对于要求该e r v l e t 处理的每一请求,它就会为每个新的请求创建一个新的线程。 j a v a 线程的使用比使用c g i 程序的服务器处理开销小多了。 - - 旦s e r v l e t 被创建,使用它处理更多的请求仅带来很小的额外开销。s e r v l e t 开发厶 员可以使用i n i t 0 方法来保持对昂贵资源的引用,比如到数据库或者e j b h o m e 接口的连接, 以便它们可以在不同的请求间进行共享。这使得获得这些资源要只需耗费极少的时间。 由于s e r v l e t 采用多线程,所以其开发者就必须要时刻保证该s e r v l e t 是线程安全的 1 3 4j s p一 虽然s e r v l e t s 对c g i 而言是巨大的进步,但它也不是万能的。在使用s e r v l e t 时,开发 人员不得不使用大量的p r i n t l n 语句来生成h t m l 像以下代码: o u t p r i n t l n ( o n el i n eo fn t i d l ) ; o u t p r i n t l n ( a n o t h e rl i n eo fh t m l ( p ) : 在用来产生h t t p 响应的s e r v l e t 中是普遍存在的。尽管也有一些类库有助于开发人员产 生h t h l 字符串,但随着应用越来越复杂,j a v a 开发人员的大部分精力将陷入到h t m l 页面设 计中去。 与此同时,如果可能的话,大多数项目经理更喜欢将团队以完成的特定目标的不同而分 成不同的小组h t m l 设计人员可以处理表现层的工作,而j a v a 工程师则专注于业务逻辑。 单独使用s e r v l e t 鼓励混合标记和业务逻辑,将很难按开发目标的不同来区分团队人员的工 作 为解决该问题,s u n 公司提出了一个结合脚本和模板技术到一个组件中的服务器页面技 术。为创建j s p 页面,开发者按同样创建h n i l 页面的方式创建页面,使用相同的h t m l 语法 为将动态内容引入页面,开发人员可以将脚本元素置入页面之中脚本元素是一些标记,封 装了可以被j s p 识别的逻辑。可以在j g 顷面中很容易的识别出脚本元素,它们被封装在一对 ( 和 标记中。例如,要显示页面的最后修改日期,开发人员可以将以下代码放入页面: t h i sp a g ew a sa c c e s s e da t ( = n e wd a t e ( ) 9 j s p 定义了有三种不同的脚本元素: 表达式,脚本和卢明。如表1 1 所示: 表格1 1j s p 脚本元素 元素用途 表达封装在 之中的j a v a 代码,用来计算j a v a 语句的值,并将结果插入到输 式出结果之中 脚本封装在 之中的j a v a 代码,常用来创建动态内容 , 声明封装在 之中的j a v a 代码,常用来在s e r v l e t 中加入代码 为区分j s p 页面,文件的扩展名为j s p 。当一个客户请求j s p 页面时,容器将页面翻译 成s e r v l e t 源代码文件,并将它编译成j a v a 类文件一就象开发者写的s e r v l e t 文件一样。在 运行时,容器也能检测j s p 文件和相应的类文件的最后更新时间。如果j s p 文件自上次编译 以来修改了,容器将重新翻译和编译j s p 文件。 项目经理现在可以将表现层分派给h t m l 开发人员,将业务逻辑工作分派给j a v a 开发人员了 重要的是要记住,j s p 页面事实上就是一个s e r v l e t 。在s e r v l e t 中可以做的,也可以在j s p 中做到。 1 3 5j s p 标签 4 ” 脚本元素仅是两种产生动态内容的方式之一。尽管脚本语言快速、容易掌握、并且功能 强大,但这项技术要求开发者在h t m l 中混合j a v 8 代码。而混合业务逻辑到j s p 页面中将导致 应用程序难以维护和重用。一个可选的方案是使用j s p 标签( t a g s ) 。j s p 标签可以和h t m l 标签混合使用,就象它们是普通的h t 札标签一样。一个j s p 标签可以代表许多句j a v a 语 句,但是开发者只需要了解如何在页面中插入标签即可。那引起对应的源代码和逻辑都隐藏 在j a v a 类文件之中如果要在其他页面中使用同一代码,只需要在该页面中重新插入相同的 标签即可。如果标签代表的代码改变了,所有的标签都将使用更新的版本。而使用标签的j s p 页面并不需要进行更新。 j s p 标签比脚本提供了更好的可重用性,也更易被页面设计者使用,因为它们与h t l l l 标签很相似。 目前已有大量的现成的j s p 标签库( t a g sl i b r a r i e s ) 可用。它们可以完成很多有用的 功能其中之一就是新的j s p 标准标签库u s t l ) 这是一个新的标签库,提供丰富的可重用 的j s p 标签。 j s p 也是s t r u t s 开发者的工具箱中的一部分。大多数的s t r u t s 开发者使用j s p 和定制 标记来创建应用的动态内容。 1 3 6j a v a b e a n j a v a b e a n 是一种遵从一定的设计模式要求的j a v a 类,这些设计模式使得j a v a b e a n 很容 易与开发工具和其它组件一起使用。j a v a b e a n 是使用j a v a 语言编写的可重用组件j a v a b e a n 类必须是具体的和公有的,同时应该具有一个无参数的构造方法j a v a b e a n 通过提供一系列 符合某种设计模式的公共方法来对其属性进行存取而其它j a v a 类可以通过反射机制来发 现和操作这些j a v a b e a n 属性 j a v a b e a n 设计模式提供两种类型的方式来访f 司b e a n 的属性:访问器( a c c e s s o r ) 用来 读j a v a b e a n 的属性,修改器( m u t a t o r ) 用来改变j a v a b e a n 的属性。 m u t a t o r 通常以小写的s e t 前缀开始,后跟属性名属性名的第一个字母必须大写因 为m u t a t o r 仅改变属性的值,而不需返回属性值,所以返回值通常是v o i d ,。对于简单数据 类型的属性而言,因为m u t a t o r 仅仅改变属性的值,而不返回它们,所以在其方法内只有一 个参数,该参数可以是任何数据类型。m u t a t o r 也可根据其前缀称为设置器( s e t t e r s ) 。 o 例如,对d o u b l e 类甲的属性w e i g h t 的m u t a t o r 方法体可能是: p u b l i cv o i ds e t w e i g h t ( d o u b l ew e i g h t ) 相似的设计模式也用于a c c e s s o r 方法的创建。a c c e s s o r 通常以小写的g e t ,为前缀,后跟 属眭名。属性名的第一个字母必须大写。返回值必须匹配相应的修改器方法的参数。简单数 据类型的属性的a c c e s s o r 在其方法体中不能接受参数。同样,访问器a c c e s s o r 也经常称为 获取器g e t t e r 。 属性w e i g h t 的访问器方法体可能是: p u b l i cd o u b l eg e t w e i g h t0 如果访问器返回一个逻辑值,这种情况下有个变体模式不使用小写的g e t 作前缀,逻 辑属性的访问器可以使用小写的i s 前缀,后跟属性名。属性名的首字母必须大写返回值肯 定是逻辑值,不管是b o o l e a n 还是b o o l e a n 。逻辑访问器在其方法体中不能接受参数。 o n 属性的逻辑访目器的方法体可能是: p u b l i cb o o l e a ni s o n ( ) i 在使用j a v a b e a n 时,规范的方法体扮演了极为重要的角色。其他组件可以使用j a v a 的 反射a p i 通过查找前缀为s e t 、i s 和g e t 的方法来访f 司j a v a b e a n 的属性。如果一个组件在一个 j a v a b e a n 中找到一个这样的方法,它就知道这个方法可以用来访问或者改变j a v a b e a n 的属 性。 s u n 公司一开始只想在g u i 组件中使用j a v a b e a n ,但它们已经用在j a v a 开发的各个方 面。包括w e b 应用。s u n 的工程师开发了j s p 标签的扩展类时,他们设计这些类可以和 j a v a b e a n s 协调工作。页面上的动态数据可以当作一个j a v a b e a n 来传递,j s p 标签可以使用 b e a n 的属性来定制页面的输出内容。 1 4 s t r u t s 的体系结构与工作原理 m v c i p m o d e l - v i e w - c o n t r o l l e r 的缩写,是一种常用的设计模式。m v c 减弱了业务逻辑接 口和数据接口之间的耦合,以及让视图层更富于变化。m v c 的工作原理,如图1 1 所示: 图1 1 s t r u t s 是m v c 的一种实现,它将s e r v l e t 和j s p 标记( 属于j 2 e e 规范) 用作实现的 一部分。s t r u t s 继承t m v c 的各项特性,并根据j 2 e e 的特点,做了相应的变化与扩展。s t r u t s 的体系结构与工作原理如图1 2 所示: 图1 2 从图1 2 中可以知道,s t r u t s 的体系结构包括模型( m o d e l ) ,视图( v i e w ) 和控制器 ( c o n t r o l l e r ) 三部分。 下面从m v c 角度来看看s t r u t s 的体系结构( m o d e l2 ) 与工作原理: 1 ) 模型( m o d e l ) 在s t r u t s 的体系结构中,模型分为两个部分:系统的内部状态和可以改变状态的操作( 事 务逻辑) 。内部状态通常由一组a c t i n f o r mb e a n 表示。根据设计或应用程序复杂度的不同, 这些b e a n 可以是自包含的并具有持续的状态,或只在需要时才获得数据( 从某个数据库) 大型应用程序通常在方法内部封装事务逻辑( 操作) ,这些方法可以被拥有状态信息的b e a n 调用。比如购物车b e a n ,它拥有用户购买商品的信息,可能还有c h e c k o u t o 方法用来检查用 户的信用卡,并向仓库发定货信息小型程序中,操作可能会被内嵌在a c t i o n 类,它是s t r u t s 框架中控制器角色的一部分。当逻辑简单时这个方法很适合。建议用户将事务逻辑( 要做 什么) 与a c t i o n 类所扮演的角色( 决定做什么) 分开 2 ) 视图( v i e w ) 视图主要由j s p 建立,s t r u t s 包含扩展自定义标签库( t a g l i b ) ,可以简化创建完全国 际化的用户界面的过程。目前的标签库包括:b e a n 标签库、h t m l 标签库,l o g i c 标签库、n e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论