精华内容
下载资源
问答
  • MVC架构模式

    2021-03-01 20:51:27
    文章首先介绍了设计模式的概念和特点,以及MVC架构的设计思想,并分析了MVC架构中包含的几种主要的模式。然后根据Web应用系统的特点,就如何应用模式MVC架构提出了一些设计思路。面向对象技术的出现和应用大大提高...
  • MVC 架构模式

    千次阅读 2020-09-21 17:35:55
    MVC 模型代表 Model - View - Controller,即模型 - 视图 - 控制器模式,从上到下依次介绍: View(视图) 简单来说,就是负责数据的可视化。 Controller(控制器) 通常控制器用来从视图读取数据,并发送给对应...

    面试的时候被问到有关 MVC 的问题,虽然这块知识点并不难,但还是总结一下,下次再遇到的话,争取能做到侃侃而谈,而不是简简单单把概念给复述一遍。


    什么是 MVC?

    MVC 模型代表 Model - View - Controller,即模型 - 视图 - 控制器模式,从上到下依次介绍:

    • View(视图)

      简单来说,就是负责数据的可视化。

    • Controller(控制器)

      通常控制器用来从视图读取数据,并发送给对应的模型处理,再将结果反馈给视图显示。充当视图与模型之间数据交互的桥梁。

    • Model(模型)

      模型是用于处理应用程序中业务数据和逻辑的部分,负责直接与数据库打交道。


    为什么使用 MVC?

    MVC 属于架构模式的一种,所谓架构就是如何设计一个程序的结构。MVC 将程序结构划分为三层,每一层都对外提供了可供上层调用的接口,既能维系三层之间的联系,也能保持相对的独立性。

    而每一层都有各自的职责,我们可以将同一逻辑的代码聚集到一个组件,再放到对应的层次中。视图层作个性化的定制页面,而无需知晓下层业务的具体实现。同样的,控制层专心协调视图与模型的数据交互,模型层处理业务逻辑,无需关心数据该如何显示。

    这种将业务逻辑、数据和界面分离的代码组织形式,降低了模块间的耦合度,有利于日后的维护与扩展。


    MVC 的理解误区

    先说控制层,为什么要把控制层单独拎出来说呢?因为很多人都误解了 MVC 的真正含义,他们只是把简单地把程序划分为三层设计,并没有理解到 MVC 的内涵。

    前面已经说了,控制层只是负载协调视图层与模型层的数据交互,就像一个粘合剂,把视图层和模型层联系起来,除此之外再无其他。而有的程序员却喜欢在控制层写大量的业务处理代码,这是十分不合适的。

    如果这样做了,那 MVC 的优势不就被你自己亲手扼杀了吗?MVC 的核心思想是 Controller 可以自由调用 Model,Model 之间的互相调用亦是如此,这是 MVC 的精髓所在。而 Controller 之间是不可以互相调用的,试问此时你要如何复用 Controller 中的业务代码呢?

    所以说各司其职很重要,不要胡乱指派任务,否则就是在给自己挖坑。

    另外,很多人都知道 Controller - Service - Dao 三层架构,其中 Controller 和 Service 我们可以认为就是 MVC 中的控制层和模型层。而 Dao 其实不属于 MVC,Dao 封装了访问数据访问的代码,Service 则去调用 Dao 提供的接口来处理数据,仅此而已。


    MVC 的优点

    • 耦合性低

      视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动 MVC 的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。

    • 重用性高

      一个模型能被多个视图共享,这意味着从模型传回来的数据能以多种方式显示,而不需要为每一种显示方式编写特定的代码,大大减少了代码量。

    • 部署快

      使用 MVC 模式使开发时间得到相当大的缩减,后台程序员集中精力于业务逻辑,前端程序员集中精力于表现形式上。

    • 可维护性高

      分离视图层和业务逻辑层也使得 WEB 应用更易于维护和修改。

    • 有利软件工程化管理

      由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。


    MVC 的缺点

    • 增加系统结构和实现的复杂性

      对于简单的界面,严格遵循 MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。所以说 MVC 不适合用于小型、中型应用程序。

    • 视图与控制器间的过于紧密的连接

      视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

    • 视图对模型数据的低效率访问

      依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。


    展开全文
  • MVC架构模式详细说明

    千次阅读 2020-07-15 10:10:33
     架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题。架构模式与软件设计模式类似,但具有更广泛的范围。  模型-视图-控制器模式,也称为MVC模式(Model View ...

    一、简介:

      架构模式是一个通用的、可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题。架构模式与软件设计模式类似,但具有更广泛的范围。

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

        模型(Model):负责存储系统的中心数据。

        视图(View):将信息显示给用户(可以定义多个视图)。

        控制器(Controller):处理用户输入的信息。负责从视图读取数据,控制用户输入,并向模型发送数据,是应用程序中处理用户交互的部分。负责管理与用户交互交互控制。

      视图和控制器共同构成了用户接口。

      且每个视图都有一个相关的控制器组件。控制器接受输入,通常作为将鼠标移动、鼠标按钮的活动或键盘输入编码的时间。时间被翻译成模型或试图的服务器请求。用户仅仅通过控制器与系统交互。

     

    二、结构

      模型组件包含应用程序的功能内核,他封装了相应的数据并输出执行特定应用程序处理的过程;模型也提供访问数据的函数,这些数据有获得待显示的数据的视图组件使用。

      控制器代表用户调用所有这些过程。

    三、目的

      实现一种动态的程序设计,是后序对程序的修改和扩展简化,并且使程序某一部分的重复利用称为可能。

      通过对复杂度的简化,使程序结构更加直观。

      将信息的内部表示与信息的呈现方式分离开来,并接受用户的请求。它分离了组件,并允许有效的代码重用。即,将模型和视图的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保模型和视图的同步,一旦模型改变,视图应该同步更新。

    四、特点

      MVC重要特点就是两种分离:

      视图和数据模型的分离:使用不同的视图对相同的数据进行展示;分离可视和不可视的组件,能够对模型进行独立测试。因为分离了可视组件减少了外部依赖利于测试。(数据库也是一种外部组件)

      视图和表现逻辑(Controller)的分离:Controller是一个表现逻辑的组件,并非一个业务逻辑组件。MVC可以作为表现模式也可以作为建构模式,意味这Controller也可以是业务逻辑。分离逻辑和具体展示,能够对逻辑进行独立测试。

      优点:耦合性低;重用性高;生命周期成本低;部署块;可维护性高;有利软件工程化管理。

      缺点:没有明确的定义;不适合小型,中等规模的应用程序;增加系统结构和实现的复用性;视图与控制器间的过于紧密的连接;视图对模型数据的低效率访问;一般高级的界面工具或构造器不支持模式。

    五、特定环境

      大的项目;需要划分模块的项目。

    六、解决的问题

      因为在PHP还不支持面向对象之前,是过程化的方式来创建的,它们将 Model View Controller 三层的代码混在一起,十分混乱。所以它解决的问题有:维护难,开发速度慢,二次开发难度高,工作量大,代码复用,耦合度高,系统不灵活。

    七、解决方案

      以我的理解,将项目模块化,分为三个部分:模型,视图和控制器三个部分。模型是应用对象,没有用户界面。视图表示它在屏幕上的显示,代表流向用户的数据。控制器定义用户界面对用户输入的响应方式,负责把用户的动作转成针对Model的操作。Model 通过更新View的数据来反映数据的变化。

    八、实例

      应用于基于MVC架构模式的框架,常见的服务器端MVC框架有:Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF;常见前端MVC框架:angularjs、reactjs、backbone;由MVC演化出了另外一些模式如:MVP、MVVM。

      这里我们举例Spring MVC:

      Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。Spring MVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。他的两个核心是两个核心:

      处理器映射:选择使用哪个控制器来处理请求
      视图解析器:选择结果应该如何渲染

      通过以上两点,Spring MVC保证了如何选择控制处理请求和如何选择视图展现输出之间的松耦合。

      运行原理如图所示:

    (1)Http请求:客户端请求提交到DispatcherServlet。
    (2)寻找处理器:由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller。
    (3)调用处理器:DispatcherServlet将请求提交到Controller。
    (4)(5)调用业务处理和返回结果:Controller调用业务逻辑处理后,返回ModelAndView。
    (6)(7)处理视图映射并返回模型: DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图。
    (8) Http响应:视图负责将结果显示到客户端。

     

     Spring MVC框架与MVC架构模式联系在于:

      SpringMVC中并没有涉及有关于Controller接口规范的实现,SpringMVC是通过调用Handler来实现Controller这一层的。

      SpringMVC使用了适配器模式,前端控制器使用HandlerAdapter来调用不同的Controller,然后才是Controller调用Model产生数据模型;
      产生的数据模型将会再次返回到前端控制器,并由前端控制器决定使用不同的模板引擎将页面进行渲染。

    九、MVC架构模式与分层模式的区别

      MVC模式属于设计模式的范畴,就如同其他设计模式一样,模式的出现就是为了对某种功能的优化,而MVC模式可以看做是对三层架构中表现层的一种细分优化。以我的理解,MVC模式就是分层模式中表示层最常用的架构模式。

      详细阐述如下:

      严格说这三个加起来以后才是三层架构中的表现层,也就是说,MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的业务逻辑层进行对话。三层和MVC可以共存。 三层是基于业务逻辑来分的,而MVC是基于页面来分的。

      三层架构的分层模式是典型的上下关系,上层依赖于下层。但MVC作为表现模式是不存在上下关系的,而是相互协作关系。即使将MVC当作架构模式,也不是分层模式。MVC和三层架构基本没有可比性,是应用于不同领域的技术。

    十、MVC架构模式与MVC框架的区别

      MVC框架,强制性的使应用程序输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。其所使用的三个核心部件都是来时MVC模式的。只不过在框架中让他们彼此更加独立了去处理各自的任务而已。最典型的MVC就是JSP+SERVLET+JAVABEAN模式。

      MCV框架中:

      视图:视图是用户看到并与之交互的界面,视图的主要有元素HTML,Adobe Flash,XHTML,XML/XSL,WML等一些标识语言和Web services。

      模型:模型数据和业务规则。

      控制器:控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定  调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

    十一、MVC架构模式的举例说明

      例如①,小时候玩的那种卡带式游戏机,Control是主机,一般来说我买一个主机就行了,只要他不坏,他就能一直让我玩这一类的游戏。View则是电视机和游戏手柄,电视机可以独立工作,他不管输入的是电视信号、影碟机信号还是游戏机信号,他只管显示,而且他决定了我们看到的效果是怎么样的,如果我想要个尺寸更大的或者彩色的显示效果,我只需要买个相应的电视机就行了,手柄也是可以换的,遥杆还是带震动的。Model则是游戏卡带,他决定了我玩的是什么游戏,是魂斗罗还是超级玛莉,而且游戏机主机和电视机生产厂家永远也不知道在上面有可能会运行什么样的游戏。卡带中可能会有游戏代码和存储单元,都根据游戏的需要而设计。

      例如②,一个采用比例表示的用于政治选举的一个简单信息系统,它提供了一个输入数据的电子数据表和表示当前结果的几种图标。用户可以通过图形接口与系统交互。所有信息显示必须立即反应出选举数据的变化。(引用自《面向模式的软件体系结构-卷1 模式系统》)

      即,一旦模型的数据发生了变化,模型要通报所有的视图。

    展开全文
  • 1、MVC架构模式 说起SpringMVC就不得不说MVC,MVC是一种经典架构模式。MVC架构模式的重点是为了解耦,将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强,很多应用程序的问题在于处理...

    1、MVC架构模式

    • 说起SpringMVC就不得不说MVC,MVC是一种经典架构模式。MVC架构模式的重点是为了解耦,将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强,很多应用程序的问题在于处理业务数据和显示业务数据的视图的对象之间存在紧密耦合。
    • 有一句很有名的话:一个层次的重定向几乎可以解决计算机业务中的所有问题。在模型(Model)和视图层(View)之间引入重定向层可以解决解耦问题,这个重定向层就是控制层(Controller)。这样模型和视图就实现了代码分离,解耦了,由控制层来决定哪个模型来处理,哪个视图显示。
      MVC(Model-View-Controller)三元组的概念:
    • Model(模型):
      数据模型,提供要展示的数据,包括数据和行为,可以理解为JAVA POJO或JavaBean组件;
    • View(视图):
      进行模型数据的展示,用户看到的和交互的界面;
    • Controller(控制器):
      控制器作用于模型和视图之上,接收用户请求,委托给模型进行处理,控制数据流向模型对象,把返回的模型数据给视图,其实就是接收请求并决定调用哪个模型去处理请求,然后再确定用哪个视图来显示返回的数据;
    • 传统MVC图解:
      在这里插入图片描述

    2、SpringMVC

    SpringMVC是Spring框架中的一个组件,实现了MVC架构模式的核心概念,是一种请求驱动类型的轻量级web框架,使用了MVC的核心概念,对web层进行职责解耦,简化了web开发;
    SpringMVC是围绕DispatcherServlet而设计的,DispatcherServlet给处理程序分派请求,执行视图解析,并且处理语言环境和主题解析,对上传文件提供支持;
    DispatcherServlet通过使用处理程序映射来决定哪一个处理程序来处理传入的请求,处理程序映射只是用于标识使用哪一个处理程序来处理特定的URL模式的映射。

    3、SpringMVC的优势

    1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器( Validator)、命令对象(Command 请求参数绑定到的对象就叫命令对象)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。
    2、和Spring 其他框架无缝集成,是其它Web框架所不具备的;
    3、可适配,通过HandlerAdapter可以支持任意的类作为处理器;
    4、可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;
    5、功能强大的数据验证、格式化、绑定机制;
    6、强大的JSP标签库,使JSP编写更容易。
    7、RESTful风格的支持、简单的文件上传、约定大于配置的契约式编程支持、基于注解的零配置支持等等。

    4、SpringMVC执行流程

    1、用户发送请求----->DispatcherServlet,DispatcherServlet(前端控制器)接收到请求后委托给其他解析器进行处理,作为统一访问点,进行全局流程控制;
    2、DispatcherServlet---->请求获取HandlerMapping,HandlerMapping(处理器映射器)把请求映射为HandlerExecutionChain对象(包含一个Handler处理器对象、多个HandlerInterceptor拦截器对象);
    3、DispatcherServlet---->请求执行HandlerAdapter,HandlerAdapter(处理器适配器)会把处理器包装为适配器,从而支持多种类型的处理器;
    4、HandlerAdapter---->执行handler,HandlerAdapter会根据适配结果调用真正的处理方法完成处理(业务逻辑),然后返回ModelAndView(包含数据,逻辑视图名);
    5、ModelAndView---->ViewResolve根据逻辑视图名解析为具体的View;
    6、View---->进行视图渲染,View会根据传进来的Model数据进行渲染;
    7、返回控制权给DispatcherServlet,由DispatcherServlet响应给用户;

    • SpringMVC图解:
      在这里插入图片描述
    展开全文
  • 分析了ASP .NET平台默认 MVC架构模式缺陷,结合Ajax和 Web Service的技术特点,在ASP .NET平台改进了 MVC,实现了 AWS MVC架构模式,将 ASP.NET中B/ S结构细化为表示层、页面接口层、服务接口层、业务逻辑层、数据访问层...
  • MVC架构模式详解

    2016-11-29 17:07:33
    通过一个动态计算单元格高度的工程代码,教你快速理解MVC架构模式,正确理解MVC结构模式
  • 一、MVC架构模式 二、MVC模式 1、定义 2、MVC在JSP中的实现模型 3、基于Bean的MVC模型 4、基于Bean的MVC模型例 (MVC模型案例) 5、基于Struts的MVC模型 6、Struts的基本结构图 一、MVC架构模式 根据MVC...

    目录

    一、MVC架构模式

    二、MVC模式

    1、定义

    2、MVC在JSP中的实现模型

    3、基于Bean的MVC模型

    4、基于Bean的MVC模型例 (MVC模型案例)

    5、基于Struts的MVC模型

    6、Struts的基本结构图


    一、MVC架构模式

    根据MVC(Model-View-Controller)模式,一个软件应该将商务逻辑(Model)和显示(View)分开。分开有许多好处,最主要的有两个方面:

    (1)  同一的商务逻辑层(Model)可能会对应多个显示层(View),   如果商务逻辑层和显示层放在一起的话,再添加一个显示层的时候就就会极大的增加组件的复杂性。

    (2)  通常情况下,每次修改显示层的时候一般并不需要修改商务逻辑层。

    • 商务逻辑层(Model)
    • 显示层(View)
    • 控制层(Controller)

    二、MVC模式

    1、定义

    “MVC”模式即是:“Model-View-Controller”模式。在这种模式中,通过JSP技术来表现页面,通过Servlet技术来完成大量的事务处理工作,实现用户的商业逻辑

     

    2、MVC在JSP中的实现模型

    目前有两种实现模型:

    (1)基于Bean的MVC模型

    (2)基于Stucts的MVC模型 

    3、基于Bean的MVC模型

    Bean可以利用JavaBean实现,也可以利用EJB来实现,构成的系统分别是:

    (1) JavaBean(M)+JSP(V)+ Servlet(C)

    (2) EJB(M)+JSP(V)+Servlet(C)

    4、基于Bean的MVC模型例 (MVC模型案例)

           用户首先请求页面login.html,login.html会要求用户输入用户名和密码。输入的用户名和密码会POST到validate.jsp,validate.jsp使用bean:mypackage.validate来验证用户名和密码是否正确。

           如果验证没有通过,则显示error.jsp页面,显示错误信息。如果验证通过,则转到servlet: mypackage.forky。mypackage.forky根据用户名转到不同的页面:如果用户名为teacher,则转到teacher.jsp;否则转到student.jsp文件。

    5、基于Struts的MVC模型

    Struts是一个比较好的MVC框架,它提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和custom tag library。

    Struts 是一组相互协作的类、Servlet 和 JSP 标记,它们组成一个可重用的MVC设计。

    6、Struts的基本结构图

    • Controller
    • Model
    • View

     

     

    展开全文
  • 那么,MVC模式的好处是,躯壳可以经常更换,但是灵魂总是那个灵魂。或者,灵魂换了,躯壳还是那个躯壳 ---------------------------------------------------------------------------------------- 看下一些...
  • 使用MVC架构模式的有 1.Spring MVC java oracle系 2.ASP.NET MVC c# 微软系 3.Ruby on Rails ruby 4.thinke php,larvel php 5.django python(MVT其实就是MVC 后...
  • 这是一个为实现MVC架构模式而构建的简单应用程序。 Car Clicker应用程序是著名的应用程序cat clicker的变体。 Car Clicker应用程序中的一些重要区别是: 没有猫,只有肌肉车图像 列出了多种车型 多点击计数器 仅...
  • MVC架构模式简介.pptx

    2019-08-28 16:46:44
    本文档是看过很多MVC资料进行整理的,希望此文档能够对大家有一定的帮助。
  • MVC架构模式在Java开发中的应用.pdf
  • PiggyTextEditor MVC架构模式下的简单文本编辑器
  • php mvc架构模式分析与设计(源代码),其中为源代码,一整个项目,方便分析
  • 一个PHP OOP Web应用程序框架,该框架使用MVC架构模式创建一个包含登录和多语言系统的基本应用程序,并且可以在任何Web项目中使用。 创建它是为了摆脱从头创建MVC脚本的麻烦 描述 MVC(模型-视图-控制器)Web应用...
  • Java Web应用开发技术 本章导航 本章将介绍什么是MVC模式通过本章的学习将帮您解决如下几个主要问题 什么是模式 什么是MVC模式 MVC模式有哪几个重要组成部分每部分的功能是什么 MVC模式在 Java Web 开发中如何应用 *...
  • 对于MVC中的M和C,网上的一些说法并不准确,今天仔细鉴别下 ----------------------------------------------------------- 那么,MVC中的M到底是什么? 首先,我们分析三个元素,View就不用解释了,就是界面 ...
  • Override_super.market 使用MVC架构模式的Java Supermarket Web应用程序。
  • MVC架构模式ppt课件

    2011-12-23 09:35:18
    介绍了模式的分类,引出了MVC架构模式,继而介绍了:MVC架构模式的起源与设计思想、三大部分的功能与关系、MVC架构模式的实现、MVC架构模式的优缺点
  • 选用Vue做MVC架构模式

    千次阅读 2018-12-22 10:38:34
    经典的MVC架构模式 背景 选择Vue 经典MVC回顾 MVVM架构模式 front MVC架构定义 并行开发模式 结论 经典的MVC架构模式 MVC架构模式是经典设计模式中的经典,是一种编程的方法论。具有高度抽象的特征,经典MVC用...
  • gidig.in 全栈式电子商务Web应用程序,使用HTML,CSS,Javascript,Sass和PHP构建。 遵循MVC架构模式
  • java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源
  • MVC 软件架构模式

    2020-04-04 16:33:27
    1、MVC(Model-View-Controller) MVC全名 Model View Controller,是模型 (model)-视图 (view)-控制器 (controller) 的缩写。MVC 这一概念是来源于后端的框架构建思想,是一种软件设计典范,用一种业务逻辑、...
  • MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 119,691
精华内容 47,876
关键字:

mvc架构模式

友情链接: chessgame.zip