Web开发之MVC框架

什么是MVC框架?

在这里我简要的说明一下,想要详细的了解MVC的小伙伴们可以上百度百科,或者找来相应的书籍,仔细研究和理解一下,但是要说明的的一点是,完全理解MVC并不是一件容易的事。

MVC的全称为Model View Controller,是模型-视图-控制器的缩写,一种软件框架模式,通俗点讲,就是将应用程序的输入、处理和输出进行解耦,使M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。

简单来说一下MVC框架的三个核心部件的内容,即Model、View和Controller。它们各自处理自己的任务,因此可以使不同的开发人员可以同时开发视图、控制器逻辑和业务逻辑。

Model: 是指要处理的业务代码和数据操作代码

View: 视图主要是指能够跟用户打交道并能够展示数据

Controller看成是Model和View的桥梁,接受用户的输入并调用模型和视图去完成用户的需求。

如何使用MVC编程?

既然MVC是一个通用的框架,那么我们就可以通过VS去创建一个使用MVC框架的解决方案,然后编写自己的代码,实现要求的功能。

首先,打开VS,新建项目如下图所示:

点击确定之后会看到右侧的解决方案资源管理器中已经为我们自动创建好了MVC框架,如下图所示:

然后我们就可以在相应的文件下创建模型、控制器和视图了。

来看一个小例子,我们在文件夹Controllers上右键添加一个控制器,如下图所示:

然后在Models文件中添加一个实体类,代码如下:

<span style="font-size:18px;">namespace MVCBlog.Models
{
    public class Dog
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public override string ToString()
        {
            return "ID=" + this.ID + ",Name=" + this.Name;
        }
    }
}</span>

这样我们就可以在控制器中写代码了,代码如下:

<span style="font-size:18px;">namespace MVCBlog.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
        public List<Models.Dog> InitData()
        {
            List<Models.Dog> list = null;
            list = new List<Models.Dog>()
            {
                new Dog(){ ID=1,Name="藏獒"},
                new Dog(){ ID=2,Name="牧羊犬"},
                new Dog(){ ID=3,Name="吉娃娃"},
                new Dog(){ ID=4,Name="哈士奇"}
            };
            return list;
        }
        public ActionResult Index2()
        {
            System.Text.StringBuilder sbHtml = new System.Text.StringBuilder(4000);
            List<Models.Dog> list = InitData();
            list.ForEach(d =>
            {
                sbHtml.AppendLine("<div>" + d.ToString() + "<div>");
            });
            ViewBag.HtmlStr = sbHtml.ToString();
            return View();
        }
    }
}</span>

最后我们来创建视图,方法是在控制器中的Index2方法上右击,选择添加视图即可,如下图所示:

我们会看到在Views文件夹下的Home文件夹中有了一个名为Index2.cshtml的文件,这个就是视图文件,我们在视图中写一行代码就可以调用控制器中的方法了,代码如下:

<span style="font-size:18px;">@{
    Layout = null;
}

<!DOCTYPE html>

<html>
    <head>
        <title>Index</title>
    </head>
    <body>
        @Html.Raw(ViewBag.HtmlStr)
    </body>
</html></span>

下面看如何运行程序,运行传统的Web应用程序我们在浏览器的地址栏中输入的是http://localhost:60063/Views/Home/Index2.aspx,而我们使用MVC编写的应用程序不是这样,我们只需要调用相应的视图即可,在浏览器中输入的是http://localhost:60063/Home/Index2,回车之后的结果如下:

总结:对于MVC框架,很多人都会想到三层框架,它们的确有相似的地方,都是对应用程序进行分层解耦,但是相比较而言,MVC框架的三个部件解耦的比较彻底,它们是相互独立的,改变其中一个不会影响其他的两个,做到了耦合性低,这样带来的最大的好处是可维护性高。MVC还有其他的优势,当然也有很多缺点,有兴趣的可以自己查阅资料。

还要说明一点的是,很多人对于框架模式和设计模式的概念不是很清楚,特别容易混淆两者。因此很多对MVC认识不深刻的人认为MVC是一种设计模式,实际上它们是完全不同的两个东西。简单来说,框架通常是代码重用,而设计模式是设计重用,架构则是介于两者之间,部分代码重用,部分设计重用,有时也可以分析重用。

引用一句话,框架是大智慧,用来对软件设计进行分工;设计模式是小技巧,对具体问题提出解决方案,以提高代码复用率,降低耦合度

