dispatcherServlet的初步认识

dispatcherServlet的初步认识,第1张

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详细的执行流程。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5694359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存