Spring MVC 包括三大核心处理器:
-
DispatcherServlet(前端控制器):
-
是整个 Spring MVC 的前端控制器(Front Controller),它是所有请求的入口,负责请求的分发和处理。
-
接收所有请求并将请求分派到相应的处理程序(Controller)进行处理。
-
处理程序可以是一个带有
@Controller
或@RestController
注解的类。
-
-
HandlerMapping(处理器映射器):
-
负责根据请求的 URL 找到对应的处理程序(Controller)。
-
通过配置多个 HandlerMapping 可以实现不同类型的映射,例如基于 URL、路径、参数等。
-
-
HandlerAdapter(处理器适配器):
-
负责调用实际的处理程序(Controller),并将处理结果返回给 DispatcherServlet。
-
不同类型的处理程序需要不同的 HandlerAdapter 来进行适配。
-
这三大核心处理器协同工作,使得 Spring MVC 能够接收请求、定位处理程序、调用处理程序并返回响应。这种架构模式使得开发者能够通过简单的配置和标准的注解来实现灵活、高效的 Web 应用开发。
也可以说三大处理器是处理器映射器,处理器适配器,视图解析器
执行流程
1.用户发送请求至前端控制器DispatcherServlet。
2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3.处理器映射器根据请求ur找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet,
4.DispatcherServlet通过HandlerAdapter处理器适配器调用处理器.
5.执行处理器(Controller层,也叫后端控制器)。
6.Controller执行完成返回数据和视图(ModelAndView)。
7.HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet.
8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
9.ViewReslover解析后返回具体的View视图(JSP /HTML) 。
10.DispatcherServlet寸View进行渲染视图(即将模型数据填充至视图中)
11.DispatcherServlet响应用户,用户看到界面和数据。
总结流程
Spring MVC所有的请求都经过Dispatcherservlet来统一分发。DispatcherServlet将请求分发给Controller之前,需要借助于Spring MVC提供的HandlerMapping定位到具体的Controller。
HandlerMapping接口负责完成客户请求到Controller映射。
Controllr接口将处理用户情求,这和Java Servlet扮演的角色是一致的。一旦Controller处理完用户请求,则返回ModelAndView数据和视图)对象给DispatcherServlet前端控制器。从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观考虑,Controller是单个Htp请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。
返回的视图需要通过ViewResolver接口(视图解析器)在Web应用中负责查找View对象,从从而将相应结果渲染给客户。