MVC只是框架的一种,还有很多其他常用的框架,比如:Struts、Spring、Zend
Framework以及.NET MVC等,期待去学习和使用它们。

时间: 2024-08-06 16:01:30

Web开发之MVC框架的相关文章

python web开发之flask框架学习(2) 加载模版

上次学习了flask的helloword项目的创建,这次来学习flask项目的模版加载: 第一步:创建一个flask项目 第二步:在项目目录的templates文件夹下创建一个html文件 第三步: 加载模版文件这里会用到flask包下的一个模版渲染器render_template因此要倒入这个render_template 第四步:运行项目就可以看到模版加载的效果了 以上就是flask框架的模版加载学习了,有什么问题欢迎留言! 简书地址: Code人生 原文地址:https://www.cnb

Web开发之RSET API

REST介绍 如果要说什么是REST的话,那最好先从Web(万维网)说起. 什么是Web呢?读者可以查看维基百科的词条(http://zh.wikipedia.org/zh-cn/Web),具体的我就不多说了.总之,Web是我们在互联网上最常用的服务,甚至在某些人的心中,互联网就是Web.当然,Web只是互联网的一部分而已,只是大家用的最多而已,我们访问的所有网站都是基于Web. 那么,Web和REST之间究竟有什么关系呢?我们接下来将聊聊组成Web的几大基础技术,URI(统一资源标识符,用来标

HTML5+JS手机web开发之jQuery Mobile初涉

一.起始之语 我一直都是在PC上折腾网页的,这会儿怎么风向周边捣鼓起手机网页开发呢?原因是公司原先使用Java开发的产品,耗了不少人力财力,但是最后的效果却不怎么好.因为,Android系统一套东西,iPhone又是新的一套,折腾死人呐. 于是总监发狠,让我把手上的活都交出去,专心折腾web版的,看看最后效果如何. 加上我觊觎手机上的开发学习很久了,于是,一拍即合,搞起了手机开发方面的学习. 分享是很好的提高自身学习的方法.因为分享过程中梳理了所学,往往会有些意想不到的心得与收获.如此利人利已的

[Java Web] 3\WEB开发之HTML基础程序试手

1.初试: 1 <html> 2 <body> 3 <h1>My First Heading</h1> 4 <p>My first paragraph.</p> 5 </body> 6 </html> 2.标题: HTML 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的.显然由大标题变为小标题.... 1 <html> 2 <body> 3

【Go web开发之revel+mgo】第11章 部署到heroku上

演示地址  http://gblog-revel.herokuapp.com/ 1.申请mongohq 关于如何在注册heroku和mongohq帐号,我在之前的blog里面有说明,http://blog.csdn.net/joveth/article/details/19999535 这里简单的说一下,还记得我们的models/dao.go文件里的NewDao方法中被注释的那一行吗? session, err := mgo.Dial("mongodb://omind:[email protec

Java开发之Mybatis框架

mybasits配置文件书写1.configer文件配置<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><

Asp.net模块化开发之Mvc分区扩展框架

对于一个企业级项目开发,模块化是非常重要的. 默认Mvc框架的AreaRegistration对模块化开发已经支持比较好了,还有必要扩展吗?还能扩展吗? 本文中的栗子是使用.net4.0.Mvc4.0及Unity2.0(企业库4.0)的,提供完整源码. 本分区扩展集成了IoC和分区DI(依赖注入)及分区过滤器的支持. 本分区扩展框架(Fang.Mvc)在演示栗子源码中包含完整源码,拿到自己的项目直接引用即可使用了. 感兴趣的同学请继续,用AreaRegistration有不爽的看官请拭目以待..

Web开发之django(一基础篇)

什么是web框架? 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演.对于,所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. ############################################################################################ 基本配置一.创建dj

web开发之Servlet 一

因为最近在研究公司一套新的框架,发现这套框架的底层是对Struts2,Spring 封装后的WEB应用框架,而我发现如果仅仅是利用这个框架开发,确实很容易快速上手,做业务来说是没有问题的,但我觉得如果只对上层如何去用熟悉是不行,必须要学习其底层是如何玩的,而任何一套WEB应用框架的开发,肯定都是基于Servlet 对象中各个方法的生命周期来进行的,因此对Servlet的研究是有必要,虽然以前学过,但是很多原理都遗忘了,为此决定重新学习一下. 本人的开发工具和环境是:Myeclipse + Tom