DispatcherServlet 分发流程

Java34

0 太长不看版

  • HTTPServletService 方法将请求按类进行分解
  • 主要是根据HTTP方法的类型调用 doXXX 方法
  • GET 和 HEAD 方法需要对 if-modified-since 进行特殊处理,其他是直接调用
  • FrameworkServlet 重写 doXXX 方法,统一调用 doService 方法
  • doXXX 方法统一调用 processRequest 方法
    • doOptionsdoTrace 有额外的处理
    • 其他是直接调用
  • processRequest 主要是初始化 ThreadLocal ,调用 doService 方法,并进行日志等处理
    • ThreadLocalLocalContextAttributes
    • doService 方法执行核心逻辑,是抽象方法
    • 完成后会清空 ThreadLocal,打印日志,产生事件。
  • DispatcherServlet 进行具体的实现
  • 重写 doService 方法
    1. 添加 DispatcherServlet 特有的请求属性
    2. 对 HTML 的 include 请求进行处理
    3. 对重定向的请求进行处理
    4. 将请求转交给 doDispatch 方法进行实际的分发
  • doDispatch 方法的逻辑为:
输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java学习-动手动脑4 Java

Java学习-动手动脑4

异常处理 ``` public class SystemExitAndFinally { public static void main(String[] args) { try { System.o...
RabbitMQ与SpringBoot整合 Java

RabbitMQ与SpringBoot整合

前文总结了Dubbo与SpringBoot的整合(https://www.cnblogs.com/cott/p/12373043.html),本文基于这套框架,引入RabbitMQ消息队列。 1.在l...
零基础半天做出物体检测 Java

零基础半天做出物体检测

零基础半天做出物体检测 声明:此项目是本人应对学校的课程设计(大四,学校突然开展此课设并且他不授课,就去实验室去做这个东西。重点是啥也不教,让10天做出来!吐槽一下,拜托,时间很宝贵的,基本都要考研的...
文件输入/输出流 Java

文件输入/输出流

文件输入/输出流程序 运行期间,大部分数据都被存储在 内存中,当程序结束或被关闭时,存储在内存中的数据将会 消失。如果要 永久保存数据,那么最好的办法就是把数据保存到 磁盘的文件中。为此,Java提供...
JAVA Stream在jdk17下的例子 Java

JAVA Stream在jdk17下的例子

最近因为某些原因,又要用stream,所以耗费了一些时间,做了一些例子,以便自己后续参考。 环境: Article类代码: ``` package study.base.lambda.stream; ...
垃圾收集器 Java

垃圾收集器

垃圾收集器 Serial:单线程收集器、在进行垃圾收集的时候需要暂停其他线程。优点:简单高效。适用于新生代。复制算法 SerialOld:是Serial收集器的l老年代版本,,也是一个单线程收集器,不...
MVCC(多版本并发控制)详解 Java

MVCC(多版本并发控制)详解

在 MySQL InnoDB存储引擎下,RC、RR 基于 MVCC 进行并发事务控制, MVCC 是基于"数据版本"对并发事务进行访问 用一个例子来解释一下,下面是一张事务执行流程图: 稍微解释一下:...
高速缓存一致性协议MESI与内存屏障 Java

高速缓存一致性协议MESI与内存屏障

CPU高速缓存机制的引入,主要是为了解决CPU越来越快的运行速度与相对较慢的主存访问速度的矛盾。CPU中的寄存器数量有限,在执行内存寻址指令时,经常需要从内存中读取指令所需的数据或是将寄存器中的数据写...
Maven-私服搭建与配置 Java

Maven-私服搭建与配置

一、maven私服搭建 1.下载地址 https://help.sonatype.com/repomanager3/product-information/download/download-arch...
用户交互Scanner(Java) Java

用户交互Scanner(Java)

基本介绍 1.next() 一定要读取到有效字符后才可以结束输入 对输入有效字符之前遇到的空白,next()方法会自动将其去掉 只有输入有效字符后才将其后面的空白作为分隔符或者结束符 next()不能...
Java(2)数据类型与变量 Java

Java(2)数据类型与变量

前言 Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共8种基本类型,其中有4种整型、2种浮点型、1种字符串类型char(用于表示Unicode编码的代码单元)和1种...