其实MVC不是java独有的概念 SmallTalk 和Pythoh也有
我们先看一下官网给我们的前端控制器的图
Spring MVC 高层次的请求处理工作流程如下
下面这张图摘自实验楼课程:
是细分后的 Spring MVC 执行流程
Spring MVC 相关接口解释:
(1)DispatcherServlet(和Front controller是不是一个意思)
前端控制器,所有的请求都有经过它来统一分发,请求会被分发给对应的 Handler。
(2)HandlerMapping(处理器映射器)
解析请求链接,然后根据请求链接找到执行这个请求的类(HandlerMapping 所说的 handler)。
(3)HandlerAdapter(处理器适配器)
调用具体的方法对用户发来的请求来进行处理。
(4)Controller(负责业务数据抽取)
Controller 将处理用户请求,Controller 处理完用户请求,则返回 ModelAndView 对象给 DispatcherServlet 前端控制器。
从宏观角度考虑,DispatcherServlet 是整个 Web 应用的控制器;从微观考虑,Controller 是单个 Http 请求处理过程中的控制器。
(5)ViewResolver(视图解析器,负责页面呈现)
解析 MdoelAndView,将 MdoelAndView 中的逻辑视图名变为一个真正的 View 对象,并将 MdoelAndView 中的 Model 取出。
我们总结一下
MVC的本质:
- MVC的核心思想是业务数据抽取同业务数据呈现相分离
什么是MVC?
M odel - V iew- C ontroller
视图层,为用户提供UI,重点关注数据的呈现。
模型层
业务数据的信息表示,关注支撑业务的信息构成,通常是多个业务实体的组合。
控制层
调用业务逻辑产生合适的数据(Model) 传递数据给视图层用于呈现
那么什么是MVC?
MVC是一种架构模式 程序分层,分工合作,既相互独立,又协同工作。
MVC是一种思考方式 需要将什么信息展示给用户?如何布局?调用哪些业务逻辑?
也就是模型层,视图层,控制层。