简述Struts是怎样实现MVC模式的

 我来答
御龙磨高卓
2019-02-13 · TA获得超过3961个赞
知道大有可为答主
回答量:3220
采纳率:33%
帮助的人:229万
展开全部
MVC方式通常在Smalltalk中用于建立用户接口。通过对MVC中蕴藏的设计模式可以帮你理解我们所说的“模式”的含义。
MVC包括三类对象,Model是应用对象、View为其屏幕表示、Controller定义了对用户输入的处理(反应)方式。在应用MVC方式以前,通常将这三个对象的功能合到了一起,应用MVC分离了它们,为设计提供了灵活性和可重用性。
MVC通过在view和model之间建立Subscribe/Notify协议,分离了view和model对象。View对象必须保证它的表示反应了model对象的状态,当model对象的数据改变时,model对象通知(Notify)view对象,作为对这一行为的反应,每个view对象得到了一个做出更新的机会。这种方式使得可以将多个view对象为一个model对象提供不同的表示。你也可以为model对象建立新的view对象,而不用重新编写model。下图演示了一个model和三个view:
从表面看,这一例子反应了一个将view和model分离的设计。然而,这种设计适合一类更通用的问题:减少对象之间的藕和性,这样,当一个对象改变时,将不会影响到另外的对象,甚至不需要知道另外的对象的实现细节。这种更通用的模式将在Observer模式中来描述。
MVC方式的另一个特点是,view对象是可嵌套定义的。例如,button的控制板可由一个包含嵌套button
view对象的复杂view对象来实现;对象观察器的用户接口可由能重用于调试器的嵌套view对象组成。MVC方式采用CompositeView类(View的子类)来支持嵌套view,其行为与view对象的行为一致,可用于view对象能使用的任何场合。
于是,我们又可以把这种对待composite
view就像处理其一个组件的方式看成一种设计(方式)。同样的,这种设计可抽象出另一类更通用的问题(的解决方式):我们在某种情形下将对象分成组,并且处理一个组就像对待对象个体。这种方式我们用Composite设计模式来描述。它允许你建立类的层次,在这一层次下,有些子类定义原始对象(如Button),而其它的类可以定义合成对象(CompositeView),合成对象可将原始对象装配成更复杂的对象。
同样,MVC也可改变视图类(view)对用户反应的方式,而不用改变其可视化表示。你可能想改变其对键盘响应的方式,如,使用弹出菜单代替命令键。MVC将这种反应机制封装为控制对象(Controller)。控制器有一个类层次,易于实现从一个已存在的控制器建立出一个变种—一种新的控制器。
视图(view)对象通过某一控制器对象的实例(instance)来实现特定的响应策略。为了实现不同的策略,可以简单的使用不同的控制器实例来替换当前的实例。甚至可以在运行时来改变视图的控制器,以改变视图对象对用户输入的响应(策略)。例如,一个view对象可置为disabled,即对用户的输入不做任何响应。要达到这一目的,仅仅只需让控制器忽略所有input事件。
这种视图—控制器关系即是Strategy设计模式的一个典型例子。所谓Strategy即这样一个对象,它表示了一种算法。这在你想要替换算法(无论是静态替换还是动态替换)时特别有用,而这样的算法可能有许多的变量、或者拥有复杂的数据结构。
MVC中也使用了别的设计模式,例如,使用Factory
Method模式来描述视图的默认控制器类;采用Decorator模式来为视图增加滚动条等。但在MVC中的主要模式是前述的Observer、Composite、和Strategy设计模式。
wnxne60
推荐于2017-09-20 · TA获得超过344个赞
知道答主
回答量:390
采纳率:0%
帮助的人:306万
展开全部
MVC (Modal View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。

Struts的目的是为了减少在运用MVC设计模型来开发Web应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。。。。。。。。。。。。。。。。。。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伦琼英08
2010-11-24 · TA获得超过853个赞
知道小有建树答主
回答量:232
采纳率:0%
帮助的人:94.9万
展开全部
首先Mvc本身只对于表现层同业务层之间的,而
M就是拦截器,类型转换器,校验器等等相当于Action里面的实例对象,V不用说就是jsp视图层,html等,C就是控制层也就是里面的Action类了。当一个请求过来以后要去业务层着处理
那么些时我们就得对些信息分析,对请求的解剖的这整个过程就是我们的mvc里面体现,而大
家要注意的是在struts中他的体现也只是在Action类中。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
higherzjm
2010-11-23
知道答主
回答量:24
采纳率:0%
帮助的人:17.6万
展开全部
m:model v:view c:control
struts中的JSP页面是实现视图层的(view),这里不用多说,struts其实就是用来跳转这些页面,提起/输出JSP页面的参数。。
JavaBean类,也就是那个什么纯get/set方法的那个类是业务层的,就是上面所说的model,模型层;
control就是写的那些action/actionform,用来控制view和model之间的联系,获取参数,跳转页面。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
abcd20100501
2010-11-23 · TA获得超过207个赞
知道答主
回答量:148
采纳率:0%
帮助的人:153万
展开全部
M就是拦截器,类型转换器,校验器等等,V不用说就是jsp,html等,C就是Action类了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式