目录
[1. 两大核心组件](#1. 两大核心组件)
[2. 请求处理全流程(从点餐到上菜)](#2. 请求处理全流程(从点餐到上菜))
[1. 线程池优化(增加服务员)](#1. 线程池优化(增加服务员))
[2. 虚拟主机配置(开分店)](#2. 虚拟主机配置(开分店))
[3. 安全加固(安装监控摄像头)](#3. 安全加固(安装监控摄像头))
一、Tomcat是什么?为什么需要它?
如果把一个Java网站比作一家餐厅,Tomcat就是负责接待客人、传递菜单、协调后厨的餐厅经理 。它本质上是一个Servlet容器,专门处理HTTP请求并生成动态响应。我们之所以需要Tomcat,是因为:
- 动态内容支持:普通HTML只能展示静态页面,而Tomcat能通过Java代码生成实时更新的内容(如用户登录状态、购物车数据)
- 高效请求处理:单台Tomcat服务器可支持数千并发请求,通过线程池管理实现资源复用
- 跨平台能力 :基于Java的特性,同一套代码可在Windows/Linux/Mac等系统运行
二、Tomcat的核心架构(餐厅运营图)
1. 两大核心组件
-
Connector(连接器)
相当于餐厅门口的接待员,负责:
- 监听8080端口(类似餐厅电话)
- 解析HTTP协议(听懂客人说的"英语、中文"等)
- 将请求转换为
Request
对象(把客人的点餐要求写成订单)
-
Container(容器)
相当于厨房里的总调度,包含四层结构:
- Engine:管理所有虚拟主机(分店)
- Host:对应不同域名(如http://www.主厨特餐.com)
- Context:单个Web应用(一道菜的完整菜谱)
- Wrapper:具体Servlet实例(切菜工、炒菜工等)
2. 请求处理全流程(从点餐到上菜)
- 客人(浏览器)拨打餐厅电话(发送HTTP请求到8080端口)
- 接待员(Connector)记录订单,交给厨房调度台(Engine)
- 调度台根据订单类型分派到对应分店(Host)和厨师(Servlet)
- 厨师(Servlet)烹饪完成后,服务员(Connector)送回菜品(HTTP响应)
https://via.placeholder.com/600x300?text=Tomcat+Request+Flow
三、手把手搭建第一个网站(厨房开张实录)
环境准备(采购食材)
-
下载JDK(Java开发工具包)
# Linux安装示例 sudo apt-get install openjdk-11-jdk
-
下载Tomcat 10(官网选择.tar.gz或.zip)
-
配置环境变量(告诉系统工具在哪里)
export CATALINA_HOME=/opt/tomcat export PATH=$PATH:$CATALINA_HOME/bin
创建网站(设计第一道菜)
-
在
webapps
目录新建myrestaurant
文件夹 -
创建标准结构:
myrestaurant/ ├── index.jsp # 菜单首页 └── WEB-INF/ ├── web.xml # 菜品配置表 └── classes/ # 厨师培训手册(Java类)
-
编写
index.jsp
(动态显示时间):<%@ page import="java.util.Date" %> <html> <body> <h1>今日特供:<%= new Date() %></h1> </body> </html>
启动服务(开业大吉)
# Windows
startup.bat
# Linux/Mac
./catalina.sh run
访问http://localhost:8080/myrestaurant
即可看到动态更新的时间
四、高级技巧(米其林餐厅的秘诀)
1. 线程池优化(增加服务员)
修改conf/server.xml
配置:
<Executor name="tomcatThreadPool"
maxThreads="200" <!-- 最多200服务员 -->
minSpareThreads="20"/> <!-- 常备20人待命 -->
2. 虚拟主机配置(开分店)
<Host name="branch.mydomain.com"
appBase="/data/tomcat_branch"
unpackWARs="true">
</Host>
3. 安全加固(安装监控摄像头)
-
禁用管理界面:删除
webapps
下的manager
和host-manager
-
配置SSL加密:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" keystoreFile="conf/keystore.jks" keystorePass="changeit"/>
五、常见问题排错(厨房急救指南)
现象 | 可能原因 | 解决方法 |
---|---|---|
404页面不存在 | 未部署WAR包 | 检查webapps 目录文件 |
500内部服务器错误 | JSP语法错误 | 查看logs/catalina.out 日志 |
无法启动 | 端口冲突(常见于8080) | `netstat -ano |