MVC模型概述(1)

摘自( 私塾在线,跟开涛学SpringMVC)

1.标准MVC模型概述

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

Model提供要展示的数据。View负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。Controller接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。

在标准的MVC中模型能主动推数据给视图进行更新(观察者设计模式,在模型上注册视图,当模型更新时自动更新视图)。

2.Web MVC模型概述

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

第一步:Web浏览器使用HTTP请求向服务器传达用户的动作。(当HTTP请求到达服务器的时候,MVC模式开始运行。根据请求中携带的信息,比如URL和任何参数,Web应用程序开始工作。)

第二步:服务器完成某些处理并且生成一个视图。(当它处理完用户请求时,可能创建或者更新一个模型,它将职责移交给视图。)

第三步:使用HTTP响应把该视图传送回客户端。(视图使用HTTP响应把数据传输回客户端,比如使用HTML标记的页面,或者EXCEL文档的原始数据。)

Web开发中的请求-响应模型。Web客户端发起请求,Web服务器接收、处理并产生响应。一般Web服务器是不能主动通知Web客户端更新内容。

  1. Web浏览器(如IE)发起请求,如访问http://www.kjnyjt.com。
  2. Web服务器(如Tomcat/Jetty)接收请求,处理请求,最后产生响应(一般为html)。
  3. web服务器处理完成后,返回内容给web客户端(web浏览器),客户端对接收的内容进行处理(如web浏览器将会对接收到的html内容加上css样式渲染以展示给客户)。

3.主流 Web MVC框架

好的Web框架把请求发送和处理区分开来,使用前端控制器Servlet(Front Controller Servlet)来实现发送HTTP请求行为。换句话说,分发器(dispatcher)决定需要哪个控制器来完成每个请求,而控制器完成实际的处理。主流Web MVC框架有:

  1. struts1
  2. struts2
  3. webwork
  4. jsf
  5. spring mvc

Spring也是这样,用户发布的任何请求的主要入口是DispatcherServlet.该分发器Servlet必须在web.xml文件中声明。

 4.Web端开发发展历程

CGI-->Servlet-->JSP-->Model1

CGI-->Servlet-->JSP-->Model2(WebMVC)-->Front Controller + Page Controller

  1. Servlet一种JavaEE web组件技术,是一种在服务器端执行的web组件,用于接收web用户请求并处理,最后动态产生响应给用户。本质就是在java代码里面输出html流。最大的问题就是直接在Java代码里面输出Html。
  2. JSP(Java Server Page)一种在服务器端执行的web组件,是一种运行在标准的HTML页面中嵌入脚本语言(现在只支持Java)的模板页面技术。本质就是在html代码中嵌入java代码。SP本质还是Servlet,最终还是会被编译为Servlet,只不过比纯Servlet开发页面更简单、方便。
  3. Model2架构其实可以认为就是我们所说的Web MVC模型,只是控制器采用Servlet、模型采用JavaBean、视图采用JSP。
  4. 服务到工作者,也是Web MVC,只是责任更加明确。Front Controller + Application Controller + Page Controller + Context 前端控制器+应用控制器+页面控制器(也有称其为动作)+上下文
时间: 2024-08-08 17:52:53

MVC模型概述(1)的相关文章

Ch01 ASp.NET MVC 4概述(4学时)

MVC是一种ASP.NET应用程序系统的设计模式,当前被广泛应用于企业级Web应用的开发中.MVC设计模式将Web应用分解成三个部分:模型(Models).视图(Views)和控制器(Controllers),这三部分分别完成不同的功能以实现Web应用.微软为了方便MVC设计模式的构建,推出了基于.NET框架,与ASP.NET 集成的MVC框架.这个框架提供了集成与Visual Studio的模板,利用这个模板可以方便地构建MVC Web应用程序. 1.1  传统ASP.NET Web表单方案存

MVC模型

