学SpringMVC前必须要知道的事
SpringMVC必备知识点
一、前端控制器
首先我们先来大致了解一下它的基本结构和处理流程
前端控制器主要是负责与前端进行交互的,由上面的图我们不难看出流程:
- 浏览器端发送请求给前端控制器(Front controller)
- 前端控制器把请求代理给处理这个请求的控制器(Controller)
- 控制器调用业务逻辑并将业务数据(model)返回给前端控制器
- 前端控制器将返回的业务数据分发给视图模板(View template)
- 视图模板负责呈现最终的用户页面并返回给前端控制器
- 前端控制器再将最终呈现的页面返回给浏览器端
从图中我们可以看到三个核心的部分:
- 前端控制器:负责分发调度
- 控制器了解所有业务的细节,负责业务数据的抽取
- 视图模板:了解前端的特性,负责页面呈现
小结:
SpringMVC主要分为三层
M(Model):模型层,数据的信息表示
V(View):视图层,即显示的页面
C(Controller):控制层,调用业务逻辑产生数据(Model)的地方
二、基本概念
DispatcherServlet
前端控制器的核心,负责分发调度其他模块
Controller
调用业务逻辑生成Model的地方
HandlerAdapter
处于DispatcherServlet和Controller之间,负责将Controller适配成DispatcherServlet可以调度的对象
HandlerInterceptor
拦截器,在被拦截对象的两侧做某些事
HandlerExecutionChain
根据拦截器和被拦截的对象,所生成执行链条
HandlerMapping
请求与Controller之间的映射关系,能够让拦截器和Controller生成一个执行链条
ModelAndView
Model的一种棘具体表现,DispatcherServlet会将Model和Map统统转换成ModelAndView
ViewResolver
视图解析器,根据视图配置找出对应的视图
View
即页面
动态关系图:
从图中,我们可以清晰的看到执行的具体流程:
- Request被DispatcherServlet拦截
- DispatcherServlet通过HandlerMapping找到对用的Controller以及包裹在其外面的HandlerInterceptor,并形成一个执行链条作为一个HandlerAdapter返回给DispatcherServlet
- DispatcherServlet调用返回的HandlerAdapter生成模型数据(ModelAndView)并返回给DispatcherServlet
- 调用ViewResolver的方法返回一个View对象
- 将模型数据传递给View
- 最后将结果呈现
更具体的工作流程: