SpringMVC原理
Spring的web框架围绕DispatcherServlet [ 调度Servlet ] 设计,DispatcherServlet的作用是将请求分发到不同的处理器。
Spring MVC框架像许多其他MVC框架一样, 以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能,DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)。
SpringMVC的原理如下图所示:
当发起请求时被前端的控制器(DispatcherServlet)拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,再将结果返回给请求者。
SpringMVC执行原理
1.用户发起请求到前端控制器(DispatcherServlet)
我们假设请求的url为 : http://localhost:8080/SpringMVC/hello
如上url拆分成三部分:
http://localhost:8080服务器域名
SpringMVC部署在服务器上的web站点
hello表示控制器
通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。
2.前端控制器请求处理器映射器(HandlerMappering)去查找(Handle);
HandlerMapping根据请求url查找Handler。
HandlerMapping是request与handler object之间的映射,它能根据request找到对应的handler。调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),handler object总会被包装成HandlerExecutionChain ,HandlerExecutionChain 里含有handler object、interceptor等
3. HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello
HandlerExecutionChain 是Handler执行链。
4HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等,如返回Handler给前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler);
5.处理器适配器(HandlerAdapter)其按照特定的规则去执行Handler;
6.Handler让具体的Controller执行,Handler执行完成之后有一个ModelAndView;
7.适配器处理器向处理器适配器(HandlerAdapter)返回ModelAndView;
8.将ModelAndView返回给DispatcherServlet
9.前端控制器请求视图解析器(ViewResolver)去进行视图解析;
10.视图解析器ViewResolver向前端控制器返回View;
11.前端控制器对视图进行渲染;
12.前端控制器向用户相应结果;
也可以参考一下下图