前言
MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
MVC模式最早由Trygve Reenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。----Wikipedia
DispatcherServlet
- Spring MVC的前端控制器
- 前端的客户请求,通过DispatcherServlet正式分发到达合适的Controller,来生产所需要的业务数据Model,生产的Model再通过DispatcherServlet传递给View,完成最终的页面呈现。
- MVC将数据的业务逻辑和页面实现的分离,核心就是通过DispatcherServlet来实现的
Controller
- MVC中的C
- 调用业务逻辑生成Model的地方
HandlerAdapter
- 在DispatcherServlet中最终调用的Controller是以Handler的形式出现的
- HandlerAdapter是一个适配器模式
- 将各种不同类型的Handler适配成DispatcherServlet可以使用的Handler
- 通过HandlerAdapter适配后,DispatcherServlet就可以轻松调用控制器(Controller)
HandlerInterceptor
- Interceptor意思是拦截器
- HandlerInterceptor是一个接口,有三个方法:postHandle,preHandle,afterCompletion
HandlerMapping
- 前端控制器与Controller之间映射关系的一种类
- HandlerMapping作用是告诉DispatcherServlet某个请求到来之后,由哪个Controller来响应该请求
- 在HandlerMapping工作完毕之后,给DispatcherServler一个HandlerAdapter,该HandlerAdapter里面包括的核心的内容是
- 某个具体的Controller的实例
- 该Controller需要被包裹的HandlerInterceptor
- 上述两项构成一个执行链HandlerExecutionChain
HandlerExecutionChain
- 执行链条如下:
- preHandle
- Controller method
- postHandle
- afterCompletion
- 所使用的是Java的反射机制
ModelAndView
- Spring MVC中对Model的一种表现形式(还有其他的类:Model,Map)
- 如果Controller中有人使用Map/Model类,在DispatcherServlet都会将其转换为ModelAndView
- ModelAndView被认为是Model的具体表现
ViewResolver
- ViewResolver视图解析器
- ViewResolver会告诉DispatcherServlet,需要用哪个视图,进行视图的呈现
- 帮助DispatcherServlet解析要呈现的正确视图页面
View
- MVC中的V
- 各种各样呈现出来的界面