回顾MVC

1、什么是MVC

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

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

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

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

  • 主要作用:降低视图与业务逻辑间的双向耦合

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

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

回顾MVC
 
MVC框架要做的事情:

  • 将url映射到java类或java类的方法
  • 封装用户提交的数据
  • 处理请求 -> 调用相关的业务处理 -> 封装相应数据
  • 渲染响应的.jsp、html等表示层数据
     

常见的服务器端MVC框架:Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF

常见的前端MVC框架:vue、angularjs、react、backbone

由MVC演化出的另外一些模式:MVP、MVVM等
 

2、Model1时代

  • web早期开发中,通常采用的是Model1
  • 在Model1中,主要分为两层:视图层和模型层

回顾MVC

  • 优点:架构简单,适合小型项目开发
  • 缺点:JSP职责不单一,职责过重不便于维护
     

3、Model2时代

  • 在Model2中,一个项目是分为三部分的:视图、控制、模型

  • 执行过程:

    1. 用户发请求
    2. Servlet接收请求数据,并调用对应的业务逻辑方法
    3. 业务处理完毕,返回更新后的数据给servlet
    4. servlet转向JSP,由JSP来渲染界面
    5. 响应给前端更新后的页面

    回顾MVC

  • 职责分析:

    • Controller:取得表单数据、调用业务逻辑、转向指定的页面

    • Model:业务逻辑、保存数据的状态

    • View:显示页面

  • 优点:不仅提高了代码的复用率和项目的扩展性,而且大大降低了项目的维护成本
     

面试题:自己所做的项目架构是设计好的还是演进的?

演进的!!!任何一个项目的发展都是从最初的架构简单的小项目逐渐演化,更改架构

Alibaba演进过程:最初是一个小型的PHP项目,随着用户量增多,PHP无法承载大的并发量,改为Java架构。当时因为给IBM、Oracle支付费用太多,一个叫王坚的博士提出了去IOE,对数据库的使用又回到了MySql,但是Ali对MySql又做了很多优化,后来发展出了AliSql和AliRedis等。