dispatcherServlet的初步认识

关于前言:

在SpringMVC中非常重要的就是中央处理器,也就是本帖介绍的dispatcherServlet。大家在javaWeb阶段学的servlet,当时MVC分层的架构下,controll层面就是一个类继承与HttpServlet,重写他的doGet()和doPost()两个方法,然后在web.xml中配置好他的映射关系。而SpringMVC在web.xml中直接把所有请求映射到一个dispatcherServlet中。所以想要弄清楚找源码的第一步就是找doGet()和doPost()在哪里。 


正文:

我们了解一个类的作用的前提就是查看类的关系图,方便对关系做一个初步的认识。

如图所示,这是dispatcherServlet的继承关系图。从图中可以明显的观察到dispatcherServlet是HttpServlet的一个子类。而doGet和doPost这两个方法就是继承HttpServlet然后重写的。我们这里先打开HttpServletBean的所有方法的总览,使用idea开发工具的情况下快捷键ctrl+F12

 可以查看到HttpServletBean这个HttpServlet的子类中并没有重写doGet和doPost两个方法,所以继续往他的子类追进去。

 这是FrameworkServlet的方法总览,总算是发现doGet和doPost,而dispatcherServlet继承FraneworkServlet,这里的doGet和doPost方法中是不是做了什么事情呢,咱们继续追。

 可以看到这里方法又调用了类中的其他方法,没办法继续追

 此方法中对一些基本的数据做了初始化,并且调用了doService方法,我们知道在Spring框架全家桶中一般真真执行的业务逻辑方法都是do开头的方法,那么doService会不会是执行的放呢?咱们继续追进去!

追进去发现这是一个抽象方法,这时候刚好想到dispatcherServlet继承与FrameworkServlet,所以实现肯定在我们最关心的dispatcherServlet中。咱们继续追进去

 我们发现我们的猜测并不是对的,这里并不是执行的最关键部分,这里跟前面的processRequest这个方法比较相似,也是一些初始化,往request内置对象中添加一些属性,这里并不是我们的重点,重点在于doDispatch()这个方法。那么我们继续往下追。

追到这里就可以明白dispatcherServlet最重要的业务逻辑就在doDispatch()这个方法中。


总结:

这就是就是一个dispatcherServlet的一个初步认识了。下面链接是仔细分析doDispatch()方法,也就是SpringMVC详细的执行流程。

超级仔细的SpringMVC工作流程源码解读https://blog.csdn.net/qq_43799161/article/details/122309958?spm=1001.2014.3001.5501

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员李哈

创作不易,希望能给与支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值