深入解析:Tomcat

news/2025/9/27 15:18:30/文章来源:https://www.cnblogs.com/slgkaifa/p/19115159

深入解析:Tomcat

Tomcat

一、Tomcat 服务器:核心解析

Tomcat 全称 Apache Tomcat,是由 Apache 软件基金会开发的开源 Java Web 服务器,核心定位是 Servlet/JSP 容器,是 Java Web 开发与轻量级部署的首选工具

1. 核心定位

  • 本质:轻量级 Java Web 应用服务器,同时也是 Servlet 容器(Servlet 是 Java 处理 Web 请求的核心组件)和 JSP 引擎(JSP 最终会编译为 Servlet 执行)
  • 角色:作为 “中间件”,连接客户端(浏览器)与 Java 后端程序,负责接收 HTTP 请求、调用对应的 Servlet/JSP 处理逻辑,最终将响应结果返回给客户端

2. 关键特性

3. 运行依赖

Tomcat 本身由 Java 开发,因此运行必须依赖 JDK(Java Development Kit)——JDK 提供了 Java 程序运行所需的虚拟机(JVM)和核心类库

注意:仅安装 JRE(Java Runtime Environment)不足以支持 Tomcat 运行,因为 Tomcat 启动过程中需要 JDK 的编译工具(如 javac)处理 JSP 编译

4. 与 Apache HTTP Server 的关系

很多初学者会混淆两者,核心区别与联系如下:

