当前位置: 首页 > article >正文

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.kler.cn/news/313953.html

相关文章:

  • Sui Builder House锦集,原生USDC和CCTP即将登陆Sui
  • 【HTTP】请求“报头”,Referer 和 Cookie
  • (CS231n课程笔记)深度学习之损失函数详解(SVM loss,Softmax,熵,交叉熵,KL散度)
  • 大批量查询方案简记(Mybatis流式查询)
  • Docker_启动redis,容易一启动就停掉
  • 使用Python实现深度学习模型:智能旅游路线规划
  • Base 社区见面会 | 新加坡站
  • 多层感知机paddle
  • 【nginx】搭配okhttp 配置反向代理
  • nvidia-docker Failed to initialize NVML: Unknown Error
  • 【漏洞复现】泛微OA E-Office jx2_config.ini 敏感信息泄漏漏洞
  • 在线查看 Android 系统源代码 Android Code Search
  • leetcode49字母异位词分组
  • 深度解析 MintRich 独特的价格曲线机制玩法
  • OpenGL 原生库5 变换
  • 从拥堵到畅通:HTTP/2 如何解决 Web 性能瓶颈?
  • 集合框架(一):Collection集合的遍历方式
  • Cypress初次安装启动常见问题
  • Element Plus 中Input输入框
  • JVM 内存管理详解
  • 宝塔面板FTP连接时“服务器发回了不可路由的地址。使用服务器地址代替。”
  • 共轭传热和浸没边界耦合相关的论文的阅读笔记
  • cesium效果不酷炫怎么办--增加渲染器
  • Redis五中数据类型的底层实现
  • nodejs+express+vue教辅课程辅助教学系统 43x2u前后端分离项目
  • mysql-死锁
  • EP16 自定义头部导航栏
  • ubuntu64位系统无法运行32位程序的解决办法
  • C++校招面经(二)
  • Sentinel组件学习