tomcat4源码剖析(一)——tomcat的整体架构

万字深度剖析Tomcat源码 (全是干货,建议收藏!!!) Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。 阅读详情

    在项目开发中,随着项目规模做的越来越大。对于所使用的底层容器的了解显得越发重要。借此契机,最近在研读《深入剖析Tomcat》这本书。觉得对于Tomcat的了解很有帮助。虽然写的是Tomcat4,但是感觉在大体的原理上差别应该不大。在此记录下自己查看代码的心得体会。本系列会根据书中的章节,进行整理和总结。

一、tomcat的总体结构

     对于应用层来说,tomcat是在java封装好的socket的基础上编写出来的。做过socket编程的人都知道,实现网络通信时服务器端自己实现一个ServerSocket。通过accept()方法阻塞式的监听指定的ip和端口,然后客户端实现一个socket实例去连接服务器,这样双方的通信接建立起来了。至于java如何抽象socket以及ServerSocket不是本文所讲解的重点,如需了解请自行查找资料。
     Tomcat就是在此基础上,实现了一个ServerSocket不断接收socket,完成客户端的请求。由此Tomcat将接收请求,处理请求这两部分抽象出来,形成连接器和容器两个概念。连接器负责接收http请求,将请求协议,请求头抽象出来封装到Request,以及Response中,再将它们交给容器去处理。如图所示:
这里写图片描述

二、http请求

     其实每次我们打开浏览器点击一个具体的网址的时候,传送到服务器的都是一些字符,也就是http协议规定好的字符。当通过socket建立好连接后,服务器接收到的就是这些字符,然后根据协议挑选出其中的指定字段,当然请求的参数也在其中。然后服务器根据请求做相应的处理(比如查数据库返回指定的页面呀,返回一些图片什么的),通过socket将处理后的结果返回给客户端。返回的结果当然也还是字符,客户端接收到信息后,按照http协议解析,然后将结果你渲染成页面,这样我们就看见了网页,完成了一次请求过程。
     在整个过程中都遵循http协议。那http协议是什么呢?简单来说核心部分就是规定你发给我请求的时候,哪些地方填一些什么字符代表什么含义。我根据协议来解析你的请求。同时我回应你的时候,也按照一定的格式让你知道这次请求结果如何,然后浏览器按照协议取出指定的字符,在页面上渲染。
     一个典型的http协议包括:请求方法、请求头、实体。

GET /zkw/exmaple.jsp HTTP/1.1
User-Agent: Fiddler/2.6.3.48898 (.NET 3.5; WinNT 6.1.7601 SP1; zh-CN; 4xAMD64; Auto Update; Full Instance)
Pragma: no-cache
Host: www.fiddler2.com
Accept-Language: zh-CN
Referer: http://fiddler2.com/client/2.6.3.48898
Accept-Encoding: gzip, deflate
Connection: close

username=zkw&pwd=123

    如上所示,第一行就是请求方法,请求方法告诉服务器用什么方式请求(POST,GET,PUT等)。请求的服务器资源(/zkw/exmaple.jsp)。以及协议的版本(HTTP/1.1)。请求头包含客户端的环境和请求实体正文的相关信息。例如,客户端的语言环境(Accept-Language: zh-CN等)。实体包含的就是在这个请求中所携带的参数。例如用户名和密码等。
    在一次请求服务器的过程中,浏览器就是将类似于上述例子中的字符集通过网络传递给服务器。然后服务器解析上述字符集,提取其中的重要信息封装到request和reponse中,传递给容器处理。容器接收到request和reponse后再做处理,最后返回处理结果。
    服务器接收客户端请求,并将请求封装到自定义的request和reponse类中这一过程抽象出来就成为了连接器。接收request和reponse做相关处理,并返回处理结果给客户端这一过程抽象出来就成了容器。Tomcat基本的工作流程就是这样的。不断接收请求,交给容器去处理,再接收请求再交给容器去处理。

三、总结

    Tomcat的工作原理很简单——就是在http协议的基础上,对协议进行解析。利用协议来完成客户端(浏览器)与服务器之间的通信。下一节将针对此节的协议完成简单的Tomcat服务器代码。
