Tomcat服务器—Windows下载配置详细教程

一、关于

1.1 简介

Tomcat是一个开源的Java Servlet容器和Web服务器,由Apache软件基金会维护。它实现了Java Servlet和JavaServer Pages (JSP) 规范,用于运行Java Web应用程序。Tomcat支持多种Java EE功能,并提供了高效的性能和可扩展性,适用于开发和部署Java基于Web的应用程序。

a11d77bc-302e-4d69-96d4-2094894cbedd

1.2 发展

Tomcat 最初是由 James Duncan Davidson 开发的一个小型项目,并在1998年捐赠给了 Apache 软件基金会。之后,它成为了独立的顶级项目。

  1. 初期阶段(1999年-2001年)
  • 1999年:Tomcat的初版本由Apache软件基金会发布,它是由Java Servlet 2.1和JSP 1.1规范支持的。Tomcat最初是由Apache和Sun Microsystems合作开发的,作为一个Servlet和JSP的参考实现。
  • 2000年:Tomcat 3.0发布,支持Servlet 2.2和JSP 1.1规范。这个版本标志着Tomcat作为一个独立的Servlet容器和Web服务器的初步稳定。
  1. 成熟阶段(2002年-2008年)
  • 2002年:Tomcat 4.0发布,支持Servlet 2.3和JSP 1.2规范。这个版本引入了对JMX(Java Management Extensions)的支持,改进了管理和监控功能。
  • 2004年:Tomcat 5.0发布,支持Servlet 2.4和JSP 2.0规范,显著提高了性能和稳定性。
  • 2006年:Tomcat 5.5发布,带来了许多改进,包括更好的性能和更强的兼容性。它支持Servlet 2.4和JSP 2.0规范。
  • 2007年:Tomcat 6.0发布,支持Servlet 2.5和JSP 2.1规范,引入了对Annotations(注解)的支持,简化了配置过程。
  1. 进一步改进(2009年-2018年)
  • 2009年:Tomcat 7.0发布,支持Servlet 3.0和JSP 2.2规范,改进了异步处理和其他新特性。
  • 2013年:Tomcat 8.0发布,支持Servlet 3.1和JSP 2.3规范,引入了对WebSocket的支持,并增强了对现代Web应用的支持。
  • 2016年:Tomcat 8.5发布,继续改进性能和兼容性,支持Servlet 3.1、JSP 2.3和EL 3.0规范。
  1. 现代阶段(2019年-现在)
  • 2019年:Tomcat 9.0发布,支持Servlet 4.0、JSP 2.3和EL 3.0规范,增强了对HTTP/2的支持,进一步改进了性能和安全性。
  • 2021年:Tomcat 10.0发布,支持Servlet 5.0、JSP 2.3和EL 3.0规范,标志着Tomcat对Jakarta EE的新命名空间的支持开始,这与Java EE的迁移有关。
  • 2022年:Tomcat 10.1发布,进一步完善和增强了对Jakarta EE的支持,提升了对现代Web应用的兼容性和性能。

Tomcat的不断发展和改进使它成为广泛使用的Java应用服务器之一,适用于各种规模的Web应用程序。

image

James Duncan Davidson(1970年7月29日出生于得克萨斯州的卢博克市)是美国的一个摄影师,曾经是一名软件工程师。他在担任Sun公司软件工程师期间(1997-2001),开发出了Java的web服务器Tomcat以及构建工具Ant。在2005到2006年间,Duncan开发的兴趣和注意力转向了Ruby on Rails。他和Rails领域的著名大师Mike Clark一起合作,Davidson设计及开发了一些相当复杂且健壮性佳的Rails应用。

2005年开始,Duncan把摄影作为了自己的副业。他现在是几个知名科技会议的首席摄影师。

他现在是波兰一个叫Luma Labs的小公司的联合创始人及所有者,专注于生产高质量的相机配件。

1.3 特点

