• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

详解MVC、MVC框架、MVC模式、Spring MVC

JAVA web前端中文站 2年前 (2017-07-07) 1422次浏览 已收录 0个评论

MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC 被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏

MVC 简介

MVC 开始是存在于桌面程序中的,M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是将 M 和 V 的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C 存在的目的则是确保 M 和 V 的同步,一旦 M 改变,V 应该同步更新。[1-2] 
模型-视图-控制器(MVC)是 Xerox PARC 在二十世纪八十年代为编程语言 Smalltalk-80 发明的一种软件设计模式,已被广泛使用。后来被推荐为 Oracle 旗下 Sun 公司 Java EE 平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。

Web 开发中的请求、响应模型

详解 MVC、MVC 框架、MVC 模式、Spring MVC

在 Web 世界里,具体步骤如下:

  1. Web 浏览器(如 IE)发起请求,如访问 http://www.codedq.net
  2. Web 服务器(如 Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下),最后产生响应(一般为 html)。
  3. web 服务器处理完成后,返回内容给 web 客户端(一般就是我们的浏览器),客户端对接收的内容进行处理(如 web 浏览器将会对接收到的 html 内容进行渲染以展示给客户)。

因此,在 Web 世界里:
都是 Web 客户端发起请求,Web 服务器接收、处理并产生响应。
一般 Web 服务器是不能主动通知 Web 客户端更新内容。虽然现在有些技术如服务器推(如 Comet)、还有现在的 HTML5 websocket 可以实现 Web 服务器主动通知 Web 客户端。
到此我们了解了在 web 开发时的请求/响应模型,接下来我们看一下标准的 MVC 模型是什么。

标准 MVC 模型

MVC 模型是一种架构型的模式,本身不引入新功能,只是帮助我们将开发的结构组织的更加合理,使展示与模型分离、流程控制逻辑、业务逻辑调用与展示逻辑分离。

首先让我们了解下 MVC(Model-View-Controller)三元组的概念:

  • Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或 JavaBean 组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据) 和 服务层(行为)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。
  • View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
  • Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。也就是说控制器做了个调度员的工作。

在标准的 MVC 中模型能主动推数据给视图进行更新(观察者设计模式,在模型上注册视图,当模型更新时自动更新视图),但在 Web 开发中模型是无法主动推给视图(无法主动更新用户界面),因为在 Web 开发是请求-响应模型。

那接下来我们看一下在 Web 里 MVC 是什么样子,我们称其为 Web MVC 来区别标准的 MVC。

Web MVC 模型

模型-视图-控制器概念和标准 MVC 概念一样,请参考 1.2,我们再看一下 Web MVC 标准架构。

详解 MVC、MVC 框架、MVC 模式、Spring MVC

在 Web MVC 模式下,模型无法主动推数据给视图,如果用户想要视图更新,需要再发送一次请求(即请求-响应模型)。

概念差不多了,我们接下来了解下 Web 端开发的发展历程,和使用代码来演示一下 Web MVC 是如何实现的,还有为什么要使用 MVC 这个模式呢?

Web 端开发发展历程

此处我们只是简单的叙述比较核心的历程。

详解 MVC、MVC 框架、MVC 模式、Spring MVC

  • CGI:(Common Gateway Interface)公共网关接口,一种在 web 服务端使用的脚本技术,使用 C 或 Perl 语言编写,用于接收 web 用户请求并处理,最后动态产生响应给用户,但每次请求将产生一个进程,重量级。
  • Servlet:一种 JavaEE web 组件技术,是一种在服务器端执行的 web 组件,用于接收 web 用户请求并处理,最后动态产生响应给用户。但每次请求只产生一个线程(而且有线程池),轻量级。而且能利用许多 JavaEE 技术(如 JDBC 等)。本质就是在 java 代码里面 输出 html 流。但表现逻辑、控制逻辑、业务逻辑调用混杂。
  • JSP:(Java Server Page):一种在服务器端执行的 web 组件,是一种运行在标准的 HTML 页面中嵌入脚本语言(现在只支持 Java)的模板页面技术。本质就是在 html 代码中嵌入 java 代码。JSP 最终还是会被编译为 Servlet,只不过比纯 Servlet 开发页面更简单、方便。但表现逻辑、控制逻辑、业务逻辑调用还是混杂。
  • Model1:可以认为是 JSP 的增强版,可以认为是 jsp+javabean。特点:使用<jsp:useBean>标准动作,自动将请求参数封装为 JavaBean 组件;还必须使用 java 脚本执行控制逻辑。
  • Model2:在 JavaEE 世界里,它可以认为就是 Web MVC 模型。Model2 架构其实可以认为就是我们所说的 Web MVC 模型,只是控制器采用 Servlet、模型采用 JavaBean、视图采用 JSP。

详解 MVC、MVC 框架、MVC 模式、Spring MVC

限于篇幅,model2 模型的缺点和 Spring mvc 模型的内容我们下章再继续。

【注:本文源自网络文章资源,由站长整理发布】


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解 MVC、MVC 框架、MVC 模式、Spring MVC
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址