




已阅读5页,还剩51页未读, 继续免费阅读
(电工理论与新技术专业论文)基于struts和设计模式的个性化网上教学论坛.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
w e bt e a c h i n gi sn o to n l yt h ei m p o r t a n tc o n t e n to fe d u c a t i o n a lr e f o r m ,b u t a l s oab a s i cm e a b so fe d u c a t i o n a li n f o t m a f i o n i z a t i o n w i t ht h ed e v e l o p m e n to ft h e c a m p u s si n f o r m a t i o n i z a t i o n , t h ec a m p u sn e ts c a l ee x p a n d su n c e a s i n g l y i tw i l l p l a yt h em o r oa n dm o r ev i t a lr o l et or e a l i t 弛e d u c a t i o n a lr e $ o u r c 9 8s h a r i n ga n d e d u c a t i o na d m i n i s t r a t i o nm o d e r n i z a t i o n , a n dt oe n h a n c et h el e v e lo fe d u c a t i o n a l m o d e r n i z a t i o na n dt o t a ls t r e n g t ho fas c h 0 0 1 t h ew e b t e a c h i n gf o r u mh a sm a n y a d v a n t a g e s , s u c h a ss h a r e d r o s o u l t c c s ,u n l i m i t e ds p a g e a n d t i m e , e a s y c o o p e r a t i o n i ti sab e n e f i c i a ls u p p l e m e n tt ot h et r a d i t i o ne d u c a t i o n a lm o d e i nt h en u m e r o u st e c h n o l o g i e so fd e v e l o p i n gw e b s i t e s , j a v at e c h n o l o g yg i v e s d e v e l o p e r se n o l m o u se n c o u r a g e m e n t s t r u t sm a k e sg o o du s oo fj a v as e r v l e t s , j a v as e r v e r p a g e s , c u s t o m i z i n gl a b e la n dm e s s a g er e s o u r 嘲a n di n t e g r a t et h e m i nau n i f i e df r a m e i ti st h em o s tc l a s s i c a lf l a m eo nm v c p a t t e r nb a s e dw e b e s p e 商a l l yi nt h em e g ap r o j e c t , s t r u t se m b o d i e st h es t r o n gf u n c t i o na n do b v i o u s s u p e r i o r i t y ,i ti st h ef i r s t - s e l e c t i o no fa l o to fl a r g e - s c a l ee n t e r p r i s e s a n dd e s i g n p a t t e r n sd e s c r i b et h ep r o b l e m st h a t a r eh a p p e n i n ga r o u n d u sr e p e a t e d l y i n g c o n s t a n t l y , a n dt h ec o r eo ft h es o l u t i o no ft h e s ep r o b l e m i nt h i sw a y , w e 啪u s c t h i ss c h e m ea g a i na n da g a i na n dn e e d n tw o r kr e p e a t e d l y t h i sp a p e ri so nt h ef o u n d a t i o no fd e v e l o p m e n to ft h et e a c h i n gf o m mw h i c h i si n d i v i d u a l i z e dv e r ym u c h , a n dd e s i g n se n o r m o u sa d v a n t a g ei ns u c ha s p e c t sa s m a i n t a i n a b i l i t y ,r e u s a b i l i t y ,e x t e n s i b i l i t yo fw e bs y s t e mt h a tt h em o d e b u i l du p w i t hs t r u t si nd i s c u s s i o n t h ea r t i c l eh a sc o m b i n e dt h ec o d ee m b o d i m e n ta n d e x p l a i n e ds e v e r a lk i n d so fi m p o r t a n td e s i g nm o d e su s e di nt h i sp r o j e c ta tf i r s t , t h e nd i s c u s s e d t h r e e l a y e r s o f p a c k a g e s o f o p e r a t i o n p r i n c i p l e a n d m v c o f s t r u t s , i n t r o d u c e dt h er e a l i z a t i o nd e t a i lo ft h eo n l i n et e a c h i n gf o r u mf i n a l l y , p r o p o s et h e t h r e ei n n o v a t i o nf a i r l yd e t a i l e d l y , t h er e s u l to np r o b a t i o no ft h i ss y s t e ms h o w s ,t h i ss y s t e m a t i cf u n c t i o ni s b e t t e r , p r a c t i c a b i l i t yi ss t r o n g , t h em a i n t a i n a b i l i t y r e s u a b i l i t y , e x t e n s i b i l i t yi s r e l a t i v e l yh i g h s oi tw i l lp r o v i d ec o n v e n i e n c ef o rm a i n t a i n i n ga n de x p a n d i n g ,a n d b e c o m eab e n e f i c i a ls u p p l e m e n tt ot r a d i t i o n a lt e a c h i n gm o d ea f t e r w a r d s k e yw o r d s :s t r u t s ,d e s i g np a t t e r n , w e bt e a c h i n gf o r u m ,p e r s o n a l i z e d 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得的 研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经发表 或撰写过的研究成果,也不包含为获得鑫生盘茎或其他教育机构的学位或证 书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中 作了明确的说明并表示了谢意。 学位论文作者签名:庄翕 类的适配器涉及角色有 1 目标( t a r g e t ) 角色:目标角色是所期待的接口由一个接口扮演。 t a r g e t j a v a p u b l i ci n t e r f a c et a r g e t f 蚺 牛类a d a p t e e 包含操作s a m p l e o p e r a t i o n l 鼻| v o i ds a m p l e o r i e r a t i o n l0 : | 聃 鸪瞧a d a p t e e 不包含操作s a m p l e o p e r a t i o n2 警| v o i ds a m p l e o p e r a t i o n 20 : 2 源角色( a d a p t e e ) 角色:现有的接口,将被适配到t a r g e t 上去,如: a d a p t e e j a v a p u b l i cc l a s sa d a p t e e p u b l i cv o i ds a m p l e o p e r a t i o n l ( ) j 9 天津大学硕士学位论文第二章设计模式研究 3 适配器( a d a p t e r ) 角色:将源接口转换到目标接口上去。由一个具体类 扮演,如: a d a p t e r j a v a p u b l i cc l a s sa d a p t e re x t e n d sa d a p t e ei m p l e m e n t st a r g e t p u b l i cv o i ds a m p l e o p e r a t i o n 2 0 ? 7 具体代码 j a d a p t e r 在继承a d a p t e e 后,补足一些未实现的功能,或者o v e r r i d e 一些 方法,从而实现t a r g e t 接口 类适配器总结: 1 ) 源的子类无法和源使用同一个适配器; 2 ) 实现时可以o v e r r i d e 源的方法。 对象适配器涉及角色有 1 目标( t a r g e t ) 角色:目标角色是所期待的接口由一个接口扮演,也可 以是一个抽象具体类,如: t a r g e t j a v a p u b l i ci n t e r f a c et a r g e t j 聃 类k d a p t e e 包含操作s a m p l e o p e r a t i o n l 卑| v o i ds a m p l e o p e r a t i o n l0 : | 蚺 宰类a d a p t e e 不包含操作s a m p l e o p e r a t i o n 2 卑| v o i ds l m p l e o p e r a t i o n 20 : ) 1 0 天津大学硕士学位论文 第二章设计模式研究 2 源角色( a d a p t e e ) 角色:现有的接口将被适配到t a r g e t 上去,如: a d a p t e e j a v a p u b l i cc l a s sa d a p t e e p u b l i cv o i ds a m p l e o p e r a t i o n l0 ) 3 适配器( a d a p t e r ) 角色:将源接口转换到目标接口上去。由一个具体类 扮演对象a d a p t e r 的定义方法,如: a d a p t e r j a v a p u b li cc l a s sa d a p t e ri m p l e m e n t st a r g e t p r i v a t ea d a p t e ea d a p t e e : p u b l i ca d a p t e r ( a d a p t e ea d a p t e e ) s u p e r 0 : t h i s a d a p t e e = a d a p t e e : p u b l i cv o i ds a m p l e o p e r a t i o n l0f a d a p t e e s a m p l e o p e r a t i o n l ( ) : l p u b l i cv o i ds a m p l e o p e r a t i o n 20 具体代码 ) 对象适配器总结: 1 ) 源类和源类的子类都可以通过同一个适配器适配到同一个目标; 2 ) 不太容易置换源类的方法; 3 ) 易于增加新的方法; 使用适配器的情况: 1 ) 系统需要使用现有的类, 而此类的接口不符合系统的需要; 2 ) 想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的 一些类,包括一些可能在将来引进的类一起工作。而源类不需要设计一些复杂的 接口; 3 ) ( 对对象适配器而言) 需要改变多个已有的子类的接口。 2 2 4 装饰模式( a d a p t e r ) 我们通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类 1 1 天津大学硕士学位论文 第二章设计模式研究 很繁多,那么势必生成很多子类,增加系统的复杂性。同时,使用继承实现功能拓展。 我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的。装饰模式 以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式以对客户透明的方式给一个对象加上更多的责任。它可以在不使用 创造更多子类的情况下,将对象的功能加以扩展。装饰模式使用原来被装饰类的 一个子类的实例,把客户端的调用委派到被装饰类。装饰模式的关键在于这种扩 展是完全透明的使用d e c o r a t o r 的理由是:这些功能需要由用户动态决定加入 的方式和时机。d e c o r a t o r 提供了即插即用的方法,在运行期间决定何时增加 何种功能。 在装饰模式中参与的角色有: 1 抽象构件角色:给出一个抽象接口,以规范准备接受附加责任的对象: 2 具体构件角色:定义一个将要接受附加责任的类; 3 装饰角色:持有一个构件对象的实例,并定一个一个与抽象构件接口一致 的接口; 4 具体装饰角色,负责给构件对象“贴上”附加的责任。 举a d a p t e r 中的打桩示例,在a d a p t e r 中有两种类:方形桩圆形桩,a d a p t e r 模式展示如何综合使用这两个类,在d e c o r a t o r 模式中,我们是要在打桩时增加 一些额外功能,比如,挖坑在桩上钉木板等,不关心如何使用两个不相关的类。 我们先建立一个接口,如: 接口w o r k 有一个具体实现:插入方形桩或圆形桩,这两个区别对d e c o r a t o r 是无所谓我们以插入方形桩为例: 天津大学硕士学位论文 第二章设计模式研究 现在有一个应用:需要在桩打入前,挖坑,在打入后,在桩上钉木板,这些额外 的功能是动态,可能随意增加调整修改,比如,可能又需要在打桩之后钉架子( 只 是比喻) 那么我们使用d e c o r a t o r 模式,这里方形桩s q u a r e p e g 是d e c o r a t e e ( 被 装饰者) ,我们需要在d e c o r a t e e 上刷些。油漆,这些油漆就是那些额外的功能, 如: 天津大学硕士学位论文第二章设计模式研究 l p u b l i cv o i do t h e r m e t h o d ( ) l i s t i t e r a t o rl i s t i t e r a t o r = o t h e r s 1 i s t i t e r a t o r o : w h i l e ( 1 i s t i t e r a t o r h a s n e x t0 ) s y s t e m o u t p r i n t l n ( ( ( s t r i n g ) ( 1 i s t i t e r a t o r n e x t 0 ) ) + 正在进行) : l 这样,d e c o r a t o r 模式出来了,我们看如何调用: d e c o r a t o r 模式至此完成在以下情况下应当使用装饰模式; 1 需要扩展一个类的功能,或给一个类增加附加责任; 2 需要动态地给一个对象增加功能,这些功能可以再动态地撤销; 3 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继 承关系变得不现实。 2 2 5 门面模式( a d a p t e r ) f a c a d e 模式的定义:为子系统中的一组接口提供一个一致的界面f a c a d e 模式提供一个更高的接口,使得子系统更加容易复用细分封装是面向对象编程 中常用的设计方法,将一个系统划分为若干子系统有利于降低系统的复杂性,一 直划分到子系统之间耦合度最小。所谓耦合度就是通信和相互依赖关系,类似于 一个建筑物的设计建造,建筑物有一个基本架构,而架构是由一些模块组成,模 1 4 天津大学硕士学位论文第二章设计模式研究 块又是由一些砖石组成,而砖石是由一粒粒沙组成。划分到如此细的部件,这样 就可以重复利用这些部件来搭建任何建筑物啦。 为了达到有效的划分系统,引入f a c a d e 模式。它其实类似一种管理m a n a g e r 类,由f a c a d e 类管理负责一部分小类的运算和相互调用,外界不直接调用子系 统的子类,而是通过f a c a d e 类实现。图2 - 1 表示使用f a c a d e 模式后,客户端 对一组对象的访问变得有规则,都通过f a c a d e 类来实现,简化了整个结构。 图2 - 1f a c a d e 模式使用前后示意图 f a c a d e 一个典型应用就是数据库j d b c 的应用,如下例对由班级编号查询论 坛的数据库的操作,如下页代码所示: d b c o m p a r e j a v a p u b l i cc l a s sd b c o m p a r e c o n n e c t i o nc o r m = n u l l : s t a t e m e n ts t m t = n u l l : r e s u l t s e tr s = n u l l : s t r i n gf o r u m l e s s o n = n u l l : t r y s t r i n gs q l = s e l e c tl e s s o nf r o ma p p _ m a n a g e r c o u r s em a i n a a p pm a n a g e r 1 e s s o nb + 。w h e r e a 1 e s s o n _ i d = b 1 e s s o n _ i da n d a 1 0 9 i c _ c l a s s = 。+ l o g i cc l a s s ; 天津大学硕士学位论文 第二章设计模式研究 上例是j s p 中通常用到的对数据库的操作方法,缺点在于每次操作数据库都 需要重复以上灰色字体部分内容。因为在应用中,经常需要对数据库操作。每次都 写上述一段代码肯定比较麻烦,需要将其中不变的部分提炼出来,做成一个接口, 这就引入了f a c a d e 外观对象。如果以后我们更换数据库连接池的相关信息,如 将o r a c l e 数据库改成m y s q l ,改变连接数据库i p 地址等也非常方便,我们做成 一个f a c a d e 接口,使用该接口,上面程序可作如下修改: 首先创建一个通用的数据库操作类,该类包含数据库连接,查询,更改,增 加,删除等常用操作( 以下程序只列出查询) ,如: d a t a b a s e j a v a p u b l i cc l a s sd a t a b a s e p u b li cd a t a b a s e0t h r o w se x c e p t i o n c o n t e x tc t x = n e wi n i t i a l c o n t e x t ( ) : d a t a s o u r c ed s = ( d a t a s o u r c e ) c t x 1 0 0 k u p ( j d b c c o r e d s ) : t h i s s e t d a t a s o u r c e ( d s ) : 1 6 天津大学硕士学位论文 第二章设计模式研究 于是可以拆分出很多类,如: f o r u m b e a n j a v a 代码段 p u b l i cs t r i n gf o r u m l e s s o n ( i n tl o g i c _ c l a s s ) t h r o w se x c e p t i o n s t r i n gs q l = s e l e c tl e s s o nf r o ma p pm a n a g e r c o u r s e _ m a i n a a p p _ m a n a g e r 1 e s s o nb + w h e r e a 1 e s s o n _ i d = b 1 e s s o n _ i da n d 1 7 天津大学硕士学位论文 第二章设计模式研究 可见非常简单,所有程序对数据库访问都是使用改接口,降低系统的复杂性, 增加了灵活性 因为在程序中使用连接池技术,所以针对f a c a u d e 接口修改就可以,也许你 已经不知不觉在使用,尽管不知道它就是f a c a d e 。 2 2 6m v c 模式 m v c 模式不属于6 0 f 的2 3 种设计模式,它是目前非常流行的一种模式,本 文后面将要研究的s t r u t s 也是应用了m v c 模式的一种经典框架,并且本文在讨 论w e b 系统时也是按照m v c 来组织内容,下面着重讨论该模式。 m v c 模式即模型一视图一控制器( m o d e l - v i e r c o n t r o l l e r ) 模式,i l v c 模式最 早是在s m a l l t a l k ( - - 种面向对象的语言) 这种程序语言设计中被提出来的。我们 暂时先忽略它的历史,集中注意力在关注它怎样被应用在w e b 应用开发中。 1 8 天津大学硕士学位论文 第二章设计模式研究 我们在开发w e b 应用时经常提到的一个概念是m o d e l1 m o d e l2 ,那么到底 它是什么意思呢? 其实它是对采用j s p 技术构成w e b 应用的不同模型的描述。下 面对这个概念做一个简单的介绍。 m o d e l1 在使用j a v a 技术建立w e b 应用的实例中,由于j s p 技术的发展,很快这种 便于掌握和可实现快速开发的技术就成了创建w e b 应用的主要技术。j s p 页面中 可以非常容易地结合业务逻辑( j s p :u s e b e a n ) 、服务端处理过程( j s p :s c r i p l e t ) 和盯札( ) ,在j s p 页面中同时实现显示,业务逻辑和流程控制,从而可 以快速地完成应用开发。现在很多的w e b 应用就是由一组j s p 页面构成的。这种 以j s p 为中心的开发模型我们可以称之为m o d e ll ,其结构如图2 2 所示: 图2 - 2 m o d e l l 结构图 当然这种开发模式在进行快速和小规模的应用开发时,是有非常大的优势, 但是从工程化的角度考虑,它也有一些不足之处: 1 应用的实现一般是基于过程的,一组j s p 页面实现一个业务流程,如果要 进行改动,必须在多个地方进行修改。这样非常不利于应用扩展和更新。 2 由于应用不是建立在模块上的,业务逻辑和表示逻辑混合在j s p 页面中 没有进行抽象和分离。所以非常不利于应用系统业务的重用和改动。 考虑到这些问题在开发大型的w e b 应用时必须采用不同的设计模式一这就是 m o d e l 2 m o d e l2 m o d e l2 表示的是基于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 是提供应用的处理过程控制 天津大学硕士学位论文 第二章设计模式研究 ( - - 般是一个s e r v l e t ) ,通过这种设计模型把应用逻辑、处理过程和显示逻辑 分成不同的组件实现,这些组件可以进行交互和重用,从而弥补了m o d e l1 的不 足。其结构如图2 - 3 所示: 图2 - 3 m o d e l 2 结构图 m o d e l2 具有组件化的优点从而更易于实现对大规模系统的开发和管理,但 是开发m v c 系统比简单的j s p 开发要复杂许多,它需要更多的时间学习和掌握。 同时新东西的引入会带来新的问题( 如有时为了降低系统的复杂度,却导致更 高的复杂度) 。 1 必须基于m v c 组件的方式重新思考和设计应用结构。原来通过建立一个简 单的j s p 页面就能实现的应用现在变成了多个步骤的设计和实现过程: 2 所有的页面和组件必须在m v c 框架中实现,所以必须进行附加地开发工作。 那到底什么是i v c 模式呢,现在让我们来看看这种模式的细节。本节中,我 们来准确地了解一下m o d e l s 、v i e w s 、c o n t r o l l e r s 的确切含义,它们实现的任 务。图2 4 显示m o d e l 、v i e w 、c o n t r o l l e r 是如何交互工作的。 2 0 天津大学硕士学位论文第二章设计模式研究 图2 - 4m v c 结构简图 如上图所示,用户通过提交r e q u e s t s 与c o n t r o l l e r 组件( 通常表现为 s e r v l e t s ) 交互。接着c o n t r o l l e r 组件实例化m o d e l 组件( 通常表现为j a v a b e a n s , e j b 或者类似技术) ,并且根据应用的逻辑操纵它们。一旦m o d e l 被创建, c o n t r o l l e r 决定下一个为用户显示的v i e w ( 常常表现为j s p ) ,同时v i e w 与m o d e l 交互操作,获得并为用户显示相关数据。在它被提交到c o n t r o l l e r 重新开始此 操作之前,v i e w 可以修改m o d e l 的状态。 m v c 能为我们的系统设计带来如下好处: 1 设计清晰,使界面设计同数据操作完全隔离开来,两者之间通过c o n t r o l 来交互,三个部分可以各自独立进行开发,只需要知道其它部分所提供的接口即 可; 2 有利于团队分工合作,独立开发,这意味着不同的专业人员可以在自己所 擅长的领域进行开发,例如熟悉界面的人员负责v i e w ,熟悉软件流程的人员负责 c o n t r o l l e r ,熟悉业务的人员负责m o d e l ,使得大家可以发挥所长: 3 将系统分解为三部分,除了对开发带来相当的好处之外,还对系统的测试 及维护带来了相当的便利,因为三部分之间的接口通常都是确定的,所以即使修 改也只需在很小的范围内进行。 m v c 本身就是一个非常复杂的系统,所以采用m v c 实现w e b 应用时,最好选 一个现成的m v c 框架,在此之下进行开发,从而取得事半功倍的效果。现在有很 多可供使用的m v c 框架,由于s t r u t s 有完整的文档并且相对来讲比较简单,所 以用它开发m v c 系统还是比较方便的。本文将在下一章详细讲解s t r u t s 。 天津大学硕士学位论文 第三章s 咖协研究 3 1 什么是s t r u t s 第三章s t r u t s 研究 当前网站的开发技术很多,主流有s u n 公司的j s p 和m i c r o s o f t 公司的a s p n e t j a v a s e r v e rp a g e ( j s p ) 是j a v a2e n t e r p r i s ee d i t i o n ( j 2 e e ) 中发展最迅猛 的当属技术。随着j s p 技术的成熟,越来越多的开发人员开始使用w e b 应用框架。 框架,即f r a m e w o r k ,其实就是某种应用的半成品,就是一组组件,供你选用完 成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一 般是成熟的,不断升级的软件。因为软件系统发展到今天已经很复杂了;特别 是服务器端软件,设计到的知识、内容、问题太多。在某些方面使用别人成熟的 框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业 务逻辑设计。而且框架一般是成熟、稳健的,他可以处理系统很多细节问题,比 如,事物处理、安全性、数据流控制等问题。还有框架一般都经过很多人使用, 所以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人 升级代码带来的好处。s t r u t s 把模型、视图、控制器分离开来,是实现 m v c ( m o d e l - v i e r c o n t r o l l e r ) 的最经典的框架【1 一,它大大提高了开发w e b 应用的 速度和效率,s t r u t s 结构如下图3 - 1 所示 图3 一ls t r u t s 实现w c 结构图 j a k a r t a - s t r u t s 是a p a c h e 软件组织提供的一项开放源代码项目,是利用j a v a s e r v l e t 和j s p 、x g l 等方面的技术来实现构建w e b 应用的一项非常有用的 f r a m e w o r k 。s t r u t s 具有以下显著的优点: 1 利用s t r u t s 提供的t a g l i b 可以大大节约开发时间: 2 表现与逻辑分离; 天津大学硕士学位论文 第三章s t r u t s 研究 3 维护扩展比较方便; 4 便于团队开发 作为一个m v c 的框架,s t r u t s 对m o d e l ,v i e w 和c o n t r o l e r 都提供了对应的实 现组件,如图3 - ls t r u t s 实现m v c 结构图所示,下面是分别对各部分的说明: ( 1 ) 控制器( c o n t r o l l e r ) :控制器的作用是从客户端接受请求,并且选择执 行相应的业务逻辑,然后把响应结果送回到客户端。在s t r u t s 中c o n t r o l l e r 功能 由a c t i o ns e r v l e t 和a c t i o nm a p p i n g 对象构成,核心是一个s e r v l e t 类型的对象 a c t i o ns e r v l e t ,它用来接受客户端的请求。a c t i o ns e r v l e t 包括一组基于配置 的a c t i o nm a p p i n g 对象,每f a c t i o nm a p p i n g 对象实现了一个请求到一个具体的 m o d e l 部分中a c t i o n 处理器对象之间的映射 ( 2 ) 模型( m o d e l ) :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 nf o r m 对象:所有的a c t i o n 处理器对象都是开发者从s t r u t s 的a c t i o n 类派生的子类。 a c t i o n 处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并把响应提交到 合适的v i e w 组件以产生响应。s t r u t s 提供的a c t i o nf o r m 组件对象,它可以通过 定义属性描述客户端表单数据。开发者可以从它派生子类对象,利用它和s t r u t s 提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持, a c t i o n 处理器对象可以直接对它进行读写,而不再需要和r e q u e s t 、r e s p o n s e 对 象进行数据交互。通过a c t i o nf o r m 组件对象实现了) 时v i e w 和m o d e l 之间交互的支 持。 ( 3 ) 视图( v i e w ) :s t r u t s 应用中的v i e w 部分是通过j s p 技术实现的。s t r u t s 提供了自定义的标记库可以使用,通过这些自定义标记可以非常好地和系统的 m o d e l 部分交互,通过使用这些自定义标记创建的j s p 表单,可以实现和m o d e l 部 分中的a c t i o n f o r m 的映射,完成对用户数据的封装,同时这些自定义标记还提供 了像模板定制等多种显示功能。 图3 - 2 是s t r u t s 的工作原理图: 天津大学硕士学位论文第三章s 仕u t s 研究 图3 - 2s t r u t s 工作原理图 首先,控制器( 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 ) ,为不同的s t r u t s 模块初始化相应的m o d u l e c o n f i g 对象。比如 配置文件中的a c t i o n 映射定义都保存在a c t i o n c o n f i g 集合中。相应地有c o n t r o l c o n f i g 集合、f o r m b e a n c o n f i g 集合、f o r w a r d c o n f i g 集合和m e s s a g e r e s o u r c e s c o n f i g 集合等 控制器接收h t t p 请求,并从a c t i o n c o n f i g 中找出对应于该请求的a c t i o n 子类,如果没有对应的a c t i o n ,控制器直接将请求转发给j s p 或者静态页面。 否则控制器将请求分发至具体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 m 对象将利用h t t p 请求中的参数来填充自己( 可选步骤,需要在配置文件中指定) 具体的a c t i o n f o r m 对象应该是a c t i o n f o r m 的子类对象,它其实就是一个j a v a b e a n 。此外, 还可以在a c t i o n f o r m 类中调用v a l i d a t e 方法来检查请求参数的合法性,并且可 以返回一个包含所有错误信息的a c t i o n e r r o r s 对象。如果执行成功,a c t i o n f o r m 自动将这些参数信息以j a v a b e a n ( 一般称之为f o r mb e a n ) 的方式保存在s e r v l e tc o n t e x t 中,这样它们就可以被其它a c t i o n 对象或者j s p 调用。 s t r u t s 将这些a c t i o n f o r m 的配置信息都放在f o r m b e a n c o n f i g 集合中,通 过它们s t r u t s 能够知道针对某个客户请求是否需要创建相应的a c t i o n f o r m 实 例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 对象,控制器通过该a c t i o n f o r w a r d 对象来进行转发工作。我们主张将获 取数据和执行业务逻辑的功能放到具体的j a v a b e a n 当中,而a c t i o n 只负责完成 天津大学硕士学位论文 第三章s t r u t s 研究 与控制有关的功能遵循该原则,所以在图3 2 中我将a c t i o n 对象归为控制器 部分。 3 3s t r u t s 组件 作为一个州c 的框架,s t r u t s 对m o d e l ,v i e w 和c o n t r o l e r 都提供了对应的实 现组件,如图3 2s t r u t s 实现睡v c 结构图所示 3 j 1 控制器( c o n t r o l l e r ) : 一控制器组件的控制机制 s t r u t s 的控制器组件主要完成以下任务: 接受用户请求 根据用户请求,调用合适的模型组件来执行相应的业务逻辑 获取业务逻辑执行结果 根据当前状态以及业务逻辑执行结果,选择合适的视图组件返回给用户 1 a c t i o n 类 o r g a p a c h e s t r u t s 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 r v l e t 来处理,然后再由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 类,在应用的生命周期中,仅创建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 ) s t r u t s 框架初始化过程 ( 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 o 方法,从w e b x m l 文件中加载a c t i o n s e r v l e t 的初 始化参数,如c o n f i g 参数。 ( 3 )调用i n i t s e r v l e t ( ) 方法,从w e b x m l 文件中加载a c t i o n s e r v l e t 的 u r l 映射信息。此外还会注册w e b x m l 和s t r u t s 配置文件所使用的d t d 文件, 这些d t d 文件用来验证w e b 硒l 和s t r u t s 配置文件的语法。 ( 4 ) 调用i n i t m o d u l e c o n f i g o 方法,加载并解析子应用模块的s t r u t s 配 置文件;创建m o d u l e c o n f i g 对象,把它存储在s e r v l e t c o n t e x t 中。 天津大学硕士学位论文第三章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 s0 方法,加载并初始化默认子应用 模块的消息资源:创建m e s s a g e r e s o u r c e s 对象,把它存储在s e r v l e t c o n t e x t 中。 ( 6 ) 调用i n i t m o d u l e d a t a s o u r c e s0 方法,加载并初始化默认子应用模块的 数据源。如果在s t r u t s 配置文件中没有定义 元素,就忽略这一 流程。 ( 7 ) 调用i n i t m o d u l e p l u g i n s0 方法,加载并初始化默认子应用模块的所有 插件 ( 8 ) 当默认子应用模块被成功地初始化后,如果还包括其他子应用模块,将 重复流程( 4 ) ( 7 ) ,分别对其他子应用模块进行初始化。 b ) 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 实例接受到h t t p 请求之后,在d o g e t0 或d o p o s t0 方法 都会调用p r o c e s s ( ) 方法来处理请求以下是a c t i o n s e r v l e t 的p r o c e s s 0 方法 的源代码: p r o t e c t e dv o i d p r o
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考点解析-冀教版七年级下册期末试题及参考答案详解(新)
- 大培训、大学习、大考试安全应急考试题库及答案
- 2025年快消品包装行业可持续设计理念研究报告
- 2025年物联网设备安全漏洞防护策略与解决方案深度剖析报告
- 2025至2030年中国个人护理用品连锁行业市场运营趋势分析及投资潜力研究报告
- 2025至2030年中国短保面包行业市场供需格局及投资规划建议报告
- 2025年度房地产销售代理与物业管理合作协议
- 2025版房地产投资担保协议下载模板
- 2025版版汽车零部件采购合同模板
- 2025年度环保产业保证担保合同模板
- Unit1-A-Lets-spell教学课件【河南郑州管城区】
- 2025年中国机械传动部件行业市场发展前景及发展趋势与投资战略研究报告
- 正确测量血压的操作方法
- 钢板桩支护工程监理细则
- 婚内财产分割协议书模板
- 食品行业采购管理流程及实施细则
- 2025年新版小学语文新课标标准课件
- 《功能高分子材料》课程教学大纲
- 企业反恐防暴安全
- 高标准农田建设项目方案投标文件(技术方案)
- 私募股权投资基金(双GP)合作框架协议书范本
评论
0/150
提交评论