SpringMvc接受请求到Controller的流程
话不多说直接上图
首先从图中我们不难看出SpingMvc的整个核心都是围绕dispactherServlet展开的,这是整个SpringMvc的控制中心
假设前端请求url为:http://localhost:8080/api/hello
这个请求首先会分成三部分:
“api”是部署在服务器上面的web站点
“hello”是表示具体的哪个控制器
好了解释完url,我们来分析上面的流程图
1、首先dispatherServlet会调用HandlerMappering,HandlerMappering会根据url查找具体的Handler
2、HandlerException表示具体的Handler,主要的作用是根据url查找控制器,这个例子中查找的控制器为:hello
3、HanlerException将解析后的信息传递给dispatherServlet(对应的controller信息,和对应的拦截器信息等)
4、dispatherServlet根据返回的信息调用HandlerAdapter,HandlerAdapter表示处理器适配器,它可以按照特定的规则去执行Handler
5、Handler让具体的Controller执行(HandlerInterceptor的preHanle()便是在这之前执行)
6、Controller将具体的执行信息返回给HandlerAdaper,比如ModelAndView。
7、HandlerAdaper将视图逻辑名或模型传递给dispatherServlet
8、dispatherServlet调用视图解析器(ViewResolver)来解析HandlerAdaper传过来的逻辑视图名
9、ViewResolver将解析的逻辑视图名传给dispatherSevlet
10、dispatherSevlet根据解析的视图结果,调用具体的视图
最终呈现给用户