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.rhkb.cn/news/428812.html

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

相关文章

我的AI工具箱Tauri版-VideoDuplication视频素材去重

本教程基于自研的AI工具箱Tauri版进行VideoDuplication视频素材去重。 该项目是基于自研的AI工具箱Tauri版的视频素材去重工具,用于高效地处理和去除重复视频内容。用户可以通过搜索关键词"去重"或通过路径导航到"Python音频技术/视频tools"模…

Linux内核移植实战总结

直接参考【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81 本文仅作为个人笔记使用,方便进一步记录自己的实践总结。 前两章我们简单了解了一下 Linux 内核顶层 Makefile 和 Linux 内核的启动流程,本章我们就来学习一下如何将 NXP官方提供的 Linux 内核移…

电脑网络怎么弄动态ip :步骤详解与优势探讨

在当今的数字化时代,网络连接已成为我们日常生活和工作中不可或缺的一部分。对于大多数用户而言,动态IP地址是一种便捷且常用的网络配置方式,它允许设备在每次连接到网络时自动获取一个新的IP地址。这种设置不仅简化了网络管理,还…

Cypress安装与启动(开始学习记录)

一 Cypress安装 使用npm安装 1.查看node.js npm的版本,输入 npm --version 和 node --version,node.js没安装的可以去中文网下载最新稳定版安装,npm不建议升级到最新版本,会导致安装Cypress时Error: Cannot find module ansi-st…

一个基于 laravel 和 amis 开发的后台框架, 友好的组件使用体验,可轻松实现复杂页面(附源码)

前言 随着互联网应用的发展,后台管理系统的复杂度不断增加,对于开发者而言,既要系统的功能完备,又要追求开发效率的提升。然而,传统的开发方式往往会导致大量的重复劳动,尤其是在构建复杂的管理页面时。有…

MQ入门(4)

Erlang:面向高并发的 单机的吞吐量就是并发性:Rabbitmq是10w左右(现实项目中已经足够用了),RocketMQ是10w到20w,Kafka是100w左右。 公司里的并发(QPS) 大部分的公司每天的QPS大概…

Elionix 电子束曝光系统

Elionix 电子束曝光系统 - 上海纳腾仪器有限公司 -

【FreeRTOS】信号量

1.概念 当访问一个共享资源时,两个任务,并发访问出现不一致的问题,需要通过信号量解决 那么信号量是如何解决这个问题的呢? 任务量你可以认为是一把锁,一个任务拿到这个锁之后访问这个临界资源, 其他任务…

如何设计出一个比较全面的测试用例

目录 1. 测试用例的基本要素(不需要执行结果) 2. 测试用例的给我们带来的好处 3. 用例编写步骤 4. 设计测试用例的方法 4.1 基于需求进行测试用例的设计 4.2 具体的设计方法 1.等价类 2.边界值 3.判定表(因果图) 4.正交表法 5.场景设计法 6.错误猜测…

视频去噪技术分享

视频去噪是一种视频处理技术,旨在从视频帧中移除噪声和干扰,提高视频质量。噪声可能由多种因素引起,包括低光照条件、高ISO设置、传感器缺陷等。视频去噪对于提升视频内容的可视性和可用性至关重要,特别是在安全监控、医疗成像和视…

【MySQL】基础部分——DDL,DML,DQL,DCL,函数,约束,多表查询,事务

个人学习记录,供以后回顾和复习 ubuntu下安装使用1.DDL,DML,DQL,DCLDDL数据库表 DML增改删 DQL条件查询分组查询排序查询分页查询 DCL管理用户权限控制 2.函数字符串函数数值函数日期函数流程函数 3.约束4.多表查询多表关系内连接…

【Git必看系列】—— Git巨好用的神器之git stash篇

应用场景 当我们开发一个新功能时会先从master拉出一个分支dev,然后在这个dev分支下吭哧吭哧的开始写代码开发新功能,就如下代码所示,我们在dev分支下开发Person类的新功能getId() public class Person {private int id;private String nam…

零工市场小程序:推动零工市场建设

人力资源和社会保障部在2024年4月发布了标题为《地方推进零工市场建设经验做法》的文章。 零工市场小程序的功能 信息登记与发布 精准匹配、推送 在线沟通 权益保障 零工市场小程序作为一个找零工的渠道,在往后随着技术的发展和政策的支持下,功能必然…

C++——初步认识C++和namespace的用法

1.编程语言排行榜 我们通过排行可以看出 C在变成语言中还是占据着重要的地位 2.C在工作领域中的应用 1.PC客户端开发。⼀般是开发Windows上的桌面软件,比如WPS之类的,技术栈的话⼀般是C和 QT,QT 是⼀个跨平台的 C图形用户界面(G…

表格标记<table>

一.表格标记、 1table&#xff1a;表格标记 2.caption:表单标题标记 3.tr:表格行标记 4.td:表格中数据单元格标记 5.th:标题单元格 table标记是表格中最外层标记&#xff0c;tr表示表格中的行标记&#xff0c;一对<tr>表示表格中的一行&#xff0c;在<tr>中可…

Scrapy爬虫IP代理池:提升爬取效率与稳定性

在互联网时代&#xff0c;数据就是新的黄金。无论是企业还是个人&#xff0c;数据的获取和分析能力都显得尤为重要。而在众多数据获取手段中&#xff0c;使用爬虫技术无疑是一种高效且广泛应用的方法。然而&#xff0c;爬虫在实际操作中常常会遇到IP被封禁的问题。为了解决这个…

小程序构建npm失败

小程序构建npm失败 项目工程结构说明解决方法引入依赖导致的其他问题 今天在初始化后的小程序中引入TDesign组件库&#xff0c;构建npm时报错。 项目工程结构说明 初始化后的项目中&#xff0c;包含miniprogram文件夹和一些项目配置文件&#xff0c;在project.config.json文件中…

【TypeScript入坑】TypeScript 的复杂类型「Interface 接口、class类、Enum枚举、Generics泛型、类型断言」

TypeScript入坑 Interface 接口简介接口合并TS 强校验Interface 里支持方法的写入class 类应用接口接口之间互相继承接口定义函数interface 与 type 的异同小案例 class 类类的定义与继承类的访问类型构造器 constructor静态属性&#xff0c;Setter 和 Getter做个小案例抽象类 …

fiddler抓包06_抓取https请求(chrome)

课程大纲 首次安装Fiddler&#xff0c;抓https请求&#xff0c;除打开抓包功能&#xff08;F12&#xff09;还需要&#xff1a; ① Fiddler开启https抓包 ② Fiddler导出证书&#xff1b; ③ 浏览器导入证书。 否则&#xff0c;无法访问https网站&#xff08;如下图&#xff0…

(十五)、把自己的镜像推送到 DockerHub

文章目录 1、登录Docker Hub2、标记&#xff08;Tag&#xff09;镜像3、推送&#xff08;Push&#xff09;镜像4、查看镜像5、下载镜像6、设置镜像为公开或者私有 1、登录Docker Hub 需要科学上网 https://hub.docker.com/ 如果没有账户&#xff0c;需要先注册一个。登录命令如…