百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Tomcat原理剖析-tomcat介绍和源码idea构建

csdh11 2025-03-29 16:36 4 浏览

一、Tomcat 介绍

1.1 什么是Tomcat

Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。

几乎所有Java程序员初期都会使用它,今天我们就带着大家深入Tomcat底层原理。

除了tomcat服务器,我们还可以使用其他的web服务器,那常见还还有以下这些:

Undertow:是一个采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制。

JBoss:JBoss公司的,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

WebLogic:Oracle公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

WebSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的。

历史沿革

Tomcat 最初由Sun公司的软件架构师 James Duncan Davidson 开发,名称为 “JavaWebServer”。

1999年,在 Davidson 的帮助下,该项目于 1999 年于apache 软件基金会旗下的 JServ 项目合并,

并发布第一个版本(3.x), 即是现在的Tomcat,该版本实现了Servlet2.2 和 JSP 1.1 规范 。

2001年,发布4.0版本,作为里程碑式的版本,Tomcat 完全重新设计了其架构,并实现了 Servlet

2.3 和 JSP1.2规范。

2003年,发布5.0版本,实现 Servlet 2.4 和 JSP2.0规范。

2007年,发布6.0版本,实现 Servlet 2.5 、JSP2.1 规范。支持EL1.1规范。

2011年,发布7.0版本,实现 Servlet 3.0 和 JSP2.2规范。支持EL2.2规范。加入了WebSocket规

范。

2014年,发布8.0版本,实现 Servlet 3.1 和 JSP2.3规范。支持EL3.0规范。

2016年,发布8.5版本,实现 Servlet 3.1 和 JSP2.3规范。支持HTTP/2,OpenSSL,TLS虚拟主机

和JASPIC1.1。

2018年,发布9.0版本,实现 Servlet 4.0 规范。

目前 Tomcat 已经更新到 10.0.x版本 , 但是目前企业中的Tomcat服务器, 主流版本是8.5 , 所以

本课程是基于 8.5 版本进行讲解。

好吧,这tomcat的发展历史,大家伙稍微看一下即可。

来吧,我们直接去tomcat官网下载一个tomcat服务器吧:下载地址

  • 点击下载即可。
  • 启动(解压下载下来的zip压缩包)
  • window下,直接双击startup.bat启动
  • bin/startup.bat
  • 复制代码
  • 停止
  • window下,shutdown.bat启动
  • bin/shutdown.bat
  • 复制代码

1.2 目录结构介绍

解压下,我们可以看下以下的目录结构:

对于这些目录结构,我们来做个说明:

目录目录下文件说明bin/存放Tomcat的启动、停止等批处理脚本文件startup.bat, startup.sh用于在windows和linux下的启动脚本shutdown.bat, shutdown.sh用于在windows和linux下的停止脚本conf/用于存放Tomcat的相关配置文件Catalina用于存储针对每个虚拟机的Context配置context.xml用于定义所有web应用均需加载的Context配置。

如果web应用指定了自己的context.xml ,该文件将被覆盖catalina.propertiesTomcat 的环境变量配置catalina.policyTomcat 运行的安全策略配置logging.propertiesTomcat 的日志配置文件, 可以通过该文件修改Tomcat 的日志级别及日志路径等server.xmlTomcat 服务器的核心配置文件tomcat-users.xml定义Tomcat默认的用户及角色映射信息配置web.xmlTomcat 中所有应用默认的部署描述文件,^ 主要定义了基础Servlet和MIME映射。lib/Tomcat 服务器的依赖包logs/Tomcat 默认的日志存放目录webapps/Tomcat 默认的Web应用部署目录work/Web 应用JSP代码生成和编译的临时目录

好了,以上就是tomcat的目录结构说明了。

那我们今天的主要是对tomcat的源码进行构建,这里我们使用idea工具进行tomcat源码构建。

1.3 Tomcat源码学习环境搭建

这里我们先下载好tomcat的源码,tomcat版本:8.5.81

1、源码下载

下载地址

2、源码idea工程搭建

搭建步骤:

  1. 解压源码zip压缩包

  1. 进入解压目录,并创建文件夹,命名为home 。 并将conf、webapps目录移入home 目录中

3.这里还需拷贝lib目录,到home文件夹里面

