Spring MVC所有的请求都经过DispatcherServlet来统一分发。DispatcherServlet将请求分发给 Controller之前,需要借助于Spring MVC提供的HandlerMapping定位到具体的Controller。 HandlerMapping接口负责完成客户请求到Controller映射。
Controller接口将处理用户请求。一旦Controller处理完用户请求,则返回ModelAndView(数据和视图)对象给DispatcherServlet前端控制器。从宏观角度考虑, DispatcherServlet是整个Web应用的控制器;从微观考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。 返回的视图需要通过ViewResolver接口(视图解析器)在Web应用中负责查找View对象,从而将相应结果渲染给客户。
处理器映射器(Handler Mapping)是一个组件,负责将请求映射到相应的处理器(Controller),会自动将请求URL与这些注解进行匹配,找到对应的处理器。
- 映射请求到处理器:HandlerMapping负责根据用户请求的URL找到对应的处理器对象。它可以通过多种方式实现映射,例如配置文件方式、实现接口方式、注解方式等12。
- 处理请求:一旦找到对应的处理器,HandlerMapping会生成一个包含处理器对象和拦截器(如果有的话)的HandlerExecutionChain对象,并将其返回给DispatcherServlet。DispatcherServlet随后通过HandlerAdapter调用处理器来处理具体的用户请求