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

dispatcherServlet的初步认识

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

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

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

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

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