什么是MVC

MVC的处理过程,首先控制器接受用户的请求,并决定应该调用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。

1.什么是MVC

  • MVC是模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范。

  • 是将业务逻辑、数据、显示分离的方法来组织代码。

  • MVC主要作用是降低了视图与业务逻辑间的双向偶合

  • MVC不是一种设计模式,MVC是一种架构模式。当然不同的MVC存在差异。

Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。

View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。

Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展示。也就是说控制器做了个调度员的工作。

最典型的MVC就是JSP + servlet + javabean的模式。

 

 

1.2、Model1时代

 

 

  • 在web早期的开发中,通常采用的都是Model1。

  • Model1中,主要分为两层,视图层和模型

Model1优点:架构简单,比较适合小型项目开发;

Model1缺点:JSP职责不单一,职责过重,不便于维护;

1.3、Model2时代

Model2把一个项目分成三部分,包括视图、控制、模型。

    1. 用户发请求

    2. Servlet接收请求数据,并调用对应的业务逻辑方法

    3. 业务处理完毕,返回更新后的数据给servlet

    4. servlet转向到JSP,由JSP来渲染页面

    5. 响应给前端更新后的页面

职责分析:

Controller:控制器

  1. 取得表单数据

  2. 调用业务逻辑

  3. 转向指定的页面

Model:模型

  1. 业务逻辑

  2. 保存数据的状态

View:视图

  1. 显示页面

Model2这样不仅提高的代码的复用率与项目的扩展性,且大大降低了项目的维护成本。Model 1模式的实现比较简单,适用于快速开发小规模项目,Model1中JSP页面身兼View和Controller两种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用的扩展性和维护的难度。Model2消除了Model1的缺点。

1.4 回顾servlet

  1.新建maven工程当作父工程!Pom依赖。

 1 <dependencies>
 2    <dependency>
 3        <groupId>junit</groupId>
 4        <artifactId>junit</artifactId>
 5        <version>4.12</version>
 6    </dependency>
 7    <dependency>
 8        <groupId>org.springframework</groupId>
 9        <artifactId>spring-webmvc</artifactId>
10        <version>5.1.9.RELEASE</version>
11    </dependency>
12    <dependency>
13        <groupId>javax.servlet</groupId>
14        <artifactId>servlet-api</artifactId>
15        <version>2.5</version>
16    </dependency>
17    <dependency>
18        <groupId>javax.servlet.jsp</groupId>
19        <artifactId>jsp-api</artifactId>
20        <version>2.2</version>
21    </dependency>
22    <dependency>
23        <groupId>javax.servlet</groupId>
24        <artifactId>jstl</artifactId>
25        <version>1.2</version>
26    </dependency>
27 </dependencies>
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 什么是MVC