SpringMVC的工作原理
SpringMVC处理请求的过程,以及涉及到的主要组件
SpringMVC请求处理过程
1 用户 —> Dispatcher Servlet
用户发送请求给 Dispatcher Servlet 前端控制器 , Dispatcher Servlet 前端控制器不进行处理,而是调用其他解析器进行用户的请求处理,它只作为一个转发器
2 Dispatcher Servlet —> HandlerMapping, 3 HandlerMapping —> Controller
DispatcherServlet 接受到请求后,调用 HandlerMapping,然后根据 URL,寻找到对应的 Controller
4 Dispatcher Servlet —> HandlerAdapter , 5 HandlerAdapter —> Controller
完成了 URL 和 Controller 映射过程后,也就是找到了对应的 Controller,那么Dispatcher Servlet 就调用 HandlerAdapter 适配器,去执行该 Controller
6 Controller —> HandlerAdapter , 7 HandlerAdapter —> Dispatcher Servlet
Controller 完成业务处理,返回一个ModelAndView 对象(包含模型数据、逻辑视图名)
8 Dispatcher Servlet —> ViewResolver , 9 ViewResolver —> Dispatcher Servlet
Dispatcher Servlet 调用 ViewResolver 进行 ModelAndView 对象的解析,将ModelAndView 的逻辑视图名解析为具体的 View,返回 View 视图对象
10 Dispatcher Servlet —> View , 11 Dispatcher Servlet —> 用户
Dispatcher Servlet 调用 View 对传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构。返回控制权给DispatcherServlet,由DispatcherServlet将结果响应给用户
SpringMVC的组件
DispatcherServlet 前端控制器 (框架提供):控制中心,用于接收请求,调用其他组件来处理用户的请求,并且响应结果。减小组件间的耦合性
HandlerMapping 处理器映射器(框架提供):根据请求URL寻找匹配的Handler,也就是Controller。映射方式包括注解方式、配置文件方式、实现接口方式
HandlerAdapter 处理器适配器:根据HandlerAdapter 自身要求的规则,去执行Handler,也就是Controller
Controller处理器(开发者编程):在DispatcherServlet的控制下,对具体的用户请求进行处理。开发者需要根据业务需求编写Controller
ViewResolver 视图解析器:根据逻辑视图名解析成具体的页面地址,再将处理结果生成View视图。Springmvc 支持多类型的视图解析,例如:jsp、freemarker、pdf、excel等
View 视图 (开发者编程) : View就是展示给用户的界面,需要开发者进行页面设计,视图中通常使用标签语言来展示模型数据