维度Apache HTTP ServerTomcat
语言基础C 语言开发Java 语言开发
核心功能处理静态资源(HTML、CSS、图片等)处理动态资源(Servlet、JSP、Java 逻辑)
依赖关系可独立运行,不依赖 Tomcat可独立运行,也可与 Apache 配合使用
配合场景当需要高效处理静态资源时,可让 Apache 接收所有请求,再将动态请求(如 .jsp/servlet/*)转发给 Tomcat 处理,提升整体性能

二、Java Web 中间件:分类与对比

“中间件” 是连接客户端与后端业务系统的桥梁,负责处理通信、负载均衡、事务管理等通用能力,降低开发复杂度。你提到的 Tomcat、JBoss 等均属于 Java Web 中间件,核心用于运行 Java Web 应用,按量级和功能可分为 “轻量级” 和 “企业级” 两类

1. 中间件核心分类对比

名称类型开发者 / 厂商核心特点适用场景
Tomcat轻量级Apache 软件基金会开源免费、轻量简单、专注 Servlet/JSP 容器,功能精简个人开发、中小型项目、开发调试、并发量较低的场景
Jetty轻量级Eclipse 基金会比 Tomcat 更轻量、启动更快、可嵌入式(如嵌入 Spring Boot 内置服务器)示例项目、嵌入式场景、轻量微服务
JBoss(WildFly)企业级Red Hat开源免费、支持完整 Java EE 规范(如 EJB、JMS),功能强大且可扩展中大型企业项目、需要分布式 / 事务支持的场景
WebLogic企业级(商业)Oracle闭源商业软件、支持全套 Java EE 规范、性能强、提供完善的监控 / 运维 / 集群能力大型商业项目、金融 / 电信等核心系统
WebSphere企业级(商业)IBM闭源商业软件、稳定性极强、适配 IBM 生态,支持高并发 / 高可用大型企业级应用、对稳定性要求极高的核心系统

2. 选型建议

  1. 个人学习 / 小型项目:优先选 Tomcat,配置简单、资料丰富,适配 90% 以上的轻量场景
  2. 微服务 / 嵌入式场景:选 Jetty 或 Spring Boot 内置的 Tomcat(默认),启动快、资源占用少
  3. 中大型开源项目:选 JBoss(WildFly),无需商业授权,同时满足分布式、事务等企业级需求
  4. 大型商业 / 核心系统:选 WebLogicWebSphere,虽需付费,但提供企业级技术支持、稳定性和安全性更有保障

案例:

部署tomcat:

关闭防火墙和selinux 略

配置本地yum仓库:

[root@server ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@server ~]# cd /etc/yum.repos.d/
[root@server yum.repos.d]# ls
sy.repo
[root@server yum.repos.d]# cat sy.repo
[aa]
name=aa1
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@server ~]# yum -y install java-11-openjdk

上传压缩包:

[root@server ~]# rz -E
rz waiting to receive.

解压tomcat到/usr/local/目录下:

[root@server ~]# tar -xzvf apache-tomcat-10.0.23.tar.gz -C /usr/local/
[root@server ~]# cd /usr/local/
[root@server local]# ln -s apache-tomcat-10.0.23/ tomcat
[root@server local]# ll
total 0
drwxr-xr-x  9 root root 220 Sep 24 16:26 apache-tomcat-10.0.23
drwxr-xr-x. 2 root root   6 Apr 11  2018 bin
drwxr-xr-x. 2 root root   6 Apr 11  2018 etc
drwxr-xr-x. 2 root root   6 Apr 11  2018 games
drwxr-xr-x  5 root root  42 Sep 23 20:28 haproxy
drwxr-xr-x. 2 root root   6 Apr 11  2018 include
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib
drwxr-xr-x. 2 root root   6 Apr 11  2018 lib64
drwxr-xr-x. 2 root root   6 Apr 11  2018 libexec
drwxr-xr-x. 2 root root   6 Apr 11  2018 sbin
drwxr-xr-x. 5 root root  49 Jul 23 11:29 share
drwxr-xr-x. 2 root root   6 Apr 11  2018 src
lrwxrwxrwx  1 root root  22 Sep 24 16:27 tomcat -> apache-tomcat-10.0.23/

自定义一个Hello World的 java的测试网页:

[root@server local]# mkdir /usr/local/tomcat/webapps/test
[root@server local]# cd /usr/local/tomcat/webapps/test
[root@server test]# vim index.jsptest page<%out.println("Hello World");%>~

启动tomcat:

[root@server ~]# cd /usr/local/tomcat/
[root@server tomcat]# bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

默认端口为8080

查看到有java和tomcat的进程,说明服务已经启动成功

[root@server tomcat]# ps -ef | grep tomcat
root      11068      1 12 16:42 pts/0    00:00:12 /usr/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root      11119  10275  0 16:43 pts/0    00:00:00 grep --color=auto tomcat

测试访问

访问tomcat首页:http://192.168.100.10:8080

在这里插入图片描述

访问hello world测试页:http://192.168.100.10:8080/test/

在这里插入图片描述

访问Host Manager界面:

配置tomcat-users.xml文件,在行上面添加两行,设置角色,登录用户名和密码,角色名称只能是admin-gui 用户名和密码自定义

[root@syf ~]# vim /usr/local/tomcat/conf/tomcat-users.xml

~

配置host-manager/META-INF/context.xml文件,允许192.168.100.0/24网段访问,在allow字段后添加:

[root@syf ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml


~

重启服务,先关服务,再启服务:

[root@syf ~]# /usr/local/tomcat/bin/catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@syf ~]# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

登录网页测试登录Host Manager 输入对应的用户名和密码

用户名为tomcat,密码为123456

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

访问Server Status

编辑tomcat-users.xml:

[root@syf ~]# vim /usr/local/tomcat/conf/tomcat-users.xml
-->


~

编辑manager/META-INF/context.xml,在allow字段添加允许192.168.100.0/24网段访问:

[root@syf ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
-->


~

重启服务,先关服务,再启服务:

[root@syf ~]# /usr/local/tomcat/bin/catalina.sh stop
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@syf ~]# /usr/local/tomcat/bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.

登录网页,访问Server Status,用户名tomcat 密码123456

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

访问Manager App的时候就不需要密码了,因为访问了Server Status界面,所以不用输入密码

在这里插入图片描述

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

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

相关文章

做类似淘宝网站怎么做专业3合1网站建设电话

前段时间&#xff0c;小灰发布了红黑树相关的文章&#xff0c;分成上下篇来讲解。这一次&#xff0c;小灰把两篇文章做了整合&#xff0c;并且修正了红黑树删除部分的图片错误&#xff0c;感谢大家的指正。————— 第二天 —————————————————二叉查找树&a…

消息队列Apache Kafka教程 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

长春专业网站建设公司排名2345官方网站

jQuery模态框弹窗提示代码 下载地址 jQuery模态框弹窗提示代码

9.21~9.27 周总结

分类 dp 当状态分为几类,而且降维时每一类要降的维不一样,我们可以对每一类分别开 dp,用不同的状态设计达到优化目的。 CF2143D2 Inversion Graph Coloring (Hard Version) - 洛谷 构造交换器 在序列转换问题(即给…

大中午记梦

应该是我第一次写记梦 果然唐人到了哪都是最唐的,无论是在梦里/jk (做梦内容与现实相关,此时现实中已经下午两点多了,并且机房外响起了装修声) 以下为梦境: 不知道在什么地方,但应该不是机房,应该不是厕所,也…

浙江省城乡建设厅网站网址申请域名

目录 一、所有主机初始化 二、135、136服务器&#xff0c;部署DNS调度服务器 1、更改主机主从DNS服务器的主机名称 2、安装bind软件、修改主配置文件 3、修改区域配置文件 4、修改数据文件 5、启动named服务、修改网卡信息 6、解析 7、双网卡的话记得注释以下内容、注…

网站建设这个职业备案网站首页地址

目录 依赖安装 下载编译libgeos 下载编译proj4 编译Postgresql9 编译PostGIS2 启动postgresql服务 开通外部网络访问 数据库开启PostGIS扩展 查看PostGIS版本 升级PostGIS版本 依赖安装 这个命令里面安装的包可能会多&#xff0c;由于是编译GreenPlum用的&#xff0…

软件项目网站建设实验报告专门做财经的网站

odoo16默认情况下每周都会发送一个“系统各功能状态日报”的邮件&#xff0c;而且是所有人都发&#xff0c; 这个功能在哪配置呢&#xff1f; 今天研究了一下&#xff0c; 线索是“系统各功能状态日报”&#xff0c;先全文检索吧 #. module: digest #: model:digest.digest,na…

计算机毕业设计springboot我国制氢产业专利检索系统的设计与实现 基于Spring Boot框架的中国制氢产业专利检索平台开发与设计 Spring Boot手艺驱动的中国制氢产业专利检索系统构建

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

9.21~9.27

分类 dp 当状态分为几类,而且降维时每一类要降的维不一样,我们可以对每一类分别开 dp,用不同的状态设计达到优化目的。 CF2143D2 Inversion Graph Coloring (Hard Version) - 洛谷 构造交换器 在序列转换问题(即给…

Jetbrains 全家桶激活码激活

本文介绍了JetBrains系列软件的激活方法:首先访问指定网站,选择可用链接下载压缩包并解压;运行install脚本后,从网站复制对应软件的激活码;最后在目标软件中粘贴激活码完成激活。已激活过JetBrains软件的用户只需…

Arbess从入门到实战(3) - 启用Arbess+GitLab实现Vue.js计划自动化部署

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

机关网站建设需求文档涪陵网站制作

文章目录 【Unity】终极移动指南-注解&#xff08;从移动、抓钩到贪吃蛇&#xff09;观前提醒链接地址&#xff1a; 内容一、 transform移动操作【1】transform.position变换位置【2】transform.Translate平移【3】transform.position 类似平移的操作【4】定向矢量【5】停在指定…

网站服务器内网打不开网页网站建设开场白

目录 一、创建项目二、first demo1、application.properties2、ChatController3、结果 三、个人思考 一、创建项目 官方文档的Getting Started 最低要求&#xff1a;JDK17 阿里云的Server URL&#xff08;https://start.aliyun.com/&#xff09;搜不到Spring AI&#xff0c;…

【深度学习计算机视觉】07:单发多框检测(SSD) - 指南

【深度学习计算机视觉】07:单发多框检测(SSD) - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

MZOI 2025.9.27

省流:改四个字符过一个题。 开题,T1 秒乐,T2 看上去码量巨大,T3T4 没思路。 开写,半个小时写完 T1,过了所有大样例。 开 T2,写写写,写写写,写写写,一个半小时写完过了所有大样例。 还剩两个半小时,优势在我…

Spring Framework 远程命令执行漏洞

Spring Framework简单介绍 Spring Frame为现代企业应用程序提供了一个全面和可配置的编程模型,开发者可以根据需要快速选择需要的模块。使用spring来管理应用程序,可以将开发者从基础框架中解脱出来,专注于业务逻辑…

配置本地环境以管理Git多账户SSH连接

生成SSH密钥打开终端。为第一个账户生成一个新的SSH密钥: ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 当提示你输入文件名时,指定一个独特名称,例如 id_rsa_account1。对于第二个(和随后每…

Pod、 PVC 、PV的刪除順序

先删除 Pod 再删除 PVC 最后删除 PV简单口诀:Pod -> PVC -> PV 为什么是这个顺序?深入理解删除机制 要理解这个顺序,你需要明白 Kubernetes 中这些资源之间的保护和依赖关系,尤其是 StorageClass 的 reclaim…