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

本文以故事形式详细解析SpringMVC的执行流程,重点介绍了前端控制器、处理器映射器和处理器适配器的作用,帮助读者理解前后端分离场景下SpringMVC的工作原理。

SpringMVC简单易用,在前后端分离的项目中,甚至不需要我们写视图,只需要会写Controller就算会用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处理器,然后把结果然会给老大

第三步

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

在刚刚步入“多层结构”Web应用程序开发的时候,我阅读过几篇关于“asp.net三层结构开发”的文章。但其多半都是对PetShop3.0和Duwamish7的局部剖析或者是学习笔记。对“三层结构”通体分析的学术文章几乎没有。 2005年2月11日,Bincess BBS彬月论坛开始试运行。不久之后,我写了一篇题目为《浅谈“三层结构”原理与用意》的文章。旧版文章以彬月论坛程序中的部分代码举例,通过全局视角阐述了什么是“三层结构”的开发模式?为什么要这样做?怎样做?……而在这篇文章的新作中,配合这篇文章我写了7个程序实例(TraceLWord1~TraceLWord7留言板)以帮助读者理解“三层结构”应用程序。这些程序示例可以在随带的CodePackage目录中找到——   对于那些有丰富经验的Web应用程序开发人员,他们认为文章写的通俗易懂,很值得一读。可是对于asp.net初学者,特别是没有任何开发经验的人,文章阅读起来就感到非常困难,不知文章所云。甚至有些读者对“三层结构”的认识更模糊了……   关于“多层结构”开发模式,存在这样一种争议:一部分学者认为“多层结构”与“面向对象的程序设计思想”有着非常紧密的联系。而另外一部分学者却认为二者之间并无直接联系。写作这篇文章并不是要终结这种争议,其行文目的是希望读者能够明白:在使用asp.net进行Web应用程序开发时,实现“多层结构”开发模式的方法、原理及用意。要顺利的阅读这篇文章,希望读者能对“面向对象的程序设计思想”有一定深度的认识,好能懂一些“设计模式”的知识。如果你并不了解前面这些,那么这篇文章可能并不适合你现在阅读。不过,无论这篇文章面对的读者是谁,我都会尽量将文章写好。我希望这篇文章能成为学习“三层结构”设计思想的经典文章!
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值