Apache Tomcat 是一个开源的 Servlet 容器和 Web 服务器,它在 Java 开发社区中非常受欢迎。它的主要功能特点包括:

  1. Servlet 和 JSP 支持
  • Servlet 支持:Tomcat 支持 Java Servlet API,使开发者能够创建动态 Web 内容。Servlet 是 Java 编写的服务器端组件,用于处理请求和生成响应。
  • JSP 支持:Tomcat 支持 JavaServer Pages (JSP),允许开发者将 Java 代码嵌入到 HTML 中,简化了动态内容生成。
  1. 支持最新的 Java 标准
  • Servlet 和 JSP 规范:Tomcat 定期更新以支持最新版本的 Servlet 和 JSP 规范,例如 Servlet 4.0、JSP 2.3、Servlet 5.0 等。
  • Jakarta EE:Tomcat 10 及以上版本支持 Jakarta EE 标准,这些标准是 Java EE 的继任者。
  1. 高性能
  • 连接器:Tomcat 使用高效的连接器(如 NIO 和 APR),提高了请求处理的性能。
  • 异步处理:支持 Servlet 3.0 及以上规范中的异步处理功能,可以处理长时间运行的请求而不会阻塞服务器线程。
  1. 可扩展性和可配置性
  • 可配置性:Tomcat 提供了广泛的配置选项,允许开发者根据需要自定义其行为,例如通过 server.xml​ 和 web.xml​ 文件进行配置。
  • 插件和扩展:支持多种插件和扩展,允许用户根据需要扩展 Tomcat 的功能。
  1. 安全性
  • 用户认证和授权:支持标准的用户认证和授权机制,包括基于角色的访问控制。
  • 安全配置:提供多种安全配置选项,例如配置 HTTPS、设置安全策略等。
  1. 管理和监控
  • 管理界面:Tomcat 提供了一个基于 Web 的管理界面,用于管理和监控应用程序、配置和性能。
  • JMX 支持:通过 Java Management Extensions (JMX),Tomcat 提供了对服务器和应用程序的管理和监控功能。
  1. 高可用性
  • 集群支持:支持集群配置,可以实现负载均衡和高可用性,提高应用的可靠性和扩展性。
  • 会话复制:支持会话复制功能,可以在多个 Tomcat 实例之间复制会话数据,提高系统的容错能力。
  1. 易于集成
  • 与其他 Apache 项目集成:Tomcat 可以与其他 Apache 项目(如 Apache HTTP Server、Apache Maven 等)集成,形成更完整的解决方案。
  • 与 CI/CD 工具集成:可以与持续集成和持续部署(CI/CD)工具集成,支持自动化部署。
  1. 开源和社区支持
  • 开源:作为 Apache 软件基金会的项目,Tomcat 是开源的,任何人都可以免费使用、修改和分发。
  • 社区支持:拥有活跃的用户社区,提供支持、文档和资源,帮助解决问题和获取最新信息。

这些功能特点使得 Tomcat 成为一个灵活、强大且可靠的 Java 应用服务器,适用于各种规模的 Web 应用程序。

1.4 工作原理

