MVC详解

来源:互联网 发布:微信删好友软件 编辑:程序博客网 时间:2024/05/17 08:06

传统MVC

MVC刚开始出现在桌面程序当中。

其中M(model)即数据模型,V(view)只用户界面,而C(control)指控制器。

MVC的目的就是要将M和V的实现代码分离开来,从而使得一个程序可以使用不同的表现形式。C的目的则是确保M和V的同步,一旦M改变,V也要同步更新。




用户和视图进行交互,写入数据并提交,控制器接受到来自视图的事件并对模型进行操作,根据用户输入的数据来更新模型,将更新的结果显示给用户。

它有以下两个优点:

(1)实现了视图和业务逻辑的分离,提高的代码的重用率,减少了数据表达、数据描述和应用操作的耦合度。

(2)使得软件可维护性、可重用性、可扩展性、灵活性以及封装性大大提高。


WEB应用的MVC

之所以会有WEB应用的MVC一说,是因为传统的MVC模式已经不适合WEB应用。它的主要缺点是:

(1)在WEB的世界里面,视图是谓语客户端浏览器上的,而控制器和模型则是位于服务器段的,视图无法通过HTTP像经典的MVC那样直接调用控制器。

(2)视图不是一个可以更新的对象,而是在客户端发送一个新的请求,随之获得一个全新的WEB页面。

(3)模型不能将自身的改变通知视图,因为视图在另外一个计算机的浏览器中。


该模型中包含一个“分发器”(在JAVA中WEB MVC 中分发器使用servlet来实现),分发器可以将一个请求URL映射成一个需要被执行的命令,然后去执行相应的命令实例(struts2中的命令实例就是ACTION,action在后台的服务器程序进行交互,这个后台服务器程序就是M)。当命令实例执行完相应的业务逻辑后就会返回一个码值,该码值又会被映射到相应的视图(JSP)。最后结合控制器的模型,映射到的视图将会被发送到客户端的浏览器呈现。

这种模式的有点:

(1)多个视图可以对应一个模型,这样,可以减少代码的复制及代码的维护量,一旦模型发送改变,也易于维护;

(2)模型返回的数据与显示逻辑分离,模型数据可以应用到任何的显示技术。如jsp/velocity/excel等;

(3)应用被分隔为层,降低了各层之间的耦合度,提供了应用的可扩展性。

(4)控制层可以发挥更大的作用,由于它把不同的视图组合在一起,可以完成不同的请求,因此,控制层可以包含对用户的请求权限限制。


常见的MVC组件

struts

struts2

webwork

spring mvc 

jsf



原创粉丝点击