概述
SpringMVC 是一种轻量级的,基于 MVC 的 web 层应用框架。偏前端而不是基于业务逻辑层。是 Spring 框架的一个后续产品。
特点
有清晰的角色划分:
- 中央调度器(DispatcherServlet):作为前端控制器,整个流程的控制中心,控制其它组件执行,同一调度。
- 处理器映射器(HandlerMapping):负责根据用户请求的 url 找到 Handler 处理器(Handler 是执行一个特定功能的函数)。
- 处理器适配器(HandlerAdapter):执行处理器。
- 视图解析器(ViewResolver):解析 ModelAndView 。
之所以有角色的划分是为了让程序能更好的解耦,提高程序的扩展性。
执行流程
在这里插入图片描述
- 中央调度器(DispatcherServlet)接收请求并且调用处理器映射器(HandlerMapping)。
- 处理器映射器(HandlerMapping)负责根据用户请求的 url 找到与之绑定的函数(即 Handler 处理器),并返回给中央调度器。
- 中央调度器(DispatcherServlet)调用处理器适配器(HandlerAdapter)处理一系列操作,如:参数封装,数据格式转换,数据验证等,再执行处理器。
- 处理器(Handler)执行完成后返回 ModelAndView。
- 处理器适配器(HandlerAdapater)将处理器返回的结果 ModelAndView 也返回给中央调度器。
- 中央调度器(DispatcherServlet)将 ModelAndView 返回给 ViewReslover(视图解析器)进行解析。解析后返回具体的 view。
- 中央调度器(DispatcherServlet)对 view 进行渲染视图并响应用户。
代码对应
整个代码
- web.xml
1 | 复制代码<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" |
- springmvc.xml
1 | 复制代码<beans xmlns="http://www.springframework.org/schema/beans" |
- Controller
1 | 复制代码package com.manman.controller; |
代码解析
- 中央调度器
1 | 复制代码<servlet> |
- 处理器映射器
1 | 复制代码@RequestMapping(value = "/some.do") |
- 调用处理器适配器并执行处理器
1 | 复制代码public ModelAndView doSome(){ |
- 视图解析器进行解析
1 | 复制代码<!-- 视图解析器 --> |
本文使用 mdnice 排版
本文转载自: 掘金