SpringMVC原理

SpringMVC执行原理

1. DispatcherServlet

​ **SpringMVC框架是围绕DispatcherServlet [ 调度Servlet ] 设计。**是以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)。

 

DispatcherServlet继承关系图

![图片](https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7KwPOPWq00pMJiaK86lF6BjI7ENu0jNibPiaiaiaBhyx6o9UUyU82Mddg4DjwzniaczmTLRbAtI9pKJq1tQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)

 

 

 

2. 执行原理

![图片](https://mmbiz.qpic.cn/mmbiz_png/uJDAUKrGC7KwPOPWq00pMJiaK86lF6BjIbmPOkY8TxF6qvGAGXxC7dArYcr8uJlWoVC4aF4bfxgCGCD8sHg8mgw/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)

 

 

 

 

 

 

我们假设请求的url为 : http://localhost:8080/SpringMVC/hello

**如上url拆分成三部分:**

http://localhost:8080服务器域名

SpringMVC部署在服务器上的web站点

hello表示控制器

通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。

 

3. 简述流程

1.浏览器发送一个请求到前端控制器DispatcherServlet,DispatcherServlet接受请求并且拦截

2.DispatcherServlet调用处理器映射器HandlerMapping,HanderlerMapping通过url查找Handler

3.HanderlerExection表示具体的Handler,主要作用是根据url查找控制器

如图:

 

 

 

通过/hello找到处理器

4.HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等

5.HandlerAdapter表示处理器适配器,按照特定的规则去执行Handler。(大体上是找继承Controller的类)

6.Handler让具体的Controller执行。

7.Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。

8.HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。

9.DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。

10.视图解析器将解析的逻辑视图名传给DispatcherServlet。

11.DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。

posted @ 2021-11-05 21:19  _图南  阅读(97)  评论(0编辑  收藏  举报