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

news2024/9/21 23:29:26

一、关于

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.coloradmin.cn/o/2153591.html

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

相关文章

Spring扩展点系列-MergedBeanDefinitionPostProcessor

文章目录 简介源码分析示例示例一:Spring中Autowire注解的依赖注入 简介 spring容器中Bean的生命周期内所有可扩展的点的调用顺序 扩展接口 实现接口ApplicationContextlnitializer initialize AbstractApplicationContext refreshe BeanDefinitionRegistryPos…

记录一个英语听力网站的开发

背景 在当前全球经济衰退的背景下,国内IT相关工作的竞争日益激烈。为了获得更多的职业机会,学习英语或许能为程序员打开一扇新的窗户。尤其是在国际化背景的远程工作中,英语协作沟通是必不可少的。 尽管我们大多数人从小到大都在学习英语&a…

使用Renesas R7FA8D1BH (Cortex®-M85)和微信小程序App数据传输

目录 概述 1 系统架构 1.1 系统结构 1.2 系统硬件框架结构 1.3 蓝牙模块介绍 2 微信小程序实现 2.1 UI介绍 2.2 代码实现 3 上位机功能实现 3.1 通信协议 3.2 系统测试 4 下位机功能实现 4.1 功能介绍 4.2 代码实现 4.3 源代码文件 5 测试 5.1 编译和下载代码…

RNN的反向传播

目录 1.RNN网络:通过时间反向传播(through time back propagate TTBP) 2.RNN梯度分析 2.1隐藏状态和输出 2.2正向传播: 2.3反向传播: 2.4问题瓶颈: 3.截断时间步分类: 4.截断策略比较 5.反向传播的细节 ​编辑…

大数据新视界 --大数据大厂之JavaScript在大数据前端展示中的精彩应用

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

浙大数据结构:05-树8 File Transfer

数据结构MOOC PTA习题 这道题考察并查集的操作&#xff0c;合并以及找根结点 机翻&#xff1a; 1、条件准备 node是数组存放1-N结点的根节点的&#xff0c;n为总结点数 #include <iostream> using namespace std;const int N 1e4 5; int node[N]; int n; 先初始化…

众数信科AI智能体政务服务解决方案——寻知智能笔录系统

政务服务解决方案 寻知智能笔录方案 融合民警口供录入与笔录生成需求 2分钟内生成笔录并提醒错漏 助办案人员二次询问 提升笔录质量和效率 寻知智能笔录系统 众数信科AI智能体 产品亮点 分析、理解行业知识和校验规则 AI实时提醒用户文书需注意部分 全文校验格式、内…

【在Linux世界中追寻伟大的One Piece】进程间关系与守护进程

目录 1 -> 进程组 1.1 -> 什么是进程组 1.2 -> 组长进程 2 -> 会话 2.1 -> 什么是会话 2.2 -> 如何创建会话 2.3 -> 会话ID(SID) 3 -> 控制终端 4 -> 作业控制 4.1 -> 什么是作业(job)和作业控制(Job Control) 4.2 -> 作业号 4.3…

Spring:项目中的统一异常处理和自定义异常

介绍异常的处理方式。在项目中&#xff0c;都会进行自定义异常&#xff0c;并且都是需要配合统一结果返回进行使用。 1.背景引入 &#xff08;1&#xff09;背景介绍 为什么要处理异常&#xff1f;如果不处理项目中的异常信息&#xff0c;前端访问我们后端就是显示访问失败的…

20240921在友善之臂的NanoPC-T6开发板上确认宸芯的数传模块CX6602N的AT命令

console:/dev # cat ttyUSB1 & console:/dev # echo AT > ttyUSB1 20240921在友善之臂的NanoPC-T6开发板上确认宸芯的数传模块CX6602N的AT命令 2024/9/21 21:03 【必须】Android12/Linux&#xff08;Buildroot&#xff09;都必须要&#xff01; 4、【Android12默认打开U…

电脑硬件-机械硬盘

简介 机械硬盘是电脑的主要存储媒介之一&#xff0c;通常用于存储一些文件资料或者学习视频笔记等比较大的内容。 结构 采用磁盘存储数据&#xff0c;使用温彻斯特的结构&#xff0c;特有四个特点&#xff1a; 1.磁头、盘片和运动机构安装在一个密封的腔体内。 2.盘片告诉旋…

一图快速看懂flink source的设计实现

文章目录 整体来说多个处理流程是解偶的&#xff0c;这样可以在面对多数据源情况下&#xff0c;能更加的灵活。 下面只展示了&#xff0c;主要的一些流程 下面补充一点&#xff0c;读取文件状态的保存&#xff0c;切分信息用了一个 ListState 来保存。具体要保存的信息&#x…

day2-1 app端文章查看

首先一共三张表 然后大致过程就是三层架构 用mp实现 具体出现的问题 1 测试的时候后端代码启动不了 先在maven clean一下 具体流程 然后执行完之后建议把这三个模块的target文件删除一下再运行 最后的话 如果还是报错 也是正常的 因为后边的东西都没写有些文件没有用到 2…

常见的中间件漏洞

Tomcat CVE-2017-12615 访问主页进行抓包 修改传参方式为put 放包进行连接 后台弱⼝令部署war包 访问主页试用默认账号密码tomcat/tomcat进行登录后 将哥斯拉生成的jsp木马文件压缩城成zip文件&#xff0c;然后再修改zip后缀文war 然后进行上传 使用哥斯拉进行测试连接 CVE-…

基于SpringBoot+Vue的在线酒店预订系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

微服务——网关登录校验(一)

1.网关登录校验 微服务中的网关登录校验是微服务架构中常见的一种安全机制&#xff0c;用于在请求到达微服务之前&#xff0c;对用户的身份进行验证&#xff0c;确保只有合法的用户才能访问相应的服务。 在微服务架构中&#xff0c;每个微服务都是独立部署的&#xff0c;它们之…

Apipost IDEA插件新升级,Apipost Helper上架IDEA插件市场

大家好&#xff01;今天向大家介绍一个非常方便的IDEA插件——Apipost Helper&#xff01;相信很多使用过Apipost的朋友在开发过程中都希望能够直接将编写好的API同步至Apipost&#xff0c;而无需手动填写。前段时间&#xff0c;Apipost推出了Apipost IDEA插件的内测版&#xf…

macOS平台编译libidn2库给iOS及macOS用

1.克隆源码: git clone https://gitlab.com/libidn/libidn2.git --recursive 2.安装依赖库: pkg-config也要安装 3.启动bootstrap生成configure 配置成功 configure生成成功

概率论与数理统计(2)

第一节博客已经整理了求导的公式&#xff0c;一些常用的概念。链接如下&#xff1a;高等数学基础&#xff08;1&#xff09;-CSDN博客。 第二节博客整理了微积分的公式及其相关概念。链接如下&#xff1a;高等数学基础&#xff08;2&#xff09;——微积分-CSDN博客 第三节博客…

主流卷积神经网络CNN总结

ResNet&#xff08;2015&#xff09;残差神经网络 残差结构 ResNet50具体卷积结构图 ResNeXt&#xff08;2016&#xff09;加入了分组卷积的思想&#xff0c;将原ResNet网络中的block替换成由group分组的block&#xff0c;两者得到的feature map一致&#xff0c;只是参数量更少…