这里写图片描述

我的架构梦:(十七)Tomcat 源码构建以及源码剖析 Tomcat 源码构建以及源码剖析一、源码构建二、源码剖析 一、源码构建 1、下载源码 这里博主下载的是apache-tomcat-8.5.50-src http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.50/src/ 2、源码导入IDE之前准备工作 解压 tar.gz 压缩包,得到目录 apache-tomcat-8.5.50-src 进入 apache-tomcat-8.5.50-src 目录,创建一个pom.xml文件,文件内容如下 &l 阅读详情

相关推荐

Tomcat系统架构与原理剖析及手写Tomcat及源码导入学习

Tomcat系统架构与原理剖析及手写Tomcat及源码导入学习

qq_36305027的博客 1798

配置Tomcat 4使用SSL

配置Tomcat 4使用SSL ----------------------- 内容: 1.Tomcat简介 2.SSL(Server Socket Layer)简介 3.SSL工作原理 4.配置Tomcat 4.x 使用SSL 5.结论 赵 梁 (b-i-d@163.com) 2002 年 5 月 赵梁,1995年毕业于北京航空航天大学。对J2EE, J2ME以及CORBA, Web Servi

生活、工作、娱乐 1085

深入理解Tomcat 4.0源码:使用Maven构建实践指南

本文还有配套的精品资源,点击获取 简介:Apache Tomcat 4.0是Java Web应用程序运行机制的关键版本。本文将展示如何利用Maven构建系统来解析和理解Tomcat 4.0的源码,探讨其核心组件,以及如何通过Maven自动化构建过程,提升Java Web开发技能,并深化对Tomcat工作原理的理解。 1. Apache Tomcat 4.0版本的重...

weixin_42588555的博客 1640

Tomcat4.01 配置全攻略

相关网址:http://www.yufeng.net ----------------------------- Tomcat4.01全攻略  一:简介  tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品(Most Innovative Java Product),同时它又是sun公司官方推荐的servlet和jsp容

feng_sundy 的专栏 1676

Tomcat7源码深入剖析与实践指南

Tomcat7作为一款开源的Servlet容器,是Java EE规范中Web服务器的一个重要实现。它采用了分层的架构设计,将核心功能拆分为多个模块,以便于管理和扩展。这种模块化设计也使得开发者更容易理解和自定义Tomcat行为。在Tomcat7中,组件的生命周期由Lifecycle接口定义,该接口包含一系列控制组件生命周期状态的方法,例如启动(start)、停止(stop)、暂停(pause)和继续(continue)。Lifecycle。

weixin_31139479的博客 602

tomcat的4个版本,4到7

tomcat4,tomcat5,tomcat6,tomcat7

Tomcat源码剖析笔记总结(超长干货——逐步分析)

