SpringMVC——Spring中的DispatcherServlet怎么工作?
上一篇博客大致讲了apache Tomcat如何将请求封装经过filter请求到servlet
链接:tomcat如何将请求分发到servlet
这里说说到了Servlet如何处理。
先上一张类图。
这是Servlet到DispatcherServlet的继承关系,servlet里面有一个init方法,一般在第一次请求来得时候调用(有特殊情况,load-on-startup的值大于0的时候在实例化servlet调用)。
在init方法里使用了Spring最爱用的模板模式,子类去实现父类留好的模板方法,实现自己的特殊操作,对应到DispatcherServlet就是一些初始化,比如关键的如何让url对应到Controller的方法上的initHandlerMapping()方法等。
接下来看另一个相似的图
一样的结构,不同的时这里我们讲的是service方法的实现。
service方法就是本文最开始提到的tomcat里执行完filter然后执行Servlet的service方法。
同样的模板方法,在httpServlet类里封装了对GET POST请求不同的处理,普通的Servlet实现直接继承即可。
在后面的继承关系中,最后又将其封装非processRequest方法,直到子类最后关键的实现doDispatch()这一关键的实现。
关于doDispatch()方法,后续继续更新。
SpringMVC——Spring中的DispatcherServlet怎么工作?相关推荐
- Spring中IOC和AOP的详细解释(转)
原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...
- java spring server_java server之spring中的IOC如何用java实现?
** 什么是IOC? 一般的对象耦合是在编译时确定的,也就是说当我们写如下类: public class StaticCoupling { String s = new String("hz ...
- Spring中Bean对象的存储和获取
目录 1. 更简单的将bean存储到spring中 1.0 前置工作,在配置文件中设置bean扫描的根路径 1.1 通过注解将bean存储到spring中 1.1.1 @Controller[控制器] ...
- mybatis+springMVC+spring原理及工作流程
做自己没做过的事情叫做成长 做自己不愿做的事情叫做改变 做自己不敢做的事情叫做突破 共勉 引言 本人在学习ssm中,已经能熟练的编写配置文件与代码了.但于前几天朋友问其原理与工作流程时却只能答出一二, ...
- java中mvc事务_关于项目中的事务问题_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...
SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring MVC 分离了控制器.模型对象.分派器以及处理程序对象 ...
- SpringMVC在web.xml中配置DispatcherServlet拦截了静态资源访问
如图 在web.xml中配置DispatcherServlet时对于url-pattern的配置方式有以下几种情况: 1.配置为: *.do 或者是 *.action 时,拦截以.do或者.actio ...
- Spring中@ Component,@ Service,@ Controller和@Repository之间的区别
在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repository批注之间的 ...
- Spring MVC的DispatcherServlet – Java开发人员应该知道的10件事
如果您使用过Spring MVC,那么您应该知道什么是DispatcherServlet? 它实际上是Spring MVC的心脏,确切地说是MVC设计模式或控制器的C语言. 应该由Spring MVC ...
- (转)spring中的拦截器(HandlerInterceptor+MethodInterceptor)
1. 过滤器跟拦截器的区别 在说拦截器之前,不得不说一下过滤器,有时候往往被这两个词搞的头大. 其实我们最先接触的就是过滤器,还记得web.xml中配置的<filter>吗~ 你应该知道 ...
最新文章
- linux 加载 iso,Linux iso文件加载和解包的用法
- Linux基础命令---killall
- CodeForces - 137D Palindromes(dp+路径输出)
- Android利用RecognizerIntent识别语音并简单实现打电话动作
- python文字游戏 生成数字菜单_python自学日记5——文字游戏
- 让你的Mac电脑高效起来,推荐几个yyds的命令行工具
- 数据库工作笔记008---mysql开启远程访问权限_ 1042 Can't get hostname for your address_Access denied for user 'root'@'
- 白板机器学习笔记 P22-P27 PCA降维
- 阿里巴巴为什么选择Apache Flink?
- 微信小程序自定义组件(Toast)
- groovy 打印json_groovyJSON - Groovy教程
- (安徽省地图)行政区划图高清矢量cdr|pdf(详细版2021年)
- 2020年下半年软件设计师下午真题及答案解析
- 搞明白activated和deactivated
- Pdf怎么设置页码,从正文开始
- 在ThemeForest上销售的利弊
- Java 首字母转大写,StringUtils.capitalize
- Ubuntu 安装企业微信
- Android root检测方法总结
- SpringBoot发送Http请求-RestTemplate
热门文章
- qt插件元数据不包含一个有效的元数据_Qt5个人软件插件使用(低级API)
- 群晖218J安装mysql_ds216(群晖218j可以换内存吗)
- 【小白学习PyTorch教程】十六、在多标签分类任务上 微调BERT模型
- 【小白学习keras教程】一、基于波士顿住房数据集训练简单的MLP回归模型
- 三十三、Java集合中的LinkedList
- keras神经网络模型的保存与加载
- 曝鸿蒙os手表,华为Watch GT 2曝光:第一款使用鸿蒙OS的智能手表
- XAMPP的MYSQL无法启动 -This may be due to a blocked port, missing dependencies,
- 今日arXiv精选 | 12篇EMNLP 2021最新论文
- 年前最后一期!知识图谱理论与实战(线下集训)