上一篇博客大致讲了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怎么工作?相关推荐

  1. Spring中IOC和AOP的详细解释(转)

    原文链接:Spring中IOC和AOP的详细解释 我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂 ...

  2. java spring server_java server之spring中的IOC如何用java实现?

    ** 什么是IOC? 一般的对象耦合是在编译时确定的,也就是说当我们写如下类: public class StaticCoupling { String s = new String("hz ...

  3. Spring中Bean对象的存储和获取

    目录 1. 更简单的将bean存储到spring中 1.0 前置工作,在配置文件中设置bean扫描的根路径 1.1 通过注解将bean存储到spring中 1.1.1 @Controller[控制器] ...

  4. mybatis+springMVC+spring原理及工作流程

    做自己没做过的事情叫做成长 做自己不愿做的事情叫做改变 做自己不敢做的事情叫做突破 共勉 引言 本人在学习ssm中,已经能熟练的编写配置文件与代码了.但于前几天朋友问其原理与工作流程时却只能答出一二, ...

  5. java中mvc事务_关于项目中的事务问题_JavaEE框架(Maven+SpringMvc+Spring+MyBatis)全程实战教程_Java视频-51CTO学院...

    SpringMVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring MVC 分离了控制器.模型对象.分派器以及处理程序对象 ...

  6. SpringMVC在web.xml中配置DispatcherServlet拦截了静态资源访问

    如图 在web.xml中配置DispatcherServlet时对于url-pattern的配置方式有以下几种情况: 1.配置为: *.do 或者是 *.action 时,拦截以.do或者.actio ...

  7. Spring中@ Component,@ Service,@ Controller和@Repository之间的区别

    在了解Spring框架中@Repository @Component , @Service @Controller , @Repository @Controller和@Repository批注之间的 ...

  8. Spring MVC的DispatcherServlet – Java开发人员应该知道的10件事

    如果您使用过Spring MVC,那么您应该知道什么是DispatcherServlet? 它实际上是Spring MVC的心脏,确切地说是MVC设计模式或控制器的C语言. 应该由Spring MVC ...

  9. (转)spring中的拦截器(HandlerInterceptor+MethodInterceptor)

    1.  过滤器跟拦截器的区别 在说拦截器之前,不得不说一下过滤器,有时候往往被这两个词搞的头大. 其实我们最先接触的就是过滤器,还记得web.xml中配置的<filter>吗~ 你应该知道 ...

最新文章

  1. linux 加载 iso,Linux iso文件加载和解包的用法
  2. Linux基础命令---killall
  3. CodeForces - 137D Palindromes(dp+路径输出)
  4. Android利用RecognizerIntent识别语音并简单实现打电话动作
  5. python文字游戏 生成数字菜单_python自学日记5——文字游戏
  6. 让你的Mac电脑高效起来,推荐几个yyds的命令行工具
  7. 数据库工作笔记008---mysql开启远程访问权限_ 1042 Can't get hostname for your address_Access denied for user 'root'@'
  8. 白板机器学习笔记 P22-P27 PCA降维
  9. 阿里巴巴为什么选择Apache Flink?
  10. 微信小程序自定义组件(Toast)
  11. groovy 打印json_groovyJSON - Groovy教程
  12. (安徽省地图)行政区划图高清矢量cdr|pdf(详细版2021年)
  13. 2020年下半年软件设计师下午真题及答案解析
  14. 搞明白activated和deactivated
  15. Pdf怎么设置页码,从正文开始
  16. 在ThemeForest上销售的利弊
  17. Java 首字母转大写,StringUtils.capitalize
  18. Ubuntu 安装企业微信
  19. Android root检测方法总结
  20. SpringBoot发送Http请求-RestTemplate

热门文章

  1. qt插件元数据不包含一个有效的元数据_Qt5个人软件插件使用(低级API)
  2. 群晖218J安装mysql_ds216(群晖218j可以换内存吗)
  3. 【小白学习PyTorch教程】十六、在多标签分类任务上 微调BERT模型
  4. 【小白学习keras教程】一、基于波士顿住房数据集训练简单的MLP回归模型
  5. 三十三、Java集合中的LinkedList
  6. keras神经网络模型的保存与加载
  7. 曝鸿蒙os手表,华为Watch GT 2曝光:第一款使用鸿蒙OS的智能手表
  8. XAMPP的MYSQL无法启动 -This may be due to a blocked port, missing dependencies,
  9. 今日arXiv精选 | 12篇EMNLP 2021最新论文
  10. 年前最后一期!知识图谱理论与实战(线下集训)