程序员云旅游:10分钟带你走完SpringMVC里一次HTTP请求处理之路

今天就由本大佬(请原谅我使用了略微夸张的修辞手法)亲自带队,来为大家导游,带领大家探秘神奇的SpringMVC世界,重走一次HTTP请求处理之路,本次行程共计7站,约用时10分钟 。

程序员云旅游:10分钟带你走完SpringMVC里一次HTTP请求处理之路

文章插图
 
来来来,上车的请把票买一下(点个赞、交个朋友嘛),说你呢!对!说的就是你,长这么帅,不点赞想啥呢?(别打我……保护猿类,人人有责)
OK,现在我们每个人都有一张门票(想象成每个人都是一个HTTP请求),每张票上都有一串神秘代码(不是你们想的那种神秘代码,就想象成请求链接url),车票都保存好,一会进大门可要检查的 。
坐稳了,老司机这就带你起飞……
景区大门OK,现在我们首先来到DispatcherServlet,它是作为SpringMVC的大门而存在,只有先穿过它,才能到达真正的入口 。
【程序员云旅游:10分钟带你走完SpringMVC里一次HTTP请求处理之路】我先来给大家科普(八卦)一下DispatcherServlet的来历:
程序员云旅游:10分钟带你走完SpringMVC里一次HTTP请求处理之路

文章插图
 
这DispatcherServlet虽然整了个高大上洋文名,但我们千万不要被它唬住,它本质上还是我们熟悉的那个翠花(普通Servlet类),在这给我装啥呢?
 
 
来来来,咱们继续往前走,前面即将到达doDispatch,大家都跟上!
有人问doDispatch是个啥地方呀?
它呀,相当于景区的检票口,通过之后各位就可以自由活动了,最后出来时我们再到这里集合 。
来来来,这是本次的线路图,大家都来看一下!(ps:看一次5元,养家糊口不容易啊):
程序员云旅游:10分钟带你走完SpringMVC里一次HTTP请求处理之路

文章插图
 
检票口大家排好队,把门票都拿出来,准备检票啦~大包小包,过机安检(有没有一种来到车站的感觉) 。
什么?把票弄丢了?别闹,腰不好 。
到底检查啥呢?
这个问题问的好,一看就是个文化人 。
程序员云旅游:10分钟带你走完SpringMVC里一次HTTP请求处理之路

文章插图
 
 
这一步主要是检查你有没有携带物品(是不是一个上传文件请求),如果你携带了物品,那么工作人员就会把你的物品取出来包装一下、变成MultipartFile再还给你,再给你身上贴上一个此人携带贵重物品的标志,也就是multipartRequestParsed标志位(这是深怕别人不知道你有钱啊),把你和没带物品的人区分开 。
确定路线OK,检查完毕以后,接下来就是各自确定游玩路线 。
各位携带贵重物品的大佬们,等会交个朋友呗!(你们还缺一位可爱真诚的小老弟吗?)
 
 
怎么确定路线?
这个问题提的太好了!怎么又是你?这位机智的朋友,我已经记住你了 。
程序员云旅游:10分钟带你走完SpringMVC里一次HTTP请求处理之路

文章插图
 
我们每个人不是都有一张门票嘛,门票上都有一串神秘代码(请求链接url),这里我们就是通过这个神秘代码来找到各自对应的路线(根据请求url找到对应的Controller、以及方法) 。
前期准备工作在每个人确定各自的路线后,大家有5分钟时间准备一下,现在有事还能回去,过了这村可就回不去啦 。
在这期间可以做些什么事呢?
这个问题同样的非常好,首先我们来看一下:
程序员云旅游:10分钟带你走完SpringMVC里一次HTTP请求处理之路

文章插图
 
HandlerInterceptor?是不是有点熟悉?对,你没有看错!就是拦截器 。在这里SpringMVC会首先调用我们拦截器里的preHandle方法 。
Tip:在preHandle方法里我们可以提前进行一些登录校验、权限校验、日志记录等的工作,可以将一些非法的请求拒之门外 。
正式畅玩都准备好了吧?那么大家就按照的路线去玩耍吧(执行Controller业务逻辑),最后还会有拼图大礼包再向你们招手呢(返回模型视图ModelAndView)
本宝宝就在这眯一会等你们!(反正你们最后会发现还会回到这儿的)
一路都有啥好玩的?
这我可得给你好好说道说道 。来,坐下,小笔记记好:
首先参数解析器会对它进行一个参数解析、校验、参数绑定的操作过程,然后才会到达我们的Controller方法进行具体的业务处理,最终都会返回一个ModelAndView 。


推荐阅读