Tomcat是一个流行的Java Servlet容器,它遵循Java Servlet规范来处理Web应用程序。以下是Tomcat的工作原理概述:

  1. 启动Tomcat服务器

    • 当Tomcat服务器启动时,它会初始化其核心组件,包括连接器(Connector)、请求处理器(Request Processor)、容器(Container)等。
  2. 监听端口

    • Tomcat通过连接器(Connector)监听HTTP请求。默认情况下,它监听8080端口,但这个端口号可以在server.xml​配置文件中修改。
  3. 接收请求

    • 当客户端(如Web浏览器)发送HTTP请求到Tomcat服务器时,连接器接收这个请求并将其传递给请求处理器。
  4. 请求处理

    • 请求处理器负责将请求分发到相应的Servlet或JSP页面。它首先通过请求的URL确定请求应该由哪个Web应用程序处理。
  5. Web应用程序上下文

    • Tomcat为每个部署的Web应用程序创建一个上下文(Context),它是一个容器,用于管理Web应用程序的生命周期和资源。
  6. Servlet和JSP处理

    • 对于Servlet请求,Tomcat会创建一个ServletRequest对象,并通过Servlet容器将请求传递给相应的Servlet实例。
    • 对于JSP页面,Tomcat会将JSP页面编译成Servlet,然后像处理普通Servlet一样处理它。
  7. 执行Servlet

    • Servlet通过覆盖doGet​、doPost​、doPut​、doDelete​等方法来处理不同类型的HTTP请求。Servlet可以读取请求参数、处理业务逻辑,并生成响应。
  8. 生成响应

    • 处理完请求后,Servlet会创建一个ServletResponse对象,并将生成的响应(如HTML页面、JSON数据等)写入响应对象。
  9. 发送响应

    • 请求处理器将ServletResponse对象传递回连接器,连接器将响应发送回客户端。
  10. 会话管理

    • Tomcat提供了会话管理功能,允许跨多个页面或请求保持用户状态。会话可以通过HTTP会话ID来标识。
  11. 安全性

    • Tomcat支持基于角色的访问控制和用户认证。它可以与外部认证服务器(如LDAP服务器)集成,以提供安全的访问控制。
  12. 日志记录

    • Tomcat可以记录请求处理的详细信息,包括访问日志、错误日志等,这对于调试和监控应用程序非常有用。
  13. 部署和卸载

    • Web应用程序可以通过将WAR文件放置在webapps​目录中自动部署,或者通过Tomcat的管理界面进行部署。应用程序也可以通过删除webapps​目录中的相应文件夹来卸载。
  14. 集群和负载均衡

    • Tomcat可以配置为集群模式,以支持负载均衡和高可用性。在集群模式下,多个Tomcat实例可以共享相同的Web应用程序,并分发请求。

Tomcat的工作原理体现了其作为Servlet容器的核心角色,它处理HTTP请求、管理Web应用程序的生命周期,并提供了一个平台,使得开发者可以构建和部署基于Java的Web应用程序。

二、下载启动

2.1 环境准备

Java环境是开发者必备的,对于Tomcat更是必需的,因此安装Tomcat前先做好准备工作。可以参考之前jdk安装配置文章。

2.2 下载

进入官网下载页面:https://tomcat.apache.org/

选择需要版本,这里以Tomcat9为例

image

image

image

Tomcat是绿色软件,直接解压就能使用!解压后如图,这就已经安装好了。

注意:Tomcat在解压缩的时候,解压所在的目录可以任意,但最好解压到一个不包含中文和空格的目录,因为后期在部署项目的时候,如果路径有中文或者空格可能会导致程序部署失败!(解压后最后将Tomcat文件夹重命名一下,使用原始名字配置环境变量容易出问题)

image

2.3 配置环境变量

右击“我的电脑” >> 选择“属性” >> 单击左侧栏 “高级系统设置” >>“高级”>>“环境变量”,如图:

image

新建CATALINA_HOME变量

变量名:CATALINA_HOME
变量值:D:\DProgram\apache-tomcat-9.0.95

image

配置path路径

%CATALINA_HOME%\bin

image

image

2.4 启动

双击bin目录下的startup.bat​,弹出如下窗口,表示Tomcat启动成功

image

image

不要关闭。打开浏览器在地址栏输入“localhost:8080​”或者“127.0.0.1:8080​”回车,出现Apache Tomcat主页说明Tomcat已经成功启动。

image

设置编码

上述启动页面乱码,因为在中国的Windows系统默认编码都是GBK​,而Tomcat默认编码是UTF-8​,导致乱码

image

image

修改后,就没有出现乱码了:

image

2.5 停止服务

  • 方法一:强制关闭
    直接叉掉运行窗口,缺点:数据容易丢失
  • 方法二:运行shutdown.bat​文件,正常关闭不会造成数据丢失,缺点:比较麻烦
  • 方法三Crtl+C​,正常关闭不会造成数据丢失,推荐使用

2.6 卸载

直接删除Tomcat文件夹即可,如果配置了环境变量,还要将环境变量进行删除

2.7 其他配置

修改默认端口

image

image

