SpringMVC的原理如下图所示:
当用户发起请求时,前置的控制器拦截到该请求,根据请求参数生成代理请求,找到对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,最后返回给用户。
SpringMVC实现原理
上图为SpringMVC实现原理流程图,图中实线部分为SpringMVC框架提供的技术,不需要开发者实现,而虚线部分为开发者需要实现的部分。
执行流程分析
1.DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心,用户发出请求,DispatcherServlet接收请求并拦截;
- 假设收到的请求为:http://localhost:8080/SpringMVC/hello
- http://localhost:8080表示服务器域名
- SpringMVC表示部署在服务器上的web站点
- hello表示控制器
- 通过分析,上述url表示为:请求位于服务器http://localhost上的SpringMVC站点的hello控制.
2.HandlerMapping为处理器映射。由DispatcherServlet,HandlerMapping根据url查找handler(控制器)
3.HandlerExecution表示具体的Handler,主要作用是根据url查找控制器,如上的url被查找控制器为:hello
4.HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等
5.HandlerAdapter表示处理器适配器,按照特定的规则去执行Handler
6.Handler让具体的Controller执行
7.Controller将具体的执行信息返回给HandlerAdapter
8.HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet
9.DispatcherServlet调用试图解析器解析HandlerAdapter传递过来的视图名
10.视图解析器将解析的逻辑视图名传给DispatcherServlet
11.DispatcherServlet根据视图解析器解析的视图结果,调用具体视图
12.将视图呈现给用户
简言之,SpringMVC的执行流程可以分为三个阶段:
1. 根据用户请求找到对应的映射器,并返回;
2. 再根据此映射器去适配此映射器(有controller执行),并返回一个modelandview;
3.通过modelandview调用视图解析器,返回给前端用户。