全网最通俗易懂的SpringMVC执行流程解析

SpringMVC简单易用,在前后端分离的项目中,甚至不需要我们写视图,只需要会写Controller就算会用SpringMVC了,实际上大部分工作SpringMVC已经帮我们做好了,所以我们要深入理解SpringMVC的执行流程,了解它是怎么工作的
先上一张图,这是我在网上随便找的一张图,相信很多学习SpringMVC的小伙伴都见过这张图,我记得当初老师让我们死记硬背这张图,但是着根本看不懂好吧,就算死记硬背也不会理解。今天我就好好讲讲这张图,如果还不理解的顺着网线过来打我。全网最通俗易懂的SpringMVC执行流程解析
相信很多人第一次看到这张图跟我一样都是头皮发麻的,各种专业名词,晦涩难懂。接下来我们就通过讲故事的方式以第一人称角度来分解这张图。

故事中有三大主角,首先是用户,我们的甲方爸爸,然后我们是SpringMVC,还有我们的程序猿小兄弟。SpringMVC这么庞大可不能只有一个人,我们是SpringMVC的老大,我们手下还有三个小弟,认识三个小弟之前先自我介绍一下,我们是SpringMVC的老大 前端控制器,英文名DispatcherServlet。我手下的三个小弟分别是 1.处理器映射器HandlerMapping)2.处理器适配器HandlerAdapter)这两个小弟比较重要 还有一个3号小弟是视图解析器ViewResolver)这个小弟在前后端分离的项目中已经被抛弃了,今天不重点介绍。
以上就是SpringMVC六大组件中不需要程序员编写的四大组件了,还有两个组件分别是View视图,就是我们的jsp页面(这个组件在前后段分离中也被放弃了),还有一个就是Controller处理器, controller处理器就是我们的程序猿小兄弟。
所以上图中的六个黄色部分就是SpringMVC的六大组件,其中左下角的两个现在基本被废弃不用,controller我们很熟悉,所以我们重点关注另外三个
SpringMVC的三个小弟互相是不认识的,他们三个不直接交流,而是都通过老大这个中间人进行交流,这样的目的是为了降低三个小弟之间的耦合度,因为他们之间要是有交流就容易出事啊。

第一步.

当用户发送了一个请求给SpringMVC的老大,老大就找到了一号小弟HandlerMapping处理器映射器,就相当于我给你个人名,你把他电话号码给我找出来,然后一号小弟就通过用户给的url地址找到了对应的controller处理器,然后把结果封装成一个对象交给了老大。通过人名找电话号,和通过url找处理器,这都是一种映射关系,所以一号小弟叫处理器映射器

第二步

老大把一号小弟返回来结果交给二号小弟,HandlerAdapter处理器适配器,看到适配器你们想到了什么,电源适配器,说白了就是手机充电器,苹果充电器充苹果,安卓充电器充安卓,同理老大不会亲自执行controller处理器,这就好像给手机充电需要特定的充电器一样,处理器适配器就是完成这个功能的,二号小弟去执行程序员写的controller处理器,然后把结果然会给老大

第三步

原本这一步老大应该把结果交给三号小弟视图解析器来做的,但是前后分离中老大只能把数据结果返回给前端了,让前端把数据渲染成视图展示给我们的用户甲方爸爸
以下是我自己画的前后端分离流程图,全网独一份,虽然画的有点丑,但是网上你只能找到传统的流程图
全网最通俗易懂的SpringMVC执行流程解析