MVC初识-基本构成和原理

1:什么是MVC模式

MVC(Model-View-Controller)是一种软件架构模式,把软件系统分为一下三个基本部分:

模型(Model):模型用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“模型”有对数据直接访问的权力,例如对数据库的访问。“模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如何被操作。

视图(View):视图能够实现数据有目的的显示。在视图中一般没有程序上的逻辑。

控制器(Controller) :控制器起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变。

这三部分基本的关系图:

2:MVC基本原理

a:定位Controller:

在mvc中,客户端所请求的URL首先被映射到相应的Controller中,然后由Controller来处理业务逻辑,例如从Model中取数据,然后由Controller选择合适的View返回给客户端。如果我们的ASP.NET MVC程序访问的是http://localhost:2176/Home/Index,那么它访问的其实是HomeController中的Index这个Action.如下图:

其中 public ActionResult Index()这个方法称为Controller的Action,他返回的是ActionResult的类型。一个Controller可以有很多个Action。

b:返回View

我们从前面的截图中看到,Controller中的Action方法中有个return View()的方法。默认情况下它会返回与Action同名的view.在ASP.NET MVC默认的视图引擎(WebFormViewEngine)下,view是按如下路径访问的:

/Views/{Controller}/{Action}.aspx

也就是说对于http://localhost:2176/Home/Index这个路径,在默认情况下,在Index这个Action中用return View()来返回view的时候,会去寻找/Views/Home/Index.aspx文件,如果找不到这个文件,就会去Share目录中寻找:/Views/Share/Index.aspx,如果都找不到,就会抛出找不到View的异常。

这就是为什么如果我们直接访问Index.aspx的话会出现404的错误,因为在MVC整个数据传输机制里是不建议直接访问View的,我们可以在MVC程序Views目录下的默认配置文件里找到原因:

也就是访问Views目录下的所有的文件都会由System.Web.HttpNotFoundHandler来处理。

时间: 2024-11-05 22:43:20

MVC初识-基本构成和原理的相关文章

s2sh的MVC执行流程和执行原理

=======================执行流程 1. 从页面开始,提交表单或者点击链接会触发一个action 2. action交给struts2处理,读取src目录struts.xml文件,在配置中找到对应的action 3. 根据class="XXXAction"交给Spring(为什么struts的action会交给spring处理呢? 原因是:Struts2提供一个jar包:struts2-spring-plugin-2.1.2.jar,有个struts.propert

SpringMVC学习一、MVC三层架构与SpringMVC原理

SpringMVC SSM:Mybatis + Spring + SpringMVC MVC MVC是模型(Model).视图(View).控制器(Controller)的简写,是一种软件设计规范. 是将业务逻辑.数据.显示分离的方法来组织代码 MVC主要作用是降低了视图与业务逻辑间的双向耦合 MVC不是设计模式,是一种架构模式.不同的MVC存在差异 Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离

MVC模式和Spring MVC初识

概述 传统的Model1和Model2 在Model1的模式下,整个Web应用几乎全部是由JSP页面组成,接受和处理用户请求,并对请求处理后直接做出响应:JSP身兼View和Controller两个角色,将控制逻辑和表现逻辑糅合在一起. 缺点: 1.代码的复用性低. 2.增加了应用扩展和维护的难度. Model2是基于MVC架构的设计模式,具体实现如下如: MVC的思想是将一个应用分成三个基本部分,模型(Model).视图(View).控制器(Controller),这三个部分以最少的耦合协同工

springmvc执行原理及自定义mvc框架

springmvc是spring的一部分,也是一个优秀的mvc框架,其执行原理如下: (1)浏览器提交请求经web容器(比如tomcat)转发到中央调度器dispatcherServlet. (2)中央调度器调用处理器映射器handerMapping,处理器映射器根据请求的url找到处理该请求对应的处理器hander及相关的拦截器intercepter,将它们封装成一个处理器执行链并返回给中央调度器 (3)中央调度器根据处理器执行链中的处理器找到对应的处理器适配器handerAdaptor (4

Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中的spring web MVC模块

spring framework中的spring web MVC模块 1.概述 spring web mvc是spring框架中的一个模块 spring web mvc实现了web的MVC架构模式,可以被用于开发web网站 spring web mvc 实现web网站的原理,如下图: 2.使用spring web mvc开发web应用的步骤 step1:在自己的工程中引入spring web mvc模块 step2:配置spring web mvc模块 中的DispatcherServlet,告

[译]Introducing ASP.NET vNext and MVC 6

原文:http://www.infoq.com/news/2014/05/ASP.NET-vNext?utm_source=tuicool Part of the ASP.NET vNext initiative, ASP.NET MVC 6 represents a fundamental change to how Microsoft constructs and deploys web frameworks. The goal is to create a host agnostic fr

MVC之Servlet控制器

学习目的是为了知道如何用Servlet实现 MVC,也是从原理上弄清楚SpringMVC. 一.工程目录 功能为用户输入 一个商品的信息,并提交,程序保存商品并展示已经保存的商品的信息. 所有的jsp文件都在WEB-INFO下,因此不能直接访问. 二.程序代码  product 封闭了一个商品信息的javaBean . package app02a.domain; import java.io.Serializable; public class Product implements Seria

Pro ASP.NET Core MVC 6th 第三章

第三章 MVC 模式,项目和约定 在深入了解ASP.NET Core MVC的细节之前,我想确保您熟悉MVC设计模式背后的思路以及将其转换为ASP.NET Core MVC项目的方式. 您可能已经了解本章中讨论的一些想法和约定,特别是如果您已经完成了高级ASP.NET或C#开发. 如果没有,我鼓励你仔细阅读 - 深入地理解隐藏在MVC背后的东西可以帮助你在通读本书时更好地与MVC框架的功能联系起来. MVC的历史 模型视图控制器模式起源于20世纪70年代后期,来自施乐PARC的Smalltalk

Pro ASP.NET Core MVC 第6版 第一章

第一章 ASP.NET Core MVC 的前世今生 ASP.NET Core MVC 是一个微软公司开发的Web应用程序开发框架,它结合了MVC架构的高效性和简洁性,敏捷开发的思想和技术,和.NET 平台的最好的部分.在本章,我们将学习为什么微软创建ASP.NET Core MVC, 看看他和他的前辈的比较以及和其他类似框架的比较,最后,大概讲一下ASP.NET core MVC里面有什么新东西,还有本书中包括哪些内容. 了解ASP.NET Core MVC的历史 最开始的ASP.NET 诞生