SpringMvc接受请求到Controller的流程

话不多说直接上图

image-20210509155821053

首先从图中我们不难看出SpingMvc的整个核心都是围绕dispactherServlet展开的,这是整个SpringMvc的控制中心

假设前端请求url为:http://localhost:8080/api/hello

这个请求首先会分成三部分:

好了解释完url,我们来分析上面的流程图

1、首先dispatherServlet会调用HandlerMapperingHandlerMappering会根据url查找具体的Handler

2、HandlerException表示具体的Handler,主要的作用是根据url查找控制器,这个例子中查找的控制器为:hello

3、HanlerException将解析后的信息传递给dispatherServlet(对应的controller信息,和对应的拦截器信息等)

4、dispatherServlet根据返回的信息调用HandlerAdapterHandlerAdapter表示处理器适配器,它可以按照特定的规则去执行Handler

5、Handler让具体的Controller执行(HandlerInterceptor的preHanle()便是在这之前执行)

6、Controller将具体的执行信息返回给HandlerAdaper,比如ModelAndView。

7、HandlerAdaper将视图逻辑名或模型传递给dispatherServlet

8、dispatherServlet调用视图解析器(ViewResolver)来解析HandlerAdaper传过来的逻辑视图名

9、ViewResolver将解析的逻辑视图名传给dispatherSevlet

10、dispatherSevlet根据解析的视图结果,调用具体的视图

最终呈现给用户

评论