【仿写tomcat】一、tomcat工作流程

news/2024/5/19 2:26:58 标签: tomcat, java, tomcat原理, 仿写tomcat, 反射, 代理, socket

仿写tomcat

      • 简介
      • tomcat简介
      • 流程分析
        • tomcat是怎么和访问者交互的?
        • 流程图

简介

作者前不久刚仿写了一个简易的tomcat,在此分享给各位,此篇为对tomcat的简介和流程分析,具体仿写内容后续会贴在这里

tomcat_4">tomcat简介

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

流程分析

首先我们要对tomcat的工作流程有一个大概的认识,写过servlet项目的朋友都知道,在servlet项目中是没有main方法的,都是依托于tomcat运行的。

而一个程序想启动,没有main方法是不可能的,所以tomcat中必然是存在一个主方法的,而且为了保持运行状态,还要有一个死循环。

同时我们在写servlet的时候,并没有在哪里调用这些方法,显然这些都是tomcat代理完成的。

tomcat又是如何知道我们有哪些servlet文件呢?没错,就是通过注解。

那么分析到这里就明确了:
首先,tomcat在启动的时候要扫描java文件
并且通过反射获取他的注解信息,判断是否有对应的注解
随后放到一个地方去存储,后续再通过代理的方式调用这些类里的方法
tomcat中要有一个死循环保持运行状态。

这些都不是什么太大的问题,我们在仿写spring中已经做过这些内容了,其实大家也都知道,springboot是内置tomcat的,这些工作本来就是tomcat来做的,只不过通过了spring的一层处理而已。

tomcat_25">tomcat是怎么和访问者交互的?

其实tomcat使用的是socket连接,监听本机的端口,当这个端口被访问的时候,socket连接就能够感知,并且可以通过输入输出流的形式做出对应的请求与响应,也就是我们常说的request和response。而这一点也就是我们仿写过程中的主要工作。

流程图

在这里插入图片描述


http://www.niftyadmin.cn/n/4948082.html

相关文章

Linux问题--docker启动mysql时提示3306端口被占用

问题描述: 解决方法: 1.如果需要kill掉mysqld服务可以先通过 lsof -i :3306 2. 查询到占用3306的PID,随后使用 kill -15 PID 来kill掉mysqld服务。 最后结果

微服务中间件--分布式事务

分布式事务 a.理论基础1) CAP定理2) BASE理论 b.Seata1) XA模式1.a) 实现XA模式 2) AT模式3) TCC模式3.a) 代码实现 4) Saga模式5) 四种模式对比6) TC的异地多机房容灾架构 a.理论基础 1) CAP定理 分布式系统有三个指标: Consistency(一致性&#xff…

Android Selector 的使用

什么是 Selector&#xff1f; Selector 和 Shape 相似&#xff0c;是Drawable资源的一种&#xff0c;可以根据不同的状态&#xff0c;设置不同的图片效果&#xff0c;关键节点 < selector > &#xff0c;例如&#xff1a;我们只需要将Button的 background 属性设置为该dr…

无涯教程-Perl - system函数

描述 该函数执行PROGRAM指定的命令,并将LIST作为参数传递给该命令。 返回值是等待功能返回的程序的退出状态。要获得实际的退出值,请除以256。 语法 以下是此函数的简单语法- system PROGRAM, LISTsystem PROGRAM返回值 此函数返回wai返回的程序的退出状态 例 以下是显…

微服务中间件--微服务保护

微服务保护 微服务保护a.sentinelb.sentinel限流规则1) 流控模式1.a) 关联模式1.b) 链路模式 2) 流控效果2.a) 预热模式2.b) 排队等待 3) 热点参数限流 c.隔离和降级1) Feign整合Sentinel2) 线程隔离2.a) 线程隔离&#xff08;舱壁模式&#xff09; 3) 熔断降级3.a) 熔断策略-慢…

1281. 整数的各位积和之差

诸神缄默不语-个人CSDN博文目录 力扣刷题笔记 文章目录 1. 简单粗暴的遍历2. 其实也是遍历&#xff0c;但是用Python内置函数只用写一行 1. 简单粗暴的遍历 Python版&#xff1a; class Solution:def subtractProductAndSum(self, n: int) -> int:he0ji1while n>1:last…

上海虚拟展厅制作平台怎么选,蛙色3DVR 助力行业发展

引言&#xff1a; 在数字化时代&#xff0c;虚拟展厅成为了企业宣传的重要手段。而作为一家位于上海的实力平台&#xff0c;上海蛙色3DVR凭借其卓越的功能和创新的技术&#xff0c;成为了企业展示和宣传的首选。 一、虚拟展厅的优势 虚拟展厅的崛起是指随着科技的进步&#x…

Android Hook技术学习——常见的hook技术方案

一、前言 最近一段时间在研究Android加壳和脱壳技术&#xff0c;其中涉及到了一些hook技术&#xff0c;于是将自己学习的一些hook技术进行了一下梳理&#xff0c;以便后面回顾和大家学习。 本文第二节主要讲述编译原理&#xff0c;了解编译原理可以帮助进一步理解hook技术 本文…