MVC流程图如下图所示:
MVC是一种架构模式 --- 程序分层,分工合作,既相互独立,又协同工作
MVC是一种思考方式 --- 需要将什么信息展示给用户? 如何布局? 调用哪些业务逻辑?
MVC核心思想:业务数据抽取同业务数据实现相分离
总结:
模型层(M) 业务数据的信息表示,关注支撑业务的信息构成,通常是多个业务实体的组合
视图层(V) 为用户提供UI,重点关注数据的呈现
控制器(C) 接受用户请求,并调用相应的模型处理
(相当于一个总调配中心,有什么需求,就去调用相应模型进行处理,最后通过视图给用户进行展示)
SpringMVC的原理:
1 首先用户发出请求,请求到达SpringMVC的前端控制器(DispatcherServlet),
2 前端控制器根据用户的url,请求处理器映射器(HandlerMapping)查找匹配该url的handler,并返回一个执行链(HandlerExecutionChain),
3 前端控制器再请求处理器适配器(HandlerAdapter)调用相应的handler进行处理并返回给前端控制器一modelAndView,
4 前端控制器再请求视图解析器(ViewResolver)对返回的逻辑视图进行解析,
5 最后前端控制器将返回的视图进行渲染并把数据装入到request域,返回给用户。
注:DispatcherServlet作为springMVC的前端控制器,负责接收用户的请求并根据用户的请求返回相应的视图给用户(分发调度)
补充:
为什么叫前端控制器?前端又是什么?
举个例子:假如你去医院看病,通过向分诊台的医院描述自己的病情,就可以得到医生的指导具体去看外科、内科或者神经科等等,这里我们的分诊台就扮演着前端控制器(Dispatcher)的角色,也叫做调度器,而各个科室就扮演着控制器(Controller)的角色,因为分诊台是在具体各个科室之前,所以这个模式就叫做前端控制器。