Tomcat组件概念和请求流程

Tomcat:是一个Servlet容器(实现了Container接口),容器分层架构从上到下分为。Engine(List<Host>)->Host(List<Context>)->Context(List<Wrapper>)->Wrapper(List<Servlet>);

Engine:引擎,Servlet 的顶层容器,用来管理多个虚拟主机。只会存在一个。

Host:虚拟主机,负责 web 应用的部署和 Context 的创建,一个虚拟主机下可以部署多个Web应用,不同的虚拟主机的访问日志可以放在不同的文件夹下。

Context:Web应用,负责Web配置的解析,管理所有的Web资源。一个Context对应一个Web应用,为特定的Web应用处理所有的客户请求,管理Wrapper。

Wrapper:某一种实例的Servlet,每一个Wrapper下面可能会有多个Servlet,每一个线程打进来都是一个Servlet。

Servlet:java的服务端程序,用于编写程序员的业务逻辑。

Tomcat的使用:一般我们在使用Tomcat的时候,都会将一个war包放在Tomcat中的webApps目录下,然后去启动Tomcat(它会自动帮我们解压war包生成一个web应用),war包和jar包的区别在于:jar包大多数情况下被理解为一种依赖,但是也可以是一个web项目,但是如果你讲jarbao放在了Tomcat下,那么它是无法识别你到底是依赖还是web项目,所以Tomcat只能去解压war包/描述符/文件夹部署的这些情况从而生成web项目。

Tomcat请求交互流程:

客户端和服务端之间的数据交互本质上就是两个操作系统之间的交互,操作系统本身提供了socket接口(用于实现Tcp协议)用于建立连接保证两个操作系统之间的通信和数据交互。然后Http连接必须承载与socket连接之上,你必须在建立socket连接之后才可以实现Http连接,Http协议本身分为三块(请求行,请求头,请求体),Tomcat建立socket连接之后会将socket连接扔到线程池中去处理http请求,进行数据的解析(就是Http协议的解析),所以Http协议可以理解成一种数据格式,只有遵守这种数据格式的情况下,才能被Tomcat正常解析。

Tomcat通过Endpoints从操作系统的缓存中读取数据(复制数据)至InputBuffer(Tomcat的缓存)中,然后基于InputBuffer将里面的数据进行解析,先解析请求行,然后将请求头中的请求方法,url,协议等信息解析完之后生成一个Request对象(Tomcat内部用到了门面模式)。将Request对象交给容器处理,容器最终甩到servlet中,servlet可以使用response对客户进行响应,然后重置处理InputBuffer中的pos和lastValid,这样方便处理下一个请求

相关推荐
独断万古他化3 分钟前
【Spring 原理】Bean 的作用域与生命周期
java·后端·spring
*小海豚*9 分钟前
在linux服务器上DNS正常,但是java应用调用第三方解析域名报错
java·linux·服务器
撩得Android一次心动24 分钟前
Android LiveData 全面解析:使用Java构建响应式UI【源码篇】
android·java·android jetpack·livedata
组合缺一28 分钟前
Solon AI (Java) v3.9 正式发布:全能 Skill 爆发,Agent 协作更专业!仍然支持 java8!
java·人工智能·ai·llm·agent·solon·mcp
MSTcheng.32 分钟前
【C++】C++11新特性(二)
java·开发语言·c++·c++11
一 乐36 分钟前
校园二手交易|基于springboot + vue校园二手交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
KIKIiiiiiiii37 分钟前
微信个人号API二次开发中的解决经验
java·人工智能·python·微信
80530单词突击赢38 分钟前
SpringBoot整合SpringMVC全解析
java·spring boot·后端
vx1_Biye_Design1 小时前
基于Spring Boot+Vue的学生管理系统设计与实现-计算机毕业设计源码46223
java·vue.js·spring boot·spring·eclipse·tomcat·maven
vx_Biye_Design1 小时前
基于Spring Boot+vue的湖北旅游景点门票预约平台的设计--毕设附源码29593
java·vue.js·spring boot·spring cloud·servlet·eclipse·课程设计