这里的lib目录,可以用上面我们下载好的tomcat服务器的lib文件夹

  1. 在当前目录下创建一个 pom.xml 文件,引入tomcat相关的依赖
  2. pom.xml
  3. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. 4.0.0
  6. org.apache.tomcat
  7. apache-tomcat-8.5.81-src
  8. Tomcat8.5
  9. 8.5
  10. Tomcat8.5
  11. java
  12. <directory>java</directory>
  13. <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <encoding>UTF-8</encoding> <source>1.8</source> <target>1.8</target> </configuration>
  14. junit
  15. junit
  16. 4.12
  17. test
  18. org.easymock
  19. easymock
  20. 3.4
  21. ant
  22. ant
  23. 1.7.0
  24. wsdl4j
  25. wsdl4j
  26. 1.6.2
  27. javax.xml
  28. jaxrpc
  29. 1.1
  30. org.eclipse.jdt.core.compiler
  31. ecj
  32. 4.5.1
  33. 复制代码
  34. 导入工程到idea

导入到idea中,并进行maven构建。

  1. 配置主函数启动类 ,并配置 VM 参数

复制代码

  1. 启动Tomcat 源码主方法, 运行访问

相关推荐

用Python轻松修改Word文件的作者和时间,打造自己的专属效率工具

你是否曾经遇到过需要批量修改Word文件的作者、创建时间或修改时间的情况?手动操作不仅费时费力,还容易出错。可以用Python编写一个小工具,轻松解决这个问题!无论你是编程新手还是有一定经验的...

插件开发js代码划分(js插件编写)

在开发Chrome插件时,将JavaScript代码拆分成多个模块而非集中放置,主要基于性能优化、可维护性提升和浏览器插件特性适配等多方面的考量。以下是具体原因及区别分析:一、拆分的核心原因...

5分钟掌握Python中的标准输入、标准输出、标准错误

读取用户输入从标准输入获取输入:user_input=input("Impartyourwisdom:")print(f"Youshared:{user_input}")...

高大上的解答:在 &#39;packages.pyi&#39; 中找不到引用 &#39;urllib3&#39;

DeepSeek的一句代码:...

Flask 入门教程(flask快速入门)

目录什么是Flask?环境配置与安装第一个Flask应用:HelloWorld路由与视图函数模板与Jinja2表单处理与用户输入...

每日一库之 Go 语言开发者的神器—Gotx

点击上方蓝色“Go语言中文网”关注我们,领全套Go资料,每天学习Go语言简介Gotx是一个Go语言(Golang)的解释器和运行环境,只有单个可执行文件,绿色、跨平台,无需安装任何Go语言环境就可...

MySQL性能调优工具包制作(mysql性能调整)

一、最终工具包内容mysql_tuning_toolkit/├──scripts/#核心脚本│├──sysbench-pro.sh#...

掌握TensorFlow核心用法:从安装到实战的完整指南

一、为什么TensorFlow值得学习?作为全球使用最广泛的开源机器学习框架,TensorFlow已累计获得超过17万GitHub星标,支撑着Google搜索、Waymo自动驾驶、NASA卫星图像分析...

如何把PY 打包成EXE安装文件(pypy 打包exe)

将Python脚本打包成EXE文件通常使用第三方工具实现,以下是详细步骤和注意事项:...

Pygame Zero 详细使用教程(python zerorpc)

PygameZero是一个基于Pygame的简化游戏开发框架,特别适合初学者和快速原型开发。它隐藏了许多底层的复杂性,使得开发者可以更专注于游戏逻辑的实现。本文将通过分析提供的代码,详细介绍如...

Stable diffusion AI画图辅助脚本 Script 的使用(二)

本篇为脚本使用介绍的第二部分,主要介绍Promptmatrix提示词矩阵以及UltimateSDUpscale终极SD放大这两个脚本,同时也简单介绍一下如何编写自己的脚本。1、Promp...

一文明白Python 的import如何工作

Pythonimport系统的基础知识Python的import系统是该语言设计的关键部分,允许模块化编程和代码的轻松重用。了解这个系统对任何Python程序员都很重要,因为它决定了代码的结构...

Highlight.js - 前端的代码语法高亮库

千辛万苦写了篇技术分享,贴了一堆代码,兴高采烈地发到了自己的博客网站上。结果却发现代码全是白底黑字,字体还难看得很,你瞬间就没了兴致。能不能让网页也能像IDE那样,做带语法高亮的炫酷显示呢?来看一...

xbox xsx/s ps2模拟器 战神12,北欧女神2 配置教程

xsxxss下载PS2独立模拟器,Retroarch全能模拟器地址。...

RetroArch 着色器、金手指怎么用? 重返复古游戏萤幕滤镜效果

自从上次分享RetroArch模拟器的一些技巧后,许多模拟器新用户对老旧游戏机感到好奇,为什么游戏画面看起来会有很多马赛克。这主要是因为当年的游戏开发商是针对当时的屏幕进行设计的,所以在现在的高分辨率...