主要分四部分: 套娃式架构设计 架构属于设计层次,源码是对设计的实现 Tomcat的架构设计比较独特,属于套娃式架构设计 源码剖析的原则、方法和技巧 Tomcat实例构建(启动过程源码分析) Servlet请求处理链路(Servlet如何被Tomcat处理的) 文章目录@[toc]一、Tomcat架构设计1.1 Tomcat的功能(需求)1.2 Tomcat的架构(架构就是为了完成功能...

zhuiyisinian的博客 5777

apache-tomcat-4.1.40

Apache Tomcat ®是一个开源软件实现的Java Servlet和JavaServer Pages技术。

Tomcat源码剖析|多图分析Tomcat启动时的初始化流程

Tomcat源码剖析——初始化 本文解析源码来自于Tomcat8.5.33 本文引用参考文献为《Tomcat架构解析-刘光瑞》 注:此文为连载文章,可以参考前序文章《类加载器》,以及后续文章《启动》 文章目录Tomcat源码剖析——初始化组件介绍LifecycleServerServiceContainerEngineHostContextWrapperExecutor源码分析流程图代码剖析Bootstrap静态代码块1. Bootstrap.main()2. Bootstrap.init()3.Bo

qq_37419449的博客 3160

tomcat4.1到tomcat9.0

自己亲身使用过的,jakarta-tomcat-4.1.30,tomcat-5.0.28,apache-tomcat-5.5.28,apache-tomcat-6.0.18,apache-tomcat-7.0.73-windows-x64,apache-tomcat-8.5.32-windows-x64,apache-tomcat-9.0.10-windows-x64

tomcat4.0源码

tomcat4.1.12源码,想要了解tomcat初始版本的源码看以看看

Tomcat源码初识一 Tomcat整理流程图

Tomcat流程图 流程图

死磕各种源码 1982

tomcat4 源码学习,深度剖析tomcat一书的指定tomcat版本,欢迎大家下载,官网下载会出现下载不了的情况,

tomcat4 源码学习,深度剖析tomcat一书的指定tomcat版本,随着tomcat版本的升级,内容发生 了变化,但为了读懂书籍,还是得使用老版本得源码,欢迎大家下载,官网下载会出现下载不了的情况,我主页有tomcat4-tomcat9所有版本源码,之前去官网下载,发现每次都下载不了,后来主动收集了全版本的源码,供大家学习。

Tomcat整体架构及其设计精髓分析

本专题讲解的Tomcat版本: apache-tomcat-9.0.55 , Tomcat9源码阅读环境搭建,查看我的其他博文。官方文档:Apache Tomcat 9 (9.0.93) - Documentation IndexTomcat是Apache Software Foundation(Apache软件基金会)开发的一款开源的Java Servlet容器。它是一种Web服务器,用于在服务器端运行Java Servlet和JavaServer Pages (JSP)技术。它可以为Java Web应用

输入知识,消化知识,输出知识,分享知识,教人让我学习更好,业精于勤荒于嬉,行成于思毁于随 1320

win11怎么安装dosbox和masm来运行汇编程序(小白,萌新篇)

一文教会你如何部署dosbox和masm环境

m0_73279193的博客 4699

Android13 AudioFlinger混音流程全解析:从prepareTracks_l到threadLoop_write的底层实现

本文深入解析Android13 AudioFlinger混音流程,从prepareTracks_l到threadLoop_write的底层实现。详细剖析MixerThread的核心工作循环,包括音轨预处理、混音算法执行及硬件写入机制,帮助开发者优化音频性能并处理多音轨场景。

tea88的博客 1130

深入剖析Tomcat原理

深入剖析Tomcat原理 一、 Tomcat源码部署和运行(intellij IDEA) 1、下载tomcat源码,以tomcat-8为例 链接: https://tomcat.apache.org/ 2、源码部署到IDEA中 ①创建新的空工程 ②解压源码压缩包到该工程的目录(目录名最好是非中文和非空格组成的)下 ③创建home文件,并将webapps和conf文件移入home文件中,目的是为了后期配置IDEA运行时参数时方便 ④新建pom.xml文件,在其中添加tomcat运行时依赖: &lt

qq_45703999的博客 1007

ROS2中间件选型指南:FastDDS与CycloneDDS零拷贝机制对比与实战

在机器人开发中,通信中间件是连接分布式节点的核心纽带,其性能直接影响系统的实时性与可靠性。DDS作为ROS2默认的通信标准,通过发布订阅模型和QoS策略,为高频大带宽场景提供了灵活的数据分发能力。并行计算与高性能传输的需求,推动了零拷贝技术的演进——从传统序列化到共享内存乃至指针传递,旨在减少数据复制开销、降低延迟。在激光雷达点云、相机图像等场景下,中间件的选型尤为关键。FastDDS凭借与ROS2的深度集成和丰富文档成为入门首选,而CycloneDDS在低延迟和资源占用上表现更优,借助iceoryx实现了

weixin_28726391的博客 250

tomcat源码分析pdf_Tomcat是如何运行的?整体架构又是怎样的?

推荐阅读:从远程办公到简历被拒,再到斩获阿里offer,这份PDF功不可没在许多的高端开发的岗位中都会或多或少有要求面试人员要研究过一些常用中间件源码。这是因为一切的秘密都是藏在源码中,阅读源码能够让我们对框架或者中间件的理解更加深刻,而我们也能够在源码的研究中获得其中一些优秀的设计方式。而我们的中间件和源码那么多,我们该从何入手呢?其实大部分的中间件或者框架都有一些共性的部分,例如网络编程、多线...

weixin_39913117的博客 151

基于角谱传播的MATLAB仿真:从相位恢复看自由空间光传播

本文详细介绍了基于角谱传播理论的MATLAB仿真方法,用于模拟自由空间光传播过程。通过傅里叶光学原理,将光场分解为频谱并应用传播相位滤波器,实现了从纯相位物体到可观测衍射图样的仿真。文章结合具体代码,演示了如何利用角谱法进行相位恢复,为计算成像和生物医学检测等领域的研究提供了实用的仿真工具和思路。

weixin_29055699的博客 279

STM32CubeMX定时器配置

因为只有当 CH2 处于 输入模式 时,硬件才能把这根脚送进滤波器(TI2FP2通道之前要滤波),再生成 TI2FP2 这条支路供 Slave-Mode 控制器使用,也就是说TI2FP2 并不是“独立存在”的,但在CubeMX配置时:如下图,我们只设置Slave Mode和TI1FP1,之后,CH1就自动配置为 Input Capture 了,下图发现,Channel1只能 Input Capture 或者Disable。哪来的主定时器和从定时器呢?把待测 PWM 的高电平当“门”,连接到ETR。

2402_89015641的博客 3181

Tomcat 源码解析一初识

从宏观上分析了Tomcat 的初始化,启动。

黄裳博客 4221

基于容积卡尔曼滤波的弹目相对姿态估计算法及其在导弹末端制导中的应用

本文针对导弹末端制导中的强非线性姿态估计问题,提出了一种基于容积卡尔曼滤波(CKF)的弹目相对姿态估计算法。通过建立包含视线角、角速率和相对距离的6维状态模型,利用三阶球面-相径容积准则精确逼近非线性状态分布,避免了传统EKF的线性化误差。在MATLAB/Simulink仿真中,CKF表现出比EKF更高的视线角速率估计精度和更快的收敛速度,最终显著减小了脱靶量,验证了其在提升导弹末端制导精度方面的有效性。该算法计算复杂度适中,适合工程实现,为高精度非线性姿态估计提供了新思路。

AI的内部世界的博客 105

Tomcat基础回顾和源码剖析

1、Tomcat系统架构说明 重点介绍Tomcat内部的各个组件及功能,组件之间的关联关系 2、Tomcat核心配置Server.xml的介绍 Server、Listener、GlobalNamingResources、Service、Executor、Connector、Engine等 3、Tomcat源码剖析 源码剖析主要有三个方面 1、Tomcat的启动流程 init方法和start方法 2、Tomcat的请求处理流程 3、Tomcat的Mapper组件体系结构 4、Tomcat的类加载机制

SmileCoder 289

Matlab可调用MODTRAN5封装器之Mod5

MODTRAN 是一个计算地球大气中电磁辐射传输的软件代码。MODTRAN是通过使用具有严格格式的输入文本文件来控制的。这个文件被称为“tape5”,扩展名为.tp5或.ltn。手工创建或编辑这个文件是不方便的。Mod5提供了一组函数来简化MODTRAN用例的处理。这些方法包括将tape5文件格式读取到Mod5类“实例”或“对象”中,更改文件中描述的案例实例,将tape5格式写回文件,在案例上运行MODTRAN并将MODTRAN输出文件中的各种结果读取回Matlab。还有许多绘图方法可用。

qq_19512613的博客 3254

PCL点云算法与项目实战案例汇总(长期更新)

本专栏将深入探讨PCL(点云库)的基础算法,旨在帮助读者掌握点云处理的核心技术。内容涵盖点云的采样、过滤、配准、分割等基础操作,并结合实际案例,展示这些算法在工程中的应用。无论你是初学者还是有一定经验的开发者,都能通过本专栏加深对PCL的理解,提升在三维数据处理领域的技能。

纵马踏花向自由 3001
上一篇: shiro与spring整合中shiroFilter配置参数loginUrl及unauthorizedUrl含义小记
下一篇: tomcat4源码剖析(二)——简单的Servlet容器
TYOUKAI_
博客等级 码龄9年 33粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值