Spring MVC处理流程;

说明:

(1)本篇博客合理性解释:前面介绍了Spring MVC的基本内容,包括【Spring MVC入门与数据绑定】、【Restful开发风格】、【拦截器(Interceptor)】;那么本篇博客就来总结下Spring MVC的底层原理和数据处理流程;

(2)本篇博客参考的博客有:【SpringMVC 工作原理】,该文的作者是【aFa攻防实验室】;

目录

一:Spring MVC处理流程;

1.Spring MVC处理流程:分析; 

2. Spring MVC处理流程:关键组件; 

3. Spring MVC处理流程:总结;  


一:Spring MVC处理流程;

1.Spring MVC处理流程:分析; 

Spring MVC处理流程;_第1张图片

说明:

(1)用户在客户端浏览器上,通过某个请求路径,向web应用服务器发送了一个request请求;在Spring MVC中,这个请求会被DispatcherServlet这个中央处理器(有时也称前端控制器)拦截并处理;

(2)DispatcherServlet(中央处理器)会请求HandlerMapper(处理器映射器)去查找Handler;(可以根据注解或者XML配置去查找)

          ● Handler:叫做处理器,也可称作句柄;

          ● Handler:在这儿就是:就是指拦截器或者Controller;

(3) HandlerMapper(处理器映射器)的主要作用是:通过访问的url,得到对应的执行链条;然后,把执行链返回给DispatcherServlet(中央处理器);

Spring MVC处理流程;_第2张图片

          ● 说白了HandlerMapper(处理器映射器)的主要作用就是:得到请求的url后,获取【从前到后,依次有哪些拦截器、Controller来进行,请求的处理】;

          ● HandlerMapper(处理器映射器)只会获取执行链,并不会真正的去处理请求;

(4)DispatcherServlet(中央处理器)得到HandlerMapper(处理器映射器)返回的执行链后,DispatcherServlet(中央处理器)会向HandlerAdapter(处理器适配器)发起执行Handler的请求;

(5)HandlerAdapter(处理器适配器)根据Handler的类型(Handler可能是拦截器,也可能是控制器)的不同,去选择执行不同的方法;

           ● 如果Handler是一个拦截器(Interceptor),那么就会选择去执行拦截器中的preHandle()前置处理方法;

           ● 如果Handler是一个Controller,那么就去会选择去执行Controller中的对应方法;

(6)请求被Handler处理完以后,Handler会返回给HandlerAdapter(处理器适配器)一个ModelAndView对象(按最常见的返回类型ModelAndView举例了);返回的ModelAndView对象会被HandlerAdapter(处理器适配器)接收;

           ● ModelAndView对象是Spring MVC底层对象,包括Model数据模型和View视图信息;

(7)HandlerAdapter(处理器适配器)接收到Handler返回的ModelAndView对象后,会将其返回给DispatcherServlet(中央处理器);

(8)DispatcherServlet(中央处理器)接收到ModelAndView对象后,会判断当前的ModelAndView对象该由什么模板引擎处理(FreeMarker或JSP);比如,此时DispatcherServlet(中央处理器)根据ModelAndView对象中View视图的信息,分析后发现我们使用了FreeMarker作为模板引擎,那么DispatcherServlet(中央处理器)就会去选择与之对应的FreeMarker的ViewResolver(视图解析器),来进行View视图对象的创建;

(9)ViewResolver(视图解析器)处理完之后,会把处理好的View视图对象返回给DispatcherServlet(中央处理器);

(10)DispatcherServlet(中央处理器)得到ViewResolver(视图解析器)返回的View视图对象后;DispatcherServlet(中央处理器)就会把ModelAndView对象的Model中的模板数据渲染到View视图中去;得到最终的View视图(也就是最终的HTML);

(11)DispatcherServlet(中央处理器)把最终得到的HTML放入响应,返回给客户端浏览器;浏览器对其进行解释,我们就看到了最终的展现结果;

2. Spring MVC处理流程:关键组件; 

Spring MVC处理流程中,有六大关键组件:DispatcherServlet(中央处理器),HandlerMapper(处理器映射器),HandlerAdapter(处理器适配器),Handler(处理器),ViewResolver(视图解析器),View(视图);

……………………………………………………

以下内容参考自【SpringMVC 工作原理】;

DispatcherServlet(中央处理器):是Spring MVC的核心,用来接收用户请求,反馈用户结果。相当于转发器或中央处理器,控制着整个流程的运行,对各个组件进行调度,降低组件之间的耦合性,并且有利于组件之间的扩展;

HandlerMapper(处理器映射器):作用是根据请求的 url 路径,通过注解或者是 xml 配置的方式,去寻找匹配的处理器 Handler 信息;

HandlerAdapter(处理器适配器):根据Handler的类型,去选择执行不同的、对应的Handler中的方法;

Handler(处理器):拦截器或者Controller的统称;作用是执行相关的请求处理逻辑,并返回相应的数据和视图信息,将其封装到 ModelAndView 对象中;

ViewResolver(视图解析器):作用是进行视图解析操作,将逻辑视图名解析成真正的视图 View;将处理结果生成View视图。ViewResolver(视图解析器)结合(ModelAndView对象中的)Model和View,来渲染视图;

View(视图):就是不同的 View 类型,例如 JSP,FreeMarker等。其作者用是根据View视图和Model数据,得到最终的View视图(就是HTML);

3. Spring MVC处理流程:总结;  

在实际开发中,需要我们程序员自己开发的就是Handler(处理器)和View(视图);即使如此,了解Spring MVC的整个工作流程和六大组件也是很必要的,这有助于日后的学习和理解;

你可能感兴趣的:(RESTful,拦截器,restful,http,后端)