栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC源码笔记一

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC源码笔记一

SpringMVC 简单的controller过程

本文将通过一个简单的示例,来展示自己在看SpringMVC的过程。

创建一个项目,很简单创建一个get请求的路由,然后返回hello world的值。

doService


该方法会通过调用doDispatch方法进行分发。

doDispatch


SpringMVC的请求都会到这个方法中来处理。

我们可以看到很多参数,请求ip,端口号等等,请求的uri,请求的Get方法等等。

跳过一些对象的初始化过程,来到checkMultipart函数,该函数是判断是否为上传,我们的request还是开始的request。


因为request还是之前的request,跳过之后来到getHandler。该函数目的是找到一个能处理请求的处理器。

getHandler


该函数将请求映射到方法上,该方法通过循环遍历来找到能处理请求的。发现有5个不同的映射器,在SimpleUrlHandlerMapping这个映射器时会获得handler。我们进入getHnalder程序进行查看是如何获得handler的。

暂时不管这个方法。

该方法先找到请求的路径。然后根据路径和请求进入lookupHandlerMethod函数中找能够进行处理的方法。如果方法不为空就创建一个解析的bean。

directPathMatches存放能处理这个路径的mapping。
通过遍历这些mapping进行查询能够处理的mapping,如果处理就加入到matches列表中。如果找不到,就添加一些别的东西。如果列表中能处理的个数大于1就对他们进行排序,然后获取第一个。

如果能处理的不止一个方法,就会抛出异常。

回到getHandler函数

通过getHandlerInternal我们获得到了handler。
接着我们会判断拿到的handler是否为空,如果为空就拿到一个默认的handler。接下去会进行一些其他的判断,然后通过handler获得执行链。最后返回。

回到doDispatch函数


对handler进行判断是否为空。
通过getHandlerAdapter函数获取适配器。
判断是否是get的方法,并检查是否有被修改。

接下去会进行拦截器pre操作,通过handle进行处理请求,进行拦截器post操作。

handle



我们最后会发现会通过invokeHandlerMethod进行处理我们的请求。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666843.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号