SpringMVC-01-MVC设计模式

1.MVC设计模式

1.1 阐述
  • MVC 架构模式一般指 MVC 框架,M(Model)指数据模型层,V(View)指视图层,C(Controller)指控制层。设计目的是目的是将 M 和 V 的实现代码分离,是一种软件设计规范。

  • 控制层(Controller):用户向服务器发起请求,在服务区端这一层用来获取请求后如何解析用户的输入,并交给模型层(业务层)执行相关处理逻辑,将处理后的模型数据,跳转至正确的视图显示反馈结果。

  • 数据模型层(Model):在请求的过程中,用户的信息被封装在 User 实体类中,包含数据和行为,负责数据逻辑(业务规则)的处理和实现数据操作(即在数据库中存取数据)。

  • 视图层(View):在请求显示阶段,跳转的结果网页。包括数据展示、用户交互、数据验证、界面设计

像这样,控制层负责前台与后台的交互,数据模型层封装用户的输入/输出数据,视图层选择恰当的视图来显示最终的执行结果,这样的层次分明的软件开发和处理流程被称为 MVC 模式。

  • 在之前的 利用Servlet 进行Web开发时,JavaBean +service相当于 Model,(控制器底层出来vue)Servlet 相当于 Controller,JSP 相当于 View。

VO视图层,Dto数据传输层概念,将pojo实体细分了,前端传输的字段不一定要用实体接收,

vo:简化版实体类。比如登录只需要取用户名密码,就封装一个两个字段的实体类。

  • 我们通过 MVC 设计模式可以打造出一个松耦合+高可重用性+高可适用性的完美架构
1.2 历史
  • model1模式:SP+JavaBean 中 JSP 用于处理用户请求,JavaBean 用于封装和处理数据。该模式只有视图和模型,一般把控制器的功能交给视图来实现,适合业务流程比较简单的 Web 程序。
    SpringMVC-01-MVC设计模式_第1张图片

JSP 从 HTTP Request(请求)中获得所需的数据,并进行业务逻辑的处理,利用JSP的脚本标签<% …%>的可以编写java代码

然后JSP 将结果通过 HTTP Response(响应)返回给浏览器。从中可见,JSP+JavaBean 模式在一定程度上实现了 MVC,即 JSP 将控制层和视图合二为一,JavaBean 为模型层。

JSP+JavaBean 模式中 JSP 身兼数职,既要负责视图层的数据显示,又要负责业务流程的控制,结构较为混乱,并且也不是我们所希望的松耦合架构模式,所以当业务流程复杂的时候并不推荐使用。

  • model2模式:Servlet+JSP+JavaBean 中 Servlet 用于处理用户请求,JSP 用于数据显示,JavaBean 用于数据封装,适合复杂的 Web 程序。
    SpringMVC-01-MVC设计模式_第2张图片

  • Servlet+JSP+JavaBean 中 Servlet 用于处理用户请求,JSP 用于数据显示,JavaBean 用于数据封装,适合复杂的 Web 程序。

  • 相比model1模式来说,Servlet+JSP+JavaBean 模式将控制层单独划分出来负责业务流程的控制,接收请求,调用业务处理逻辑,并将处理后的数据返回视图层(JSP)进行界面数据展示。

1.3 MVC优缺点
  • 优点
  • 多视图共享一个模型,大大提高了代码的可重用性
  • MVC 三个模块相互独立,松耦合架构,降低了视图和业务逻辑的双向耦合
  • 控制器提高了应用程序的灵活性和可配置性
  • 利于团队开发,可以构建复杂的项目
  • 有利于软件工程化管理
  • 缺点
  • 原理复杂
  • 增加了系统结构和实现的复杂性
  • 视图对模型数据的低效率访问
  • MVC 不适合中小型项目,高成本将 MVC 应用到规模并不是很大的应用程序是不合适的,所以对于 MVC 设计模式的使用要根据具体的应用场景来决定。
  • 一般公司的项目架构是演进的。

如:alibaba: php (个人页面网站,承载并发量低)

业务起来后,用户并发数上来后:java

去IOE:mysql-可拔插组件化,数据引擎可以随时切换–mysql底层优化器对sql优化–>alisql(将优化这一层优化掉了),aliredis

单机->分布式、微服务…

  • 演进:MVP(是一个过渡) MVVM:M V VM(vue前后端分离的核心、双向绑定)
下一篇:SpringMVC-02-web servlet

你可能感兴趣的:(框架,mvc,设计模式,servlet)