当客户端提交请求至服务端时,Struts2的FileterDispatcher(核心控制器)会负责拦截,并且内置拦截器会负责对请求中的参数做一系列的预处理工作(包含:解析参数.类型转换.DTO封装等).然后提交给具体的Action(业务控制器)调用业务实现直至返回处理结果,最后Action根据处理结果forward到具体的View层组件. 一.MVC模型介绍 MVC(Model.View.Controller)是在程序开发过程中衍生出的一套程序设计思想,它由三个单词的缩写组成,分别为:模型层(M

权限系统与RBAC模型概述

为了防止无良网站的爬虫抓取文章,特此标识,转载请注明文章出处.LaplaceDemon/SJQ. http://www.cnblogs.com/shijiaqi1066/p/3793894.html 0. 前言 一年前,我负责的一个项目中需要权限管理.当时凭着自己的逻辑设计出了一套权限管理模型,基本原理与RBAC非常相似,只是过于简陋.当时google了一些权限管理的资料,从中了解到早就有了RBAC这个东西.可惜一直没狠下心来学习. 更详细的RBAC模型非常复杂.本文只做了一些基础的理论性概述.

推荐系统的几种常见模型概述

某个选修课的论文,这里贴过来,之所以贴过来,是因为我认为自己写的确实非常有意义,网上对这个东西确实没有很系统的中文介绍,我自己也是看了许多论文自己也动手做了很多很多实践才领悟的. 这个只是概论,以后有时间再加上具体的模型.算法. ----------------------------------------------------------------------------- 总的来说,推荐系统的目标可以分为预测评分和物品推荐两种,目前对前者的研究也更多,因为前者更适合建复杂的模型,所以这

CI 搭建简单的MVC模型示例

1.下载CI框架源码 http://codeigniter.org.cn/download 2.我们主要的开发在application 文件夹进行,可以自己根据项目重命名文件夹.(例如公司名称_application,公司名称_system) 3.application->config 里面可以配置相关的内容(以后慢慢添加),数据库的连接配置在database.php 文件夹, $db['default']['hostname'] = 'localhost'; $db['default']['u

CSS框模型(框模型概述、内边距、边框、外边距、外边距合并)

CSS 框模型概述 CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框 和 外边距 的方式. 元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘是边框.边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素. 内边距.边框和外边距都是可选的,默认值是零.但是,许多元素将由用户代理样式表设置外边距和内边距.可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式.这可以分别进行,也可以使用通用选择

MVC 模型、视图、控制器

所谓模型,就是在MVC设计模式中需要被显示的数据.在通常情况下,该模型需要从数据库中读取数据.保存模型的状态等,提供数据的访问方法及数据维护. 例如,对于SQL Server中数据库NorthWind的表Products来说,一个Product对象就是一个模型,该对象需要读取数据库中的信息,并对该数据表进行查询.添加.修改等操作.对于一个比较小型的应用程序而言,模型也许只是概念上的,假如一个应用程序需要读取数据,然后显示在用户界面上,而在该应用程序中并不存在一个物理上的数据模型或者相关的类,那么

MVC模型验证:属性值无require,页面仍然验证问题

为了更清晰的说明这个问题,我使用了VS2013自动生成的MVC示例来演示,运行示例项目,点击注册页面,如图: 接下来给上面的注册增加一个“年龄条件”,找到RegisterModel,添加一个”Age”属性,但是,不加”[require]”,如图: 运行项目,回到注册页面,用户名,密码,确认密码都填,年龄项不填,点击注册,如图: 我们发现它提示 “年龄字段是必须的”,但是我并没有在 Age属性上加require属性,它怎么还会验证呢? 起初我还以为页面缓存原因,清空缓存,问题仍然存在. 于是Goo

CSS 框模型概述

CSS 框模型 (Box Model) 规定了元素框处理元素内容.内边距.边框 和 外边距 的方式. CSS 框模型概述 元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘是边框.边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素. 提示:背景应用于由内容和内边距.边框组成的区域. 内边距.边框和外边距都是可选的,默认值是零.但是,许多元素将由用户代理样式表设置外边距和内边距.可以通过将元素的 margin 和 padding 设置为零来覆盖