百度
360搜索
搜狗搜索

mvc模式实例,ASP.NET MVC简单编程篇详细介绍

th td { text align: center; } 本文目录一览: 如何利用Node.js实现MVC框架的简单实例分析

下面小编就为大家带来一篇使用Node.js实现简易MVC框架的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧在使用Node.js搭建静态资源服务器一文中我们完成了服务器对静态资源请求的处理,但并未涉及动态请求,目前还无法根据客户端发出的不同请求而返回个性化的内容。单靠静态资源岂能撑得起这些复杂的网站应用,本文将介绍如何使用Node处理动态请求,以及如何搭建一个简易的 MVC 框架。因为前文已经详细介绍过静态资源请求如何响应,本文将略过所有静态部分。一个简单的示例先从一个简单示例入手,明白在 Node 中如何向客户端返回动态内容。假设我们有这样的需求:当用户访问/actors时返回男演员列表页当用户访问/actresses时返回女演员列表可以用以下的代码完成功能:const http = require('http');const url = require('url');http.createServer((req, res) => { const pathName = url.parse(req.url).pathname; if (['/actors', '/actresses'].includes(pathName)) { res.writeHead(200, { 'Content-Type': 'text/html' }); const actors = ['Leonardo DiCaprio', 'Brad Pitt', 'Johnny Depp']; const actresses = ['Jennifer Aniston', 'Scarlett Johansson', 'Kate Winslet']; let lists = []; if (pathName === '/actors') { lists = actors; } else { lists = actresses; } const content = lists.reduce((template, item, index) => { return template + `

No.${index+1} ${item}

`; }, `

${pathName.slice(1)}

`); res.end(content); } else { res.writeHead(404); res.end('

Requested page not found.

') }}).listen(9527);上面代码的核心是路由匹配,当请求抵达时,检查是否有对应其路径的逻辑处理,当请求匹配不上任何路由时,返回 404。匹配成功时处理相应的逻辑。上面的代码显然并不通用,而且在仅有两种路由匹配候选项(且还未区分请求方法),以及尚未使用数据库以及模板文件的前提下,代码都已经有些纠结了。因此接下来我们将搭建一个简易的MVC框架,使数据、模型、表现分离开来,各司其职。搭建简易MVC框架MVC 分别指的是:M: Model (数据)V: View (表现)C: Controller (逻辑)在 Node 中,MVC 架构下处理请求的过程如下:请求抵达服务端服务端将请求交由路由处理路由通过路径匹配,将请求导向对应的 controllercontroller 收到请求,向 model 索要数据model 给 controller 返回其所需数据controller 可能需要对收到的数据做一些再加工controller 将处理好的数据交给 viewview 根据数据和模板生成响应内容服务端将此内容返回客户端以此为依据,我们需要准备以下模块:server: 监听和响应请求router: 将请求交由正确的controller处理controllers: 执行业务逻辑,从 model 中取出数据,传递给 viewmodel: 提供数据view: 提供 html创建如下目录:-- server.js-- lib -- router.js-- views-- controllers-- modelsserver创建 server.js 文件:const http = require('http');const router = require('./lib/router')();router.get('/actors', (req, res) => { res.end('Leonardo DiCaprio, Brad Pitt, Johnny Depp');});http.createServer(router).listen(9527, err => { if (err) { console.error(err); console.info('Failed to start server'); } else { console.info(`Server started`); }});先不管这个文件里的细节,router是下面将要完成的模块,这里先引入,请求抵达后即交由它处理。router 模块router模块其实只需完成一件事,将请求导向正确的controller处理,理想中它可以这样使用:const router = require('./lib/router')();const actorsController = require('./controllers/actors');router.use((req, res, next) => { console.info('New request arrived'); next()});router.get('/actors', (req, res) => { actorsController.fetchList();});router.post('/actors/:name', (req, res) => { actorsController.createNewActor();});总的来说,我们希望它同时支持路由中间件和非中间件,请求抵达后会由 router 交给匹配上的中间件们处理。中间件是一个可访问请求对象和响应对象的函数,在中间件内可以做的事情包括:执行任何代码,比如添加日志和处理错误等修改请求 (req) 和响应对象 (res),比如从 req.url 获取查询参数并赋值到 req.query结束响应调用下一个中间件 (next)Note:需要注意的是,如果在某个中间件内既没有终结响应,也没有调用 next 方法将控制权交给下一个中间件, 则请求就会挂起__非路由中间件__通过以下方式添加,匹配所有请求:router.use(fn);比如上面的例子:router.use((req, res, next) => { console.info('New request arrived'); next()});__路由中间件__通过以下方式添加,以 请求方法和路径精确匹配:router.HTTP_METHOD(path, fn)梳理好了之后先写出框架:/lib/router.jsconst METHODS = ['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'];module.exports = () => { const routes = []; const router = (req, res) => { }; router.use = (fn) => { routes.push({ method: null, path: null, handler: fn }); }; METHODS.forEach(item => { const method = item.toLowerCase(); router[method] = (path, fn) => { routes.push({ method, path, handler: fn }); }; });};以上主要是给 router 添加了 use、get、post 等方法,每当调用这些方法时,给 routes 添加一条 route 规则。Note:Javascript 中函数是一种特殊的对象,能被调用的同时,还可以拥有属性、方法。接下来的重点在 router 函数,它需要做的是:从req对象中取得 method、pathname依据 method、pathname 将请求与routes数组内各个 route 按它们被添加的顺序依次匹配如果与某个route匹配成功,执行 route.handler,执行完后与下一个 route 匹配或结束流程 (后面详述)如果匹配不成功,继续与下一个 route 匹配,重复3、4步骤 const router = (req, res) => { const pathname = decodeURI(url.parse(req.url).pathname); const method = req.method.toLowerCase(); let i = 0; const next = () => { route = routes[i++]; if (!route) return; const routeForAllRequest = !route.method && !route.path; if (routeForAllRequest || (route.method === method && pathname === route.path)) { route.handler(req, res, next); } else { next(); } } next(); };对于非路由中间件,直接调用其 handler。对于路由中间件,只有请求方法和路径都匹配成功时,才调用其 handler。当没有匹配上的 route 时,直接与下一个route继续匹配。需要注意的是,在某条 route 匹配成功的情况下,执行完其 handler 之后,还会不会再接着与下个 route 匹配,就要看开发者在其 handler 内有没有主动调用 next() 交出控制权了。在__server.js__中添加一些route:router.use((req, res, next) => { console.info('New request arrived'); next()});router.get('/actors', (req, res) => { res.end('Leonardo DiCaprio, Brad Pitt, Johnny Depp');});router.get('/actresses', (req, res) => { res.end('Jennifer Aniston, Scarlett Johansson, Kate Winslet');});router.use((req, res, next) => { res.statusCode = 404; res.end();});每个请求抵达时,首先打印出一条 log,接着匹配其他route。当匹配上 actors 或 actresses 的 get 请求时,直接发回演员名字,并不需要继续匹配其他 route。如果都没匹配上,返回 404。在浏览器中依次访问 http://localhost:9527/erwe、http://localhost:9527/actors、http://localhost:9527/actresses 测试一下:network 中观察到的结果符合预期,同时后台命令行中也打印出了三条 New request arrived语句。接下来继续改进 router 模块。首先添加一个 router.all 方法,调用它即意味着为所有请求方法都添加了一条 route:router.all = (path, fn) => { METHODS.forEach(item => { const method = item.toLowerCase(); router[method](path, fn); }) };接着,添加错误处理。/lib/router.jsconst defaultErrorHander = (err, req, res) => { res.statusCode = 500; res.end();};module.exports = (errorHander) => { const routes = []; const router = (req, res) => { ... errorHander = errorHander || defaultErrorHander; const next = (err) => { if (err) return errorHander(err, req, res); ... } next(); };server.js...const router = require('./lib/router')((err, req, res) => { console.error(err); res.statusCode = 500; res.end(err.stack);});...默认情况下,遇到错误时会返回 500,但开发者使用 router 模块时可以传入自己的错误处理函数将其替代。修改一下代码,测试是否能正确执行错误处理:router.use((req, res, next) => { console.info('New request arrived'); next(new Error('an error'));});这样任何请求都应该返回 500:继续,修改 route.path 与 pathname 的匹配规则。现在我们认为只有当两字符串相等时才让匹配通过,这没有考虑到 url 中包含路径参数的情况,比如:localhost:9527/actors/Leonardo与router.get('/actors/:name', someRouteHandler);这条route应该匹配成功才是。新增一个函数用来将字符串类型的 route.path 转换成正则对象,并存入 route.pattern:const getRoutePattern = pathname => { pathname = '^' + pathname.replace(/(\:\w+)/g, '\(\[a-zA-Z0-9-\]\+\\s\)') + '$'; return new RegExp(pathname);};这样就可以匹配上带有路径参数的url了,并将这些路径参数存入 req.params 对象: const matchedResults = pathname.match(route.pattern); if (route.method === method && matchedResults) { addParamsToRequest(req, route.path, matchedResults); route.handler(req, res, next); } else { next(); }const addParamsToRequest = (req, routePath, matchedResults) => { req.params = {}; let urlParameterNames = routePath.match(/:(\w+)/g); if (urlParameterNames) { for (let i=0; i < urlParameterNames.length; i++) { req.params[urlParameterNames[i].slice(1)] = matchedResults[i + 1]; } }}添加个 route 测试一下:router.get('/actors/:year/:country', (req, res) => { res.end(`year: ${req.params.year} country: ${req.params.country}`);});访问http://localhost:9527/actors/1990/China试试:router 模块就写到此,至于查询参数的格式化以及获取请求主体,比较琐碎就不试验了,需要可以直接使用 bordy-parser 等模块。现在我们已经创建好了router模块,接下来将 route handler 内的业务逻辑都转移到 controller 中去。修改__server.js__,引入 controller:...const actorsController = require('./controllers/actors');...router.get('/actors', (req, res) => { actorsController.getList(req, res);});router.get('/actors/:name', (req, res) => { actorsController.getActorByName(req, res);});router.get('/actors/:year/:country', (req, res) => { actorsController.getActorsByYearAndCountry(req, res);});...新建__controllers/actors.js__:const actorsTemplate = require('../views/actors-list');const actorsModel = require('../models/actors');exports.getList = (req, res) => { const data = actorsModel.getList(); const htmlStr = actorsTemplate.build(data); res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(htmlStr);};exports.getActorByName = (req, res) => { const data = actorsModel.getActorByName(req.params.name); const htmlStr = actorsTemplate.build(data); res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(htmlStr);};exports.getActorsByYearAndCountry = (req, res) => { const data = actorsModel.getActorsByYearAndCountry(req.params.year, req.params.country)
JS常用设计模式(MVC、MVP、MVVM及其他设计模式)

阅读更多 >>>  ssm是基于mvc吗,ssm与mvc

一、MVC

MVC模式的意思是,软件可以分成三个部分。

视图(View):用户界面。

控制器(Controller):业务逻辑

模型(Model):数据保存

各部分之间的通信方式如下。

View 传送指令到 Controller

Controller 完成业务逻辑后,要求 Model 改变状态

Model 将新的数据发送到 View,用户得到反馈

所有通信都是单向的。

二、互动模式

接受用户指令时,MVC 可以分成两种方式。一种是通过 View 接受指令,传递给 Controller。

另一种是直接通过controller接受指令。

三、实例:Backbone

实际项目往往采用更灵活的方式,以 Backbone.js 为例。

1. 用户可以向 View 发送指令(DOM 事件),再由 View 直接要求 Model 改变状态。

2. 用户也可以直接向 Controller 发送指令(改变 URL 触发 hashChange 事件),再由 Controller 发送给 View。

3. Controller 非常薄,只起到路由的作用,而 View 非常厚,业务逻辑都部署在 View。所以,Backbone 索性取消了 Controller,只保留一个 Router(路由器) 。

四、MVP

MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。

1. 各部分之间的通信,都是双向的。

2. View 与 Model 不发生联系,都通过 Presenter 传递。

3. View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。

五、MVVM

MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。

唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。 Angular 和 Ember 都采用这种模式。

1、js工厂模式

说明:

在函数中定义对象,并定义对象的各种属性,虽然属性可以为方法,但是建议将属性为方法的属性定义到函数之外,这样可以避免重复创建该方法。

引用该对象的时候,这里使用的是 var x = Parent()而不是 var x = new object(); 因为后者可能会出现很多问题(前者也成为工厂经典方式,后者称之为混合工厂方式),不推荐使用new的方式使用该对象。

在函数的最后返回该对象。

不推荐使用这种方式创建对象,但应该了解。 ?

2、js构造函数模式

说明:

与工厂方式相比,使用构造函数方式创建对象无需在函数内部创建对象,而使用this指代,并而函数无需明确return。

同工厂模式一样,虽然属性的值可以为方法,仍建议将该方法定义在函数之外。

同样的,不推荐使用这种方式创建对象,但仍需了解。

3、js原型模式

说明:

函数中不对属性进行定义。

利用prototype属性对属性进行定义。

同样的额,不推荐使用这样的方式创建对象。

4、构造函数+原型的js混合模式(推荐)

说明:

该模式是指混合搭配使用构造函数和原型方式。

将所有的属性,不是方法的定义在函数中(构造函数的方式),将所有属性值为方法的利用prototype在函数之外定义(原型方式)。

推荐使用这样的方式创建对象,这样有好处。

5、构造函数+原型的动态原型模式(推荐)

说明:

动态原型方式可以理解为混合构造函数,原型方式的一个特例。

该模式中,属性为方法的属性直接在函数中进行了定义,但是因为

if(typeof Parent.lev == "undefined"){

? ? ? ? ? Parent.prototype.lev = function(){

? ? ? ? ? ? return this.name;

????????? }

?? Parent.lev = true;

? ? }?

从而保证创建该对象的实例时,属性的方法不会被重复的创建。

mvc框架是什么意思?举个例子!

一种结构,多用于WEB。你百度一下会有很具体的解释。
MVC (Modal View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。
MVC如何工作
MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

阐述在java中是如何分层的,可以介绍MVC架构,以一个简单的实例说明

MVC模式。
Model模式层
View视图层
Controller控制器
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
  模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。
  业务模型还有一个很重要的模型那就是数据模型。数据模型主要指实体对象的数据 保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
  控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
MVC的一个形象的例子,我要去买一辆奔驰车,那么我先要去4S店,那么这个店面就是控制层,他不会关心车子是什么制造的,只管提供车给我。那么车厂就是SERVICE层,他只管制造车子,把结果提供给4S店,那车子的零件又是怎么来的呢?他就是通过更多的零件厂商来提供,那么这些零件厂商就是DAO层。

mvc设计模式是什么(mvc模式是什么意思)

如何理解mvc设计模式?这个问题我以前帮人回答过,现在给你回复一下。模型是指数据模型。视图是指UI视图另外,控制是指控制。为什么要用MVC?目前最好使用MVC模式设计所有有UI界面的程序。视图:我们需要有一个特殊的模块,也存储所有的UI组件库,按钮,图片,文本框,列表,菜单等。这些东西都是死的,没有内容。比如一个文本框,如果你把它从组库中拿出来,默认里面是没有文字的。模型:我们的数据模型,如果是面向对象的程序,就是数据类。比如学生,老师,车,工作人员等等。它们也可以理解为数据结构。我们必须有一个特殊的模块来存储这些结构。结构也死了。如果不把他拿出来使用,他将永远躺在模块里。Control:Controller,可以理解为一段代码,它会根据当前的程序状态机,用适当的数据模型中的数据填充UI视图。或者,通过监视UI组件的更改,可以将一些更改写回到数据模型中。用户注册界面,有四个UI组件1。文本框提示用户输入一些注册信息2。两个输入文本框允许用户输入他们的帐号和密码3。一个按钮。这里,模型是用户配置文件。视图是四个UI组件。控制需要程序加代码:当按钮被按下时,首先生成用户的实例。实际上,字符串是分别从两个输入框中获取的,并分配了用户的id和密码。保存用户实例或将其发送到服务器。在这个过程中,三个模块各司其职,尽可能少的互不干扰。尤其是模型和视图之间没有干扰,而控件是桥梁。以上是对java的MVC模式的大概解释。java中MVC的web应用也有狭义的解释,就是B/S中常用的MVC架构,具体可以查询这个信息。它是几个英文首字母的缩写Model,view,Controllermodel,View和controlcontroller。从英语中不难看出,M代表企业数据和业务规则。v是用户看到并与之交互的界面。控制器接受用户的输入,并调用模型和视图来满足用户的要求。这种模式的特点是分工明确,使程序员专注于业务逻辑,界面程序员专注于表现。同时,也方便了软件工程的管理。什么是MVC模式?MVC是‘模型-视图-控制器’的缩写,中文翻译过来就是‘模式-视图-控制器’。MVC应用程序总是由这三部分组成。事件导致控制器更改模型和/或视图。只要控制器改变了模型的数据或属性,所有的依赖视图都会自动更新。类似地,每当控制器改变视图时,视图将从潜在的模型中获取数据来刷新自己。MVC模式最早由smalltalk语言研究组提出,应用于用户交互应用。smalltalk语言和java语言有很多相似之处,都是面向对象的语言。自然,SUN在petstore案例应用中推荐MVC模式作为开发Web应用的架构模式。MVC模式是一种架构模式,但实际上需要其他模式的配合。在J2EE模式目录中,通常采用面向工人的服务模式,面向工人的服务模式可以由集中控制器模式、调度器模式和页面助手模式组成。Struts只实现MVC的视图和控制器部分,模型部分需要开发者自己实现。Struts提供了抽象的类操作,这样开发人员就可以将模型应用到Struts框架中。MVC模式是一种复杂的架构模式,其实现也非常复杂。但是我们总结了很多可靠的设计模式,各种设计模式的组合使得MVC模式的实现相对简单容易。视图可以看作一棵树,显然可以用复合模式来实现。视图和模型之间的关系可以通过观察者模式来体现。控制控制器视图的显示可以通过策略模式来实现。模型通常是一个中介,可以通过中介模式来实现。

mvc是什么意思

mvc是一种软件设计模式。
MVC的目的是将应用程序的业务逻辑,用户界面和用户输入分离开来,从而提高代码的可维护性和可重用性,它将应用程序分成三个主要组成部分:模型,视图和控制器。
M是指模型,V是视图,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。
在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
框架和设计模式的区别
框架、设计模式这两个概念总容易被混淆,其实它们之间还是有区别的。框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。
在软件生产中有三种级别的重用:内部重用,即在同一应用中能公共使用的抽象块。代码重用,即将通用模块组合成库或工具集,以便在多个应用和领域都能使用。应用框架的重用,即为专用领域提供通用的或现成的基础结构,以获得最高级别的重用性。
框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象。
框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示。设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。
以上内容参考:百度百科—MVC框架

android程序设计也遵循MVC设计。mvc,分别是什么,原因,实例,最好有个源代码

mvc 就是 模型、视图、控制器,也就是所说的三层架构。java 的struts,c# 的asp.net mvc 都是这种架构。
model:
#region 模型
[PropertiesMustMatch("NewPassword", "ConfirmPassword", ErrorMessage = "新密码和确认密码不匹配。")]
public class ChangePasswordModel
{
[Required]
[DataType(DataType.Password)]
[DisplayName("当前密码")]
public string OldPassword { get; set; }
[Required]
[ValidatePasswordLength]
[DataType(DataType.Password)]
[DisplayName("新密码")]
public string NewPassword { get; set; }
[Required]
[DataType(DataType.Password)]
[DisplayName("确认新密码")]
public string ConfirmPassword { get; set; }
}
----------------------------------------------------
view:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

主页

<%: ViewData["Message"] %>

若要了解有关 ASP.NET MVC 的更多信息,请访问 。

--------------------------------------------------------

controller:

public ActionResult LogOn()

{

return View();

}

[HttpPost]

public ActionResult LogOn(LogOnModel model, string returnUrl)

{

if (ModelState.IsValid)

{

if (MembershipService.ValidateUser(model.UserName, model.Password))

{

FormsService.SignIn(model.UserName, model.RememberMe);

if (!String.IsNullOrEmpty(returnUrl))

{

return Redirect(returnUrl);

}

else

{

return RedirectToAction("Index", "Home");

}

}

else

{

ModelState.AddModelError("", "提供的用户名或密码不正确。");

}

}

// 如果我们进行到这一步时某个地方出错,则重新显示表单

return View(model);

}

MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

MVC在Android里面举个例子可以这么看:

M就是contentprovider(内容提供者),使用的数据保存方式一般是SQLite,可以跨进程,跨应用访问,当然要有权限。

V就是XML布局视图文件,不用XML的话就是VIEW类,负表界面显示。

C可以看作是Activity,就相当于JavaME里面的MIDlet,从哪个contentprovider取数据,显示到哪个VIEW都是它来管理。

当然以上只是一个例子,比如数据不要求共享的话,M我可以不用contentprovider,直接使用SQLite,C也不一定要用Activity,Android里面有时候要用到不提供用户交互界面的Service,在后台充当控制器的作用。
ASP.NET MVC简单编程篇

阅读更多 >>>  mvc模式实验报告总结,mvc实训报告总结

   ASP NET MVC概念
  ASP NET MVC 是微软官方提供的MVC模式 说白了 ASP NET MVC知识开发ASP NET Web
  应用程序的一个框架而已 而且其只是一个表示层框架 同时也是微软的第一个开源项目
  使用ASP NET开发web应用程序方式
   WebForm方式

   Asp Net MVC 方式
  注意 WebForm方式和Asp Net MVC方式是使用开发web应用程序的两种并行方式 mvc(以下简称mvc)的目的并不是取代WebForm 而是web开发的另外一种选择而已
   MVC模式简介
  MVC模式是一种表现模式 它将web应用程序分成三个主要组件 即 视图(View) 控制器(Controller)和模型(Model)
  M Model主要是存储或者是处理数据的组件
  Model其实是实现业务逻辑层对实体类相应数据库操作 如CRUD(Create/Retrieve/Update/Delete) 它包括数据 验证规则 数据访问和业务逻辑等应用程序信息
  V View是用户接口层组件 主要是将Model中的数据展示给用户
  C Controller处理用户交互 从Model中获取数据并将数据传给指定的View
   要点
   M和V的实现代码分离 从而使同一个程序可以使用不同的表现形式 C存在的目的则是确保M和V的同步 一旦M改变 V应该同步更新
   控制器隔离了业务逻辑和View耦合 使得业务逻辑和数据规则等很容易改变而不影响到前台页面
   View和Controller都可以直接请求Model 但是Model不依赖View和Controller
   Controller可以直接请求View来显示具体页面 View不依赖Controller
   第一个Asp Net MVC程序
  案例 下面我们通过向EFFirst数据库的Customer表中添加数据数据并且将所有用户信息展示到对应页面的方式 来书写第一个Asp Net MVC应用程序
   Customer表结构
  CustId(客户编号) 主键自动增长
  CustName(客户姓名)
  CustAddress(客户地址)
   首先创建MVC 的项目
  对解决方案点右键 新建项目 如下图
  将项目名称命名为MyMVC 然后点击确定 如下图
  选择否 点击确定
   接下来对项目的目录结构进行剖析
  App_Data;在该文件夹下的文件是不同通过URL访问的 起到保护文件的作用
  Content:项目用到的素材和样式等的文件夹 例如我们可以将Image文件夹和Css文件夹放到Content文件夹中
  Controllers:控制器存储文件夹
  Models 模型存放文件夹
  Scripts js(javascript)文件存储文件夹
  Views 视图存放文件夹
   创建控制器UserInfoController
   创建视图Register
  Register页面对Controller发起请求 请求可以分两种 get和post 所以我们写了两个action 为了方便后续操作 我们可以对action写一个重载 无参的Register()用来处理get请求 带参数的Register(FormCollection collection)用来处理post请求 如下图
  然后对无参的Register点右键 选择添加视图菜单项
  点击添加按钮 则在Views文件夹中会自动创建出一个名称为UserInfo(和action所在的控制器名称相同)的文件夹 并且在该文件夹下创建一个名称为Register的aspx文件 注意 这里的aspx文件没有后缀名为 cs的文件
  在Register中书写代码如下所示
  既然是注册页面 必须将用户输入的信息提交到服务器 此时我们可以使用form表单 为其action属性设置属性值为 /UserInfo/Register UserInfo代表的是UserInfoController Register代表UserInfoController下的action 也即是说我们将信息提交到了Register这个action
  用户填写完信息后 流程跳转到了UserInfoController 此时我们可以在接收Post请求的action中书写如下代码
  说明 return RedirectToAction( Index )作用是跳转到名称为Index的action继续执行
   创建action Index和视图Index
  用同样的方式对Index点右键 创建View Index

微冷的雨 用户详细信息页面

由于顾客的数据肯定会出现多条 因此使用table显示

)ViewData[ Customer ]) {%>

<% foreach (var item in (IEnumerable

<%} %>

编号 用户姓名 用户地址
<%:item CustId %> <%:item CustName %> <%:item CustAddress %>

View Code 最终我们可以实现如下效果 lishixinzhi/Article/program/net/201311/12164


请介绍以下MVC模式

MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
视图
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和象XHTML,XML/XSL,WML等一些标识语言和Web services.
如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。
模型
模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器

控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
现在我们总结MVC的处理过程,首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
[编辑本段]为什么要使用 MVC
大部分Web应用程序都是用像ASP,PHP,或者CFML这样的过程化(自PHP5.0版本后已全面支持面向对象模型)语言来创建的。它们将像数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。经验比较丰富的开发者会将数据从表示层分离开来,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。MVC从根本上强制性的将它们分开。尽管构造MVC应用程序需要一些额外的工作,但是它给我们带来的好处是无庸质疑的。
首先,最重要的一点是多个视图能共享一个模型,现在需要用越来越多的方式来访问你的应用程序。对此,其中一个解决之道是使用MVC,无论你的用户想要Flash界面或是 WAP 界面;用一个模型就能处理它们。由于你已经将数据和业务规则从表示层分开,所以你可以最大化的重用你的代码了。
由于模型返回的数据没有进行格式化,所以同样的构件能被不同界面使用。例如,很多数据可能用HTML来表示,但是它们也有可能要用Macromedia Flash和WAP来表示。模型也有状态管理和数据持久性处理的功能,例如,基于会话的购物车和电子商务过程也能被Flash网站或者无线联网的应用程序所重用。
因为模型是自包含的,并且与控制器和视图相分离,所以很容易改变你的应用程序的数据层和业务规则。如果你想把你的数据库从MySQL移植到Oracle,或者改变你的基于RDBMS数据源到LDAP,只需改变你的模型即可。一旦你正确的实现了模型,不管你的数据来自数据库或是LDAP服务器,视图将会正确的显示它们。由于运用MVC的应用程序的三个部件是相互独立,改变其中一个不会影响其它两个,所以依据这种设计思想你能构造良好的松偶合的构件。
对我来说,控制器的也提供了一个好处,就是可以使用控制器来联接不同的模型和视图去完成用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。
[编辑本段]MVC的优点
◆低耦合性。视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
◆高重用性和可适用性。随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的仅令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
◆较低的生命周期成本。MVC使降低开发和维护用户接品的技术含量成为可能。
◆快速的部署。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中业务于表现形式上。
◆可维护性。分熟视图层和业务逻辑层也使得WEB应用更易于维护和修改。
◆有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。
[编辑本段]MVC的缺点
MVC的缺点是由于它没有明确的定义,所以完全理解MVC并不是很容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。
你将不得不花费相当可观的时间去考虑如何将MVC运用到你的应用程序,同时由于模型和视图要严格的分离,这样也给调试应用程序到来了一定的困难。每个构件在使用之前都需要经过彻底的测试。一旦你的构件经过了测试,你就可以毫无顾忌的重用它们了。
根据开发者经验,由于开发者将一个应用程序分成了三个部件,所以使用MVC同时也意味着你将要管理比以前更多的文件,这一点是显而易见的。这样好像我们的工作量增加了,但是请记住这比起它所能带给我们的好处是不值一提。
MVC并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
MVC是一条创建软件的好途径
MVC设计模式是一个很好创建软件的途径,它所提倡的一些原则,像内容和显示互相分离可能比较好理解。但是如果你要隔离模型、视图和控制器的构件,你可能需要重新思考你的应用程序,尤其是应用程序的构架方面。如果你肯接受MVC,并且有能力应付它所带来的额外的工作和复杂性,MVC将会使你的软件在健壮性,代码重用和结构方面上一个新的台阶。
这样的问题我也在网上问过
其实 人家给你回答了你不知道怎么回师
你想啊 MVC他是一个设计模式,
一个设计模式 能用几句话或者一段话能说明白吗?
MVC 表示模型-视图-控制 设计模式
你应该是学JAVA WEB开发的
你现在不用知道怎么回师
等你学完了struts后 你会自动明白是怎么回是
而且你也会用!
我认为这个连接里面的内容已经介绍的很详细了~
http://baike.baidu.com/view/739359.htm
请参考~
M是模型的简称,V是视图的简称,C是控制器的简称。
这是一种现在大型项目比较流行的设计模式,具体做法就是把项目各个部分分离开来,使得整个项目的开发更加清晰,而且采用这种模式也便于以后对项目的维护。
V是视图,就是直接和用户打交道的部分,这些都是用户直接能看到的。如果你开发的是WEB方面的项目的话,那么就包括JSP,和FORMBEAN等。
M是真正的业务处理,具体做什么都写在这里。
C是控制器,是告诉程序应该去做什么,至于怎么做就都是在M中实现的。
以上只是一些简单的介绍,也是我自己的理解。如果你想真正的掌握这方面的知识,还应该多看些书,多做些项目。
http://baike.baidu.com/view/739359.htm
MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。MVC应用程序总是由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model中获取数据来刷新自己。MVC模式最早是smalltalk语言研究团提出的,应用于用户交互应用程序中。smalltalk语言和java语言有很多相似性,都是面向对象语言,很自然的SUN在petstore(宠物店)事例应用程序中就推荐MVC模式作为开发Web应用的架构模式。MVC模式是一种架构模式,其实需要其他模式协作完成。在J2EE模式目录中,通常采用service to worker模式实现,而service to worker模式可由集中控制器模式,派遣器模式和Page Helper模式组成。而Struts只实现了MVC的View和Controller两个部分,Model部分需要开发者自己来实现,Struts提供了抽象类Action使开发者能将Model应用于Struts框架中。
MVC模式是一个复杂的架构模式,其实现也显得非常复杂。但是,我们已经终结出了很多可靠的设计模式,多种设计模式结合在一起,使MVC模式的实现变得相对简单易行。Views可以看作一棵树,显然可以用Composite Pattern来实现。Views和Models之间的关系可以用Observer Pattern体现。Controller控制Views的显示,可以用Strategy Pattern实现。Model通常是一个调停者,可采用Mediator Pattern来实现。
现在让我们来了解一下MVC三个部分在J2EE架构中处于什么位置,这样有助于我们理解MVC模式的实现。MVC与J2EE架构的对应关系是:View处于Web Tier或者说是Client Tier,通常是JSP/Servlet,即页面显示部分。Controller也处于Web Tier,通常用Servlet来实现,即页面显示的逻辑部分实现。Model处于Middle Tier,通常用服务端的javaBean或者EJB实现,即业务逻辑部分的实现。
一、MVC设计思想
MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。
业务模型还有一个很重要的模型那就是数据模型J 菽P椭饕 甘堤宥韵蟮氖 ?保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化-传播机制。模型、视图、控制器三者之间的关系和各自的主要功能,如图1所示。
二、MVC设计模式的实现
四、MVC的优点
大部分用过程语言比如ASP、PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程。例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。产品设计弹性力度很小,很难满足用户的变化性需求。MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。
首先,最重要的是应该有多个视图对应一个模型的能力。在目前用户需求的快速变化下,可能有多种方式访问应用的要求。例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就是说订单的处理是一致的。按MVC设计模式,一个订单模型以及多个视图即可解决问题。这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。 其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。
再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。
控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。
最后,它还有利于软件工程化管理。由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
五、MVC的不足
MVC的不足体现在以下几个方面:
(1)增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
(2)视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
(3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
(4) 目前,一般高级的界面工具或构造器不支持MVC模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。
ASP.NET提供了一个很好的实现这种经典设计模式的类似环境。开发者通过在ASPX页面中开发用户接口来实现视图;控制器的功能在逻辑功能代码(.cs)中实现;模型通常对应应用系统的业务部分。在ASP.NET中实现这种设计而提供的一个多层系统,较经典的ASP结构实现的系统来说有明显的优点。将用户显示(视图)从动作(控制器)中分离出来,提高了代码的重用性。将数据(模型)从对其操作的动作(控制器)分离出来可以让你设计一个与后台存储数据无关的系统。就MVC结构的本质而言,它是一种解决耦合系统问题的方法。
2.1 视图
视图是模型的表示,它提供用户交互界面。使用多个包含单显示页面的用户部件,复杂的Web页面可以展示来自多个数据源的内容,并且网页人员,美工能独自参与这些Web页面的开发和维护。
在ASP.NET下,视图的实现很简单。可以像开发WINDOWS界面一样直接在集成开发环境下通过拖动控件来完成页面开发本。本文中介绍每一个页面都采用复合视图的形式即:一个页面由多个子视图(用户部件)组成;子视图可以是最简单HTML 控件、服务器控件或多个控件嵌套构而成的Web自定义控件。页面都由模板定义,模板定义了页面的布局,用户部件的标签和数目,用户指定一个模板,平台根据这些信息自动创建页面。针对静态的模板内容,如页面上的站点导航,菜单,友好链接,这些使用缺省的模板内容配置;针对动态的模板内容(主要是业务内容),由于用户的请求不同,只能使用后期绑定,并且针对用户的不同,用户部件的显示内容进行过滤。使用由用户部件根据模板配置组成的组合页面,它增强了可重用性,并原型化了站点的布局。
视图部分大致处理流程如下:首先,页面模板定义了页面的布局;页面配置文件定义视图标签的具体内容(用户部件);然后,由页面布局策略类初始化并加载页面;每个用户部件根据它自己的配置进行初始化,加载校验器并设置参数,以及事件的委托等;用户提交后,通过了表示层的校验,用户部件把数据自动提交给业务实体即模型。
这一部分主要定义了WEB页面基类PageBase;页面布局策略类PageLayout,完成页面布局,用于加载用户部件到页面;用户部件基类UserControlBase即用户部件框架,用于动态加载检验部件,以及实现用户部件的个性化。为了实现WEB应用的灵活性,视图部分也用到了许多配置文件例如:置文件有模板配置、页面配置、路径配置、验证配置等。
2.2 控制器
为了能够控制和协调每个用户跨越多个请求的处理,控制机制应该以集中的方式进行管理。因此,为了达到集中管理的目的引入了控制器。应用程序的控制器集中从客户端接收请求(典型情况下是一个运行浏览器的用户),决定执行什么商业逻辑功能,然后将产生下一步用户界面的责任委派给一个适当的视图组件。
用控制器提供一个控制和处理请求的集中入口点,它负责接收、截取并处理用户请求;并将请求委托给分发者类,根据当前状态和业务操作的结果决定向客户呈现的视图。在这一部分主要定义了HttpReqDispatcher(分发者类)、HttpCapture(请求捕获者类)、Controller(控制器类)等,它们相互配合来完成控制器的功能。请求捕获者类捕获HTTP请求并转发给控制器类。控制器类是系统中处理所有请求的最初入口点。控制器完成一些必要的处理后把请求委托给分发者类;分发者类分发者负责视图的管理和导航,它管理将选择哪个视图提供给用户,并提供给分发资源控制。在这一部分分别采用了分发者、策略、工厂方法、适配器等设计模式。
为了使请求捕获者类自动捕获用户请求并进行处理,ASP.NET 提供低级别的请求/响应 API,使开发人员能够使用 .NET 框架类为传入的 HTTP 请求提供服务。为此,必须创作支持 System.Web.IHTTPHandler 接口和实现 ProcessRequest() 方法的类即:请求捕获者类,并在web.config 的 <httphandlers> 节中添加类。ASP.NET 收到的每个传入 HTTP 请求最终由实现 IHTTPHandler 的类的特定实例来处理。IHttpHandlerFactory 提供了处理 IHttpHandler 实例 URL 请求的实际解析的结构。HTTP 处理程序和工厂在 ASP.NET 配置中声明为 web.config 文件的一部分。ASP.NET 定义了一个 <httphandlers> 配置节,在其中可以添加和移除处理程序和工厂。子目录继承 HttpHandlerFactory 和 HttpHandler 的设置。 HTTP 处理程序和工厂是 ASP.NET 页框架的主体。工厂将每个请求分配给一个处理程序,后者处理该请求。 例如,在全局 machine.config 文件中,ASP.NET 将所有对 ASPx 文件的请求映射到 HttpCapture类:
<httphandlers>
...
...
</httphandlers>
2.3 模型
MVC系统中的模型从概念上可以分为两类――系统的内部状态和改变系统状态的动作。模型是你所有的商业逻辑代码片段所在。本文为模型提供了业务实体对象和业务处理对象:所有的业务处理对象都是从ProcessBase类派生的子类。业务处理对象封装了具体的处理逻辑,调用业务逻辑模型,并且把响应提交到合适的视图组件以产生响应。业务实体对象可以通过定义属性描述客户端表单数据。所有业务实体对象都EntityBase派生子类对象,业务处理对象可以直接对它进行读写,而不再需要和request、response对象进行数据交互。通过业务实体对象实现了对视图和模型之间交互的支持。实现时把"做什么"(业务处理)和"如何做"(业务实体)分离。这样可以实现业务逻辑的重用。由于各个应用的具体业务是不同的,这里不再列举其具体代码实例。
三、MVC设计模式的扩展
通过在ASP.NET中的MVC模式编写的,具有极其良好的可扩展性。它可以轻松实现以下功能:
①实现一个模型的多个视图;
②采用多个控制器;
③当模型改变时,所有视图将自动刷新;
④所有的控制器将相互独立工作。
这就是MVC模式的好处,只需在以前的程序上稍作修改或增加新的类,即可轻松增加许多程序功能。以前开发的许多类可以重用,而程序结构根本不再需要改变,各类之间相互独立,便于团体开发,提高开发效率。下面讨论如何实现一个模型、两个视图和一个控制器的程序。其中模型类及视图类根本不需要改变,与前面的完全一样,这就是面向对象编程的好处。对于控制器中的类,只需要增加另一个视图,并与模型发生关联即可。该模式下视图、控制器、模型三者之间的示意图如图2所示。
同样也可以实现其它形式的MVC例如:一个模型、两个视图和两个控制器。从上面可以看出,通过MVC模式实现的应用程序具有极其良好的可扩展性,是ASP.NET面向对象编程的未来方向。

什么是mvc框架(什么是Mvc)

常用的MVC框架有哪些?常见的MVC框架有JSP?servlet?javabean的模式。一个MVC模式的框架,强制分离应用的输入、处理和输出。使用MVC的应用程序分为三个核心组件:模型、视图和控制器。他们各自处理自己的任务。最典型的MVC是JSP?servlet?javabean的模式。使用mvc框架核心控制器的主要目的是处理所有的请求,然后统一处理那些特殊的请求(控制器)(字符编码、文件上传、参数接受、异常处理等。).SpringMVC核心控制器是Servlet,Struts2是Filter。MVC框架性能?SpringMVC会比Struts2稍微快一点。SpringMVC是基于方法的设计,而Sturts2是基于类的设计。每次发送请求都会实例化一个动作,每个动作都会注入属性。SpringMVC基于方法,粒度更细,但要像控制servlet中的数据一样小心控制。SpringMVC是方法级拦截。拦截方法后,根据参数上的注释注入请求数据。在SpringMVC中,一个方法对应一个请求上下文。Struts2框架是类级拦截。每次请求到来时,都会创建一个动作,然后调用settergetter方法在请求中注入数据。Struts2实际上是通过settergetter方法处理请求的。参考来源:百度百科-mvc框架mvc是一种框架模式,强制分离应用程序的输入、处理和输出。使用mvc的应用程序分为三个核心组件:模型、视图和控制器。他们各自处理自己的任务。最典型的mvc模式是jspservletjavabean模式。很多框架都是为了方便MVC模式的实现而设计的,比如Struts和spring。现在很多公司都是自己实现MVC框架,而不是使用开源框架。Struts1,Struts2,SpringMVC,Grails和JSF是常用的MVC框架,还有Tapestry。mvc框架是什么意思?比如!WEB中最常用的结构。百度会有非常具体的解释。需要做网页什么的吗?以j2ee为例,我用过的很多mvc框架都是前端显示:jsp(htmlcssjs(jquery))后端:Struts2/1SpringIbatis/Hibernate/MyBatis,目前比较流行的。Hibernate具有最好的数据库兼容性。Ibatis/mybatis比较好用。

阅读更多 >>>  链表c语言经典例题,求写C语言 创建链表实例子。要最基本的 包括注释。

网站数据信息

"mvc模式实例,ASP.NET MVC简单编程篇"浏览人数已经达到21次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:mvc模式实例,ASP.NET MVC简单编程篇的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!