小知识:

  • 端口号的范围是:0~65535
  • HTTP协议默认的端口号是80​,如果将Tomcat的端口号改为80后,使用浏览器访问Tomcat就只需要输入localhost了

端口号被占,报错:

image

三、拓展—部署项目

直接将你的Web项目复制到webapps目录下,就部署完成了

image

然后启动Tomcat即可直接使用浏览器进行访问了(但是只能在你本机所在的局域网上进行访问,想要其他人都能访问需要获取域名,这个以后再详细学习)

image-20220802135616806

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/54522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为OD机试 - 分解正整数 - 数学推导(Python/JS/C/C++ 2024 D卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试真题(Python/JS/C/C)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,…

Redisson实现分布式锁(看门狗机制)

目录 可重入锁: 锁重试和看门狗机制: 主从一致性: 首先引入依赖,配置好信息 3.使用Redisson的分布式锁 可重入锁: 可重入锁实现是通过redsi中的hash实现的,key依旧是业务名称加id,然后第一个…

如何成立一家自己的等级保护测评机构?需要哪些条件?有哪些要求?

给大家的福利,点击下方蓝色字 即可免费领取↓↓↓ 🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 各省、自治区、直辖市公安厅、局网络安全保卫总队,新疆生产建设兵团公安局网络安…

【高分系列卫星简介——高分一号(GF-1)】

高分一号卫星(GF-1) 高分一号(GF-1)是中国高分辨率对地观测系统(简称“高分专项”)的第一颗卫星,具有里程碑式的意义。以下是对高分一号卫星的详细介绍: 一、基本信息 发射时间&…

2024华为杯研究生数学建模竞赛(研赛)选题建议+初步分析

提示&#xff1a;C君认为的难度&#xff1a;DE<C<F&#xff0c;开放度&#xff1a;CDE>F。 华为专项的题目&#xff08;A、B题&#xff09;暂不进行选题分析&#xff0c;不太建议大多数同学选择&#xff0c;对自己专业技能有很大自信的可以选择华为专项的题目。后续会…

MyBatis-config.xml核心配置

MyBatis-config.xml 包含了会深深影响MyBatis行为的设置和属性信息&#xff0c;配置文档的顶层结构如下 environments&#xff08;环境配置&#xff09; environments用于配置数据库的URL信息&#xff0c;MyBatis-config可以动态配置多个数据源&#xff0c;用于连生产、预发、…

用 HTML + JavaScript DIY 一个渐进式延迟法定退休年龄测算器

为减轻社会和个人因退休年龄变化带来的冲击&#xff0c;近日&#xff0c;全国人民代表大会常务委员会正式发布了关于实施渐进式延迟法定退休年龄的重要决定。 根据该决定&#xff0c;我国将同步启动对男、女职工法定退休年龄的延迟计划。这一调整将采取渐进式的方式进行&#…

RabbitMQ 高级特性——发送方确认

文章目录 前言发送方确认confirm 确认模式return 退回模式 常见面试题 前言 前面我们学习了 RabbitMQ 中交换机、队列和消息的持久化&#xff0c;这样能够保证存储在 RabbitMQ Broker 中的交换机和队列中的消息实现持久化&#xff0c;就算 RabbitMQ 服务发生了重启或者是宕机&…

Nginx实用篇:实现负载均衡、限流与动静分离

Nginx实用篇&#xff1a;实现负载均衡、限流与动静分离 | 原创作者/编辑&#xff1a;凯哥Java | 分类&#xff1a;Nginx学习系列教程 Nginx 作为一款高性能的 HTTP 服务器及反向代理解决方案&#xff0c;在互联网架构中扮演着至关重要的角色。它…

Acwing DFS

DFS&#xff1a;深度优先搜索 DFS与BFS的对比 DFS使用栈来实现&#xff0c;BFS使用队列来实现 DFS所需要的空间是 O ( h ) O(h) O(h),而BFS需要的空间是 O ( 2 h ) O(2^h) O(2h),其中h是树的高度&#xff1b; DFS不具有最短路的特性&#xff0c;BFS有最短路的特性 DFS回溯…

102.SAPUI5 sap.ndc.BarcodeScannerButton调用摄像头时,localhost访问正常,使用IP访问失败

目录 原因 解决办法 1.修改谷歌浏览器的setting 2.在tomcat中配置https访问 参考 使用SAPUI5的sap.ndc.BarcodeScannerButton调用摄像头时&#xff0c;localhost访问正常&#xff0c;使用IP访问时&#xff0c;一直打不开摄像头&#xff0c;提示getUserMedia()问题。 原因…

2024 “华为杯” 中国研究生数学建模竞赛(D题)深度剖析|大数据驱动的地理综合问题|数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题&#xff01; CS团队倾注了大量时间和心血&#xff0c;深入挖掘解…

elasticsearch同步mysql方案

文章目录 1、1. 使用数据库触发器2. 使用定时任务3. 监听MySQL二进制日志&#xff08;binlog&#xff09;4. 使用数据管道5. 使用第三方工具或服务6. 编写自定义脚本注意事项 2、1. 使用Logstash步骤&#xff1a;示例配置&#xff1a; 2. 使用Debezium步骤&#xff1a; 3. 自定…

828华为云征文 | 解锁企业级邮件服务,在华为云fFlexus x实例上部署Mailcow开源方案

前言 华为云Flexus X实例携手Mailcow开源邮件方案&#xff0c;为企业打造了一个既高效又安全的邮件服务解决方案。Flexus X实例的柔性算力与高性能&#xff0c;是这一方案的坚实基石。它提供CPU内存的灵活定义&#xff0c;以经济型价格实现旗舰级性能&#xff0c;确保邮件服务的…

云计算课程作业1

作业1 Xmanager连接 rhel连接 作业2 首先确认你的虚拟机设置的是NAT 1-3 然后打开这篇blog&#xff0c;并完成第一步和第二步 因为我们是NAT&#xff0c;所以不需要连接网桥&#xff0c;即跳过第三步&#xff0c;但是这里ping一下测试网络连接 2- 如果到这里你发现提示yum…

Stylized Smooth Clouds 卡通风格化云朵包

下载:​​Unity资源商店链接资源下载链接 效果图:

828华为云征文|Flexus X实例Docker+Jenkins+gitee实现CI/CD自动化部署-解放你的双手~

目录 前言 实验步骤 环境准备 安装Portainer 拉取镜像 更换镜像源 启动容器 安装jenkins 拉取镜像 获取管理员密码 新建流水线项目 Portainer配置 gitee配置WebHooks 构建 修改代码&#xff0c;自动部署 前言 &#x1f680; 828 B2B企业节特惠来袭&#xff0c;…

如何通过蜂巢(容器安全)管理内部部署数据安全产品与云数据安全产品?

本文将探讨内部部署和云数据安全产品之间的主要区别。在思考这个问题之前&#xff0c;首先了解内部部署和云数据安全产品之间的主要区别。 内部部署数据安全产品意味着管理控制台位于企业客户的内部部署&#xff0c;而德迅云安全则在云中托管云数据安全产品。德迅云安全供应商通…

gin集成jaeger中间件实现链路追踪

1. 背景 新业务线带来新项目启动&#xff0c;需要改进原有项目的基础框架和组件能力&#xff0c;以提升后续开发和维护效率。项目搭建主要包括技术选型、框架搭建、基础服务搭建等。这其中就涉及到链路追踪的内容&#xff0c;结合其中的踩坑情况&#xff0c;用一篇文章来说明完…

【第十三章:Sentosa_DSML社区版-机器学习聚类】

目录 【第十三章&#xff1a;Sentosa_DSML社区版-机器学习聚类】 13.1 KMeans聚类 13.2 二分KMeans聚类 13.3 高斯混合聚类 13.4 模糊C均值聚类 13.5 Canopy聚类 13.6 Canopy-KMeans聚类 13.7 文档主题生成模型聚类 13.8 谱聚类 【第十三章&#xff1a;Sentosa_DSML社…