天天看点

Spring MVC - MVC设计模式简介

mvc 设计模式一般指 mvc 框架,m(model)指数据模型层,v(view)指视图层,c(controller)指控制层。使用 mvc 的目的是将 m 和 v 的实现代码分离,使同一个程序可以有不同的表现形式。其中,view 的定义比较清晰,就是用户界面。

在 web 项目的开发中,能够及时、正确地响应用户的请求是非常重要的。用户在网页上单击一个 url 路径,这对 web 服务器来说,相当于用户发送了一个请求。而获取请求后如何解析用户的输入,并执行相关处理逻辑,最终跳转至正确的页面显示反馈结果,这些工作往往是控制层(controller)来完成的。

在请求的过程中,用户的信息被封装在 user 实体类中,该实体类在 web 项目中属于数据模型层(model)。

在请求显示阶段,跳转的结果网页就属于视图层(view)。

像这样,控制层负责前台与后台的交互,数据模型层封装用户的输入/输出数据,视图层选择恰当的视图来显示最终的执行结果,这样的层次分明的软件开发和处理流程被称为 mvc 模式。

在学习 servlet 及 jsp 开发时,javabean 相当于 model,servlet 相当于 controller,jsp 相当于 view。

总结如下:

视图层(view):负责格式化数据并把它们呈现给用户,包括数据展示、用户交互、数据验证、界面设计等功能。

控制层(controller):负责接收并转发请求,对请求进行处理后,指定视图并将响应结果发送给客户端。

数据模型层(model):模型对象拥有最多的处理任务,是应用程序的主体部分,它负责数据逻辑(业务规则)的处理和实现数据操作(即在数据库中存取数据)。

sun 公司推出 jsp 技术的同时,也推出了两种 web 应用程序的开发模式。即 jsp+javabean 和 servlet+jsp+javabean。

jsp+javabean 中 jsp 用于处理用户请求,javabean 用于封装和处理数据。该模式只有视图和模型,一般把控制器的功能交给视图来实现,适合业务流程比较简单的 web 程序。

Spring MVC - MVC设计模式简介

通过上图可以发现 jsp 从 http request(请求)中获得所需的数据,并进行业务逻辑的处理,然后将结果通过 http response(响应)返回给浏览器。从中可见,jsp+javabean 模式在一定程度上实现了 mvc,即 jsp 将控制层和视图合二为一,javabean 为模型层。

jsp+javabean 模式中 jsp 身兼数职,既要负责视图层的数据显示,又要负责业务流程的控制,结构较为混乱,并且也不是我们所希望的松耦合架构模式,所以当业务流程复杂的时候并不推荐使用。

servlet+jsp+javabean 中 servlet 用于处理用户请求,jsp 用于数据显示,javabean 用于数据封装,适合复杂的 web 程序。

Spring MVC - MVC设计模式简介

相比 jsp+javabean 模式来说,servlet+jsp+javabean 模式将控制层单独划分出来负责业务流程的控制,接收请求,创建所需的 javabean 实例,并将处理后的数据返回视图层(jsp)进行界面数据展示。

servlet+jsp+javabean 模式的结构清晰,是一个松耦合架构模式,一般情况下,建议使用该模式。

任何一件事都有利有弊,下面来了解一下 mvc 的优缺点。

多视图共享一个模型,大大提高了代码的可重用性

mvc 三个模块相互独立,松耦合架构

控制器提高了应用程序的灵活性和可配置性

有利于软件工程化管理

总之,我们通过 mvc 设计模式最终可以打造出一个松耦合+高可重用性+高可适用性的完美架构。

原理复杂

增加了系统结构和实现的复杂性

视图对模型数据的低效率访问

mvc 并不适合小型甚至中型规模的项目,花费大量时间将 mvc 应用到规模并不是很大的应用程序,通常得不偿失,所以对于 mvc 设计模式的使用要根据具体的应用场景来决定。