您的位置:首页 > 其它

框架模式—MVC模式

2015-07-23 14:13 316 查看

1.MVC简介

M(Model)——模型,V(View)——视图,C(Controller)——控制器

1.1各部分的作用

模型(Model):负责封装应用的状态,并实现应用的功能。通常分为数据模型和业务逻辑模型,数据模型用来存放业务数据,比如订单信息、用户信息等;而业务逻辑模型包含应用的业务操作,比如订单的添加和修改等。

视图(View):用来将模型的内容展现给用户,用户可以通过视图来请求模型进行更新。视图从模型获得要展示的数据,然后用自己的方式展现给用户。相当于提供界面来与用户进行人机交互;用户界在界面上操作和填写完成后,会点击提交按钮或者是以其它触发时间的方式,来向控制器发出请求。

控制器(Controller):用来控制应用程序的流程和处理视图所发出的请求。当控制器收到用户的请求后,会将用户的数据和模型的更新相映射,也就是调用模型来实现用户请求的功能;然后控制器会选择响应的视图,把模型更新后的数据展示给用户。

(注意:模型负责输出的内容,而视图负责输出的形式,模型不依赖于视图,模型与视图是解耦的。)

1.2MVC的组件关系图



MVC的组件关系图描述了模型、视图、控制器的交互关系:

(1)首先是展示视图给用户,用户在视图上进行操作,并填写一些业务数据

(2)然后用户点击提交按钮发出请求

(3)视图发出的用户请求会到达控制器,请求中包含了想要完成什么样的业务功能以及相关的数据。

(4)控制器会处理用户请求,把请求中的数据进行封装,然后选择并调用合适的模型,请求模型进行状态更新,然后选择接下来要展示给用户的视图。

(5)模型处理用户请求的业务功能,同时进行模型状态的维护和更新

(6)当模型状态发生改变的时候,模型会通知相应的视图,告诉视图它的状态发生了改变。

(7)视图接到模型的通知后,会向模型进行状态查询,获取需要展示的数据,然后按照视图本身的展示方式,把这些数据展示出来。

接下来就是等待用户下一次操作,再次从头轮回。

2.MVC模型的优势

主要是低耦合性(模型和视图解耦了)、更低的开发成本(MVC模型帮助我们划清了各部分的职责)、更好的可维护性(低耦合必然会给维护减少了麻烦)

3.Model2模型中的MVC

在Java Web开发中,通常把Servlet+JSP+JavaBean的模型称为Model2模型,这是一个遵循MVC模式的模型



Model2模型的响应顺序如下:

1.用户发出一个请求,这个请求被控制器Sevlet接收到;

2.Servlet将接受到的请求数据转化成数据模型JavaBean,然后调用业务逻辑模型JavaBean的方法,并将业务模型的返回的结果放到适合的地方,比如请求的属性里;

3.最后根据业务逻辑模型的返回结果,有控制器来选择适合的视图(JSP),由视图把数据展现给用户。

4.Struts2模型中MVC

同样,我们还是先看一下模型图:



控制器(FilterDisPatcher):用户请求首先到达前端控制器FilterDispatcher。FilterDispatcher负责根据用户

提交的URL和struts.xml的配置。来选择合适的动作(Action),让这个Action来处理用户的请求。

FilterDispatcher其实是一个过滤器,它是Struts2的核心包里面已经开发好的类,不需要我们自己去开发,

只需要在项目的web.xml中配置一下即可。FilterDispatcheer体现了J2EE核心设计模式中的前端控制器模式。

动作(Action):在用户请求经过FilterDisPatcher之后,被分发到合适的动作Action对象。

Action负责把用户请求中的参数组装成合适的数据模型,并调用相应的业务逻辑进行真正的功能处理,

获取下一个视图展示所需要的数据。Struts2 的Action,相比于别的web框架的动作处理,

它实现了与Servlet API的解耦,使得Action里面不需要再直接去引用和使用HttpServletRequest与

HttpServletResponse等接口。 因而使得Action的单元测试更加简单,而且强大的类型转换也使得我们

少做了很多重复的工作。

视图(Result):视图结果用来把动作中获取到的数据展现给用户。在Struts2中有多种优秀的结果展示方式,常规的jsp,模板 freemarker、velocity,还有各种其它专业的展示方式,如图表jfreechart、报表JasperReports、将XML转化为
HTML的XSLT等等。而且各种视图结果在同一个工程里面可以混合出现。

参考:/article/5914296.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: