学SpringMVC前必须要知道的事

SpringMVC必备知识点

一、前端控制器

首先我们先来大致了解一下它的基本结构和处理流程

学SpringMVC前必须要知道的事

前端控制器主要是负责与前端进行交互的,由上面的图我们不难看出流程:

  1. 浏览器端发送请求给前端控制器(Front controller)
  2. 前端控制器把请求代理给处理这个请求的控制器(Controller)
  3. 控制器调用业务逻辑并将业务数据(model)返回给前端控制器
  4. 前端控制器将返回的业务数据分发给视图模板(View template)
  5. 视图模板负责呈现最终的用户页面并返回给前端控制器
  6. 前端控制器再将最终呈现的页面返回给浏览器端

从图中我们可以看到三个核心的部分:

  • 前端控制器:负责分发调度
  • 控制器了解所有业务的细节,负责业务数据的抽取
  • 视图模板:了解前端的特性,负责页面呈现

小结:

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

即页面

动态关系图:

学SpringMVC前必须要知道的事

从图中,我们可以清晰的看到执行的具体流程:

  1. Request被DispatcherServlet拦截
  2. DispatcherServlet通过HandlerMapping找到对用的Controller以及包裹在其外面的HandlerInterceptor,并形成一个执行链条作为一个HandlerAdapter返回给DispatcherServlet
  3. DispatcherServlet调用返回的HandlerAdapter生成模型数据(ModelAndView)并返回给DispatcherServlet
  4. 调用ViewResolver的方法返回一个View对象
  5. 将模型数据传递给View
  6. 最后将结果呈现

更具体的工作流程:

学SpringMVC前必须要知道的事