Tomcat源码阅读之请求过程
来源:互联网 发布:tech域名不能备案 编辑:程序博客网 时间:2024/06/07 02:09
Tomcat接收到请求之后便进行解析请求的工作。解析Http请求是个非常复杂的过程,比如解析请求头,解析请求行,解析参数等过程都比较复杂。对解析Http请求过程感兴趣的同学可以结合Http协议相关的资料深入研究。
Http请求解析完的数据会填充到request对象中,注意是org.apache.coyote.Request类型的对象。这个类是Tomcat内部使用的描述请求的信息类,作用就是在服务器接收到请求后,经过解析将这个请求快速分配给后续线程去处理。后续在处理这个请求的时候也会创建一个request对象,不过是org.apache.catalina.connector.Request类型的。这个对象会一直贯穿整个请求过程,直到处理请求那一步。
请求解析完之后,需要关联相应的容器处理请求。那么问题来了,Tomcat是如何将请求最终交给Servlet处理呢?Tomcat用到了两个组件,分别是Pipeline(管道)和Valve(阀)。每一个Container容器可以有一条管道,可以在这个管道上添加任意的阀,可以通过编辑server.xml来动态的添加阀,当一个阀执行完之后,会调用下一个阀继续执行,最后执行基础阀。阀对应的对象都实现了Value接口,主要的逻辑在invoke方法,执行阀其实就是调用其invoke方法进行处理。每个Container容器都有一个基础阀,根据容器等级从高到低依次为StandardEngineValve,StandardHostValve,StandardContextValve,StandardWrapperValve。容器的基础阀设置是在容器实例化的时候。
最后要执行的一个阀是StandardWrapperValve,对应的容器为Wrapper。Wrapper代表一个Servlet,Http请求的处理过程就封装在StandardWrapperValve的invoke方法中,到这里成功将请求传递给了相应的Servlet进行处理,那么接下来便是处理请求的过程了。
- Tomcat源码阅读之请求过程
- Tomcat源码阅读之处理请求
- Tomcat源码阅读之Init过程
- Tomcat源码阅读之Load过程
- Tomcat源码阅读之Engine启动过程
- tomcat源码解析(三)--请求过程之数据的接收
- tomcat源码解析(四)--请求过程之路径的匹配
- 深入理解 Tomcat(九)源码剖析之请求过程
- Tomcat源码阅读之过滤器
- tomcat源码阅读之Digester
- Tomcat连接器运行过程(源码阅读)
- Tomcat源码阅读之StandarWrapper源码分析
- Spring MVC处理请求过程(Spring MVC源码阅读系列之二)
- Tomcat 请求过程源码解析(二)
- Tomcat源码分析--一次HTTP请求过程
- Tomcat 源码阅读(五)解析请求ProtocolHandler
- Tomcat源码阅读之Mapper分析
- Tomcat源码阅读之实例化Container
- android版本和API对应关系
- oracle解表死锁。
- 实践 Neutron 前的两个准备工作 - 每天5分钟玩转 OpenStack(78)
- OMACP密码类型
- cmake安装和使用简单介绍
- Tomcat源码阅读之请求过程
- web.xml文件详解
- # **linux 某一目录下所有文件时间戳**
- linux C编程(五)函数指针与函数调用
- 电子商务模式都有哪些
- 深入浅出 RPC - 浅出篇
- 手机中的网路类型概念
- 【图的dfs + bitset+ 套路】hihocoder. 1041
- C语言程序代码优化