JavaWeb Tomcat基础

3 阅读16分钟

一、Web开发核心基础

1. JavaWeb定义

Java中动态web资源开发的技术统称为JavaWeb,Web应用编写完成后,必须部署到web服务器上,才能对外提供访问服务,服务器负责统一管理web资源、处理客户端请求并返回响应。

2. 主流Web开发技术对比

  • ASP:微软开发,允许在HTML中嵌入VBScript/JScript脚本,可与COM组件交互;缺点是代码与HTML混合,维护成本高,存在性能瓶颈。
  • PHP:开源脚本语言,简单易学、跨平台、开发速度快,适合中小型网站;缺点是高并发、大数据量处理时易出现性能瓶颈。
  • JSP/Servlet:基于Java语言,天生跨平台;Servlet负责处理请求、返回响应,JSP允许在HTML中嵌入Java代码,实现呈现逻辑与业务逻辑分离;优势是可承载高并发、高负载,配套开源组件丰富,是JavaWeb核心技术。

3. 两种核心架构模式

  • B/S(浏览器/服务器) :客户端通过Web浏览器与服务器交互,业务逻辑、数据处理集中在服务器端,客户端无需安装专用软件,部署和维护成本低。
  • C/S(客户端/服务器) :分为专用客户端软件和服务器两部分,性能好、交互体验丰富,但部署和维护成本较高。

二、Web服务器详解

1. 服务器核心作用

Web服务器是被动操作的软件,核心功能是接收客户端的HTTP请求,处理请求(如解析请求参数、调用对应资源),最终返回响应信息(页面、数据等)。

2. 主流Web服务器软件

  • IIS:微软开发,仅适用于Windows系统,支持ASP、ASP.NET等技术,与Windows系统紧密集成,配置管理便捷。
  • Tomcat:Apache软件基金会jakarta项目,开源免费,是轻量级Web应用服务器,也是开发、调试JSP/Servlet的首选;适合中小型系统、并发用户量适中的业务,技术先进、性能稳定,率先支持最新的Servlet和JSP规范。

3. Tomcat核心细节

  • 关键目录:work目录(存放Tomcat编译JSP文件生成的Servlet类和临时文件)、webapps目录(默认Web应用部署目录,放入WAR包可自动解压部署)。
  • 核心配置文件:conf/server.xml(用于配置端口、主机等核心参数)。

4. Tomcat各文件夹功能详解(视频重点)

Tomcat解压后包含7个核心文件夹,每个文件夹各司其职,是Tomcat正常运行和Web应用部署的基础,具体功能如下:

  • bin 文件夹:核心执行脚本目录,存放Tomcat启动、关闭及相关辅助脚本,是操作Tomcat服务的入口。 Windows系统:startup.bat(启动Tomcat)、shutdown.bat(关闭Tomcat)、catalina.bat(核心运行脚本)。
  • Linux/Mac系统:startup.sh(启动)、shutdown.sh(关闭)、catalina.sh(核心运行脚本)。
  • 注意:双击启动脚本一闪而过,大概率是未配置JDK的JAVA_HOME环境变量。
  • conf 文件夹:Tomcat全局配置目录,存放所有核心配置文件,修改此目录文件需谨慎,直接影响Tomcat运行。 server.xml:最核心的配置文件,配置端口、主机、连接器、引擎等全局参数(如端口修改、虚拟主机配置均在此文件)。
  • web.xml:Web应用的默认配置文件,定义MIME类型、默认Servlet、会话超时时间等,所有Web应用都会继承此配置。
  • tomcat-users.xml:Tomcat用户权限配置文件,用于配置管理端(如应用管理、虚拟主机管理)的登录用户名、密码和角色。
  • context.xml:所有Web应用的公共上下文配置文件,可配置数据库连接池等全局资源。
  • lib 文件夹:Tomcat运行依赖的类库目录,存放所有必需的jar包,无需额外配置,Tomcat会自动加载此目录下的jar包。 包含Servlet、JSP核心规范jar包(如javax.servlet-api.jar)、Tomcat自身运行依赖jar包。
  • 所有部署在Tomcat上的Web应用,均可共享此目录下的jar包,无需在每个Web应用中重复引入。
  • logs 文件夹:Tomcat日志存储目录,记录Tomcat启动、运行、错误及客户端访问等所有信息,是排查问题的核心依据。 catalina.out:主日志文件,记录Tomcat启动过程、运行中的异常信息,是最常用的日志文件。
  • localhost.log:本地主机访问日志,记录localhost域名相关的请求和运行信息。
  • access_log.*.txt:客户端访问日志,记录所有客户端的HTTP请求(如请求地址、请求时间、客户端IP等)。
  • temp 文件夹:Tomcat运行时的临时文件目录,由Tomcat自动创建和管理,用于存储运行过程中产生的临时数据(如文件上传临时文件)。 临时文件可随时手动删除,不会影响Tomcat正常运行,重启Tomcat后会自动重建此目录。
  • webapps 文件夹:Tomcat默认的Web应用部署目录,是最常用的应用部署路径,支持两种部署形式。 文件夹部署:将Web应用打包后的文件夹直接复制到此目录,Tomcat会自动识别并部署。
  • WAR包部署:将Web应用打包为WAR格式文件,复制到此目录后,Tomcat会自动解压并部署。
  • 默认自带应用:ROOT(根应用,访问http://localhost:8080直接进入)、examples(示例程序)、manager(应用管理端)。
  • work 文件夹:Tomcat的工作目录,专门用于存放JSP编译后生成的文件,是JSP运行的核心目录。 JSP首次被访问时,Tomcat会将其编译为Servlet源文件(.java),再编译为字节码文件(.class),并存储在此目录。
  • 若修改JSP文件后不生效,可删除此目录下对应的文件,Tomcat会重新编译JSP。
  • 重启Tomcat后,此目录下的文件会被重新生成,删除不影响Web应用的核心代码。

三、Tomcat基础配置(核心重点)

1. 端口配置

配置标签为<Connector>,默认HTTP端口为8080,HTTPS重定向端口为8443,可修改为未被占用的端口。

核心配置示例:

<Connector port="8081" protocol="HTTP/1.1"
 connectionTimeout="20000"
 redirectPort="8443" />

关键参数说明:

  • port:服务器监听的端口号
  • protocol:使用的网络协议,默认HTTP/1.1
  • connectionTimeout:连接超时时间,单位为毫秒
  • redirectPort:HTTPS重定向端口

2. 常见默认端口对照(必记)

  • Tomcat HTTP端口:8080
  • MySQL数据库端口:3306
  • 通用HTTP端口:80(浏览器访问可省略端口号)
  • 通用HTTPS端口:443(浏览器访问可省略端口号)

3. 主机与虚拟主机配置

默认主机名为localhost,映射本地IP 127.0.0.1;虚拟主机通过<Host>标签配置,可实现不同域名映射到不同Web应用。

核心配置示例:

<Host name="www.qinjiang.com" appBase="webapps"
 unpackWARs="true" autoDeploy="true">

关键参数说明:

  • name:虚拟主机名(域名)
  • appBase:Web应用存放的基础目录
  • unpackWARs:是否自动解压部署WAR包
  • autoDeploy:是否开启自动部署功能

JavaWeb:Tomcat详解

一、Tomcat 核心定位

Tomcat 是 Apache 软件基金会 Jakarta 项目下的开源免费轻量级 Web 应用服务器,核心作为 Servlet/JSP 容器,是 JavaWeb 开发、调试的首选服务器,适配中小型系统及并发访问量适中的业务场景,率先支持最新的 Servlet 和 JSP 规范,同时兼具 Web 服务器的基础功能,可直接处理静态资源请求。

二、Tomcat 下载与安装

1. 下载渠道

Apache 官方网站(tomcat.apache.org/),根据自身操作系统(Windows/Linux/Mac)选择对应版本,推荐下载 8.x、9.x 等稳定版本,适配主流 JDK 版本。

2. 安装前提

必须提前配置JDK 的 JAVA_HOME 环境变量,Tomcat 运行完全依赖 JDK,未配置或配置错误会导致启动失败。

3. 安装方式

采用绿色版解压安装,无需复杂的安装步骤,将下载的压缩包解压到无中文、无空格的目录下即可使用,解压后直接进入 bin 目录即可执行启动 / 关闭操作,适合开发环境快速部署。

三、Tomcat 核心目录结构及功能详解

Tomcat 解压后包含 7 个核心文件夹,各文件夹各司其职,是 Tomcat 正常运行和 Web 应用部署的基础,具体功能及核心文件如下:

1. bin 文件夹

  • 核心作用:Tomcat 的执行脚本目录,存放启动、关闭及核心运行脚本,是操作 Tomcat 服务的唯一入口。

  • 跨平台脚本:

    • Windows 系统:startup.bat(启动 Tomcat)、shutdown.bat(关闭 Tomcat)、catalina.bat(底层核心运行脚本,startup/shutdown 均调用此脚本)。
    • Linux/Mac 系统:startup.sh(启动)、shutdown.sh(关闭)、catalina.sh(底层核心运行脚本)。
  • 关键问题:双击启动脚本后窗口一闪而过,大概率是未配置 JAVA_HOME 环境变量或配置路径错误。

2. conf 文件夹

  • 核心作用:Tomcat 的全局配置目录,存放所有核心配置文件,修改此目录下的文件会直接影响 Tomcat 整体运行,操作需谨慎。

  • 核心配置文件:

    • server.xml:Tomcat 最核心的配置文件,配置端口、主机、连接器、引擎等全局核心参数,如端口修改、虚拟主机配置均在此文件完成。
    • web.xml:Web 应用的默认配置文件,定义 MIME 类型、默认 Servlet、会话超时时间等,所有部署在 Tomcat 上的 Web 应用都会继承此文件的配置。
    • tomcat-users.xml:Tomcat 用户权限配置文件,用于配置管理端(应用管理、虚拟主机管理)的登录用户名、密码及对应角色(如 manager-gui、admin-gui)。
    • context.xml:所有 Web 应用的公共上下文配置文件,可配置数据库连接池、全局资源等,所有应用共享此配置。

3. lib 文件夹

  • 核心作用:Tomcat 的类库依赖目录,存放 Tomcat 运行所需的所有 Java 类库(jar 包),Tomcat 启动时会自动加载此目录下的所有 jar 包,无需额外配置。
  • 包含内容:Servlet、JSP 核心规范 jar 包(如 javax.servlet-api.jar)、Tomcat 自身运行的依赖 jar 包。
  • 核心优势:所有部署在 Tomcat 上的 Web 应用,均可共享此目录下的 jar 包,无需在每个 Web 应用中重复引入,减少项目体积。

4. logs 文件夹

  • 核心作用:Tomcat 的日志存储目录,记录 Tomcat 启动、运行、错误及客户端访问的所有信息,是排查 Tomcat 运行问题、分析请求情况的核心依据。

  • 核心日志文件:

    • catalina.out:Tomcat 主日志文件,记录启动过程、运行中的异常信息、控制台输出内容,是日常排查问题最常用的日志文件。
    • localhost.log:本地主机访问日志,记录与localhost域名相关的请求和 Tomcat 运行信息。
    • access_log.*.txt:客户端访问日志,按时间分割,记录所有客户端的 HTTP 请求详情,如请求地址、请求时间、客户端 IP、请求状态码等。

5. temp 文件夹

  • 核心作用:Tomcat 的临时文件目录,由 Tomcat 自动创建和管理,用于存储运行过程中产生的临时数据,如文件上传的临时文件、运行时的临时缓存数据等。
  • 关键特性:临时文件可随时手动删除,不会影响 Tomcat 的正常运行;重启 Tomcat 后,此目录会被自动重建,无需手动创建。

6. webapps 文件夹

  • 核心作用:Tomcat默认的 Web 应用部署目录,是开发中最常用的应用部署路径,Tomcat 会自动检测此目录下的应用并完成部署。

  • 支持的部署形式:

    • 文件夹部署:将 Web 应用的工程文件夹直接复制到此目录,Tomcat 会自动识别并完成部署。
    • WAR 包部署:将 Web 应用打包为 WAR 格式的压缩文件,复制到此目录后,Tomcat 会自动解压并完成部署。
  • 默认自带应用:

    • ROOT:根应用,访问http://localhost:8080时直接进入此应用,是 Tomcat 的默认欢迎页。
    • examples:Tomcat 官方提供的示例程序,包含 Servlet、JSP 的基础使用案例,可参考学习。
    • manager:Tomcat 的应用管理端,可在线完成应用的部署、卸载、启动、停止等操作。

7. work 文件夹

  • 核心作用:Tomcat 的工作目录,专门用于存放 JSP 编译后生成的文件,是 JSP 能够运行的核心目录。
  • JSP 编译流程:JSP 首次被客户端访问时,Tomcat 会先将其编译为 Servlet 源文件(.java),再将源文件编译为字节码文件(.class),并将这两类文件统一存储在此目录。
  • 实用技巧:若修改 JSP 文件后,浏览器访问无效果,可删除此目录下对应的文件,Tomcat 会在下次访问时重新编译 JSP;重启 Tomcat 后,此目录下的文件会被重新生成,删除不影响 Web 应用的核心代码。

四、Tomcat 的启动与关闭

1. 启动操作

  1. 进入 Tomcat 解压目录下的bin文件夹;
  2. 执行对应系统的启动脚本(Windows 双击startup.bat,Linux/Mac 执行./startup.sh);
  3. 启动成功标识:控制台无报错信息,最后一行出现「Server startup in XXX ms」字样;
  4. 验证启动:打开浏览器,输入http://localhost:8080,能看到 Tomcat 的默认欢迎页,即表示启动成功。

2. 关闭操作

正常关闭(推荐)
  1. 进入 Tomcat 的bin文件夹;
  2. 执行对应系统的关闭脚本(Windows 双击shutdown.bat,Linux/Mac 执行./shutdown.sh);
  3. 关闭成功标识:控制台出现「Server shutdown in XXX ms」字样。
强制关闭(不推荐)

直接关闭 Tomcat 的启动控制台窗口,此方式可能导致服务器资源未释放、文件损坏,仅适用于紧急情况。

3. 启动常见问题及解决方案

  1. 问题:双击startup.bat后窗口一闪而过 解决方案:检查 JDK 的 JAVA_HOME 环境变量是否配置,确保配置路径正确且无中文、无空格。
  2. 问题:启动报错「Address already in use」 解决方案:8080 端口被其他程序占用,可修改conf/server.xml中的端口号,或通过命令关闭占用端口的程序。
  3. 问题:浏览器输入http://localhost:8080无法访问 Tomcat 首页 解决方案:检查 Tomcat 是否启动成功;检查电脑防火墙是否拦截了 Tomcat 端口;核对访问地址的端口号是否正确。

五、Tomcat 管理端使用

1. 管理端地址

  • 应用管理端:http://localhost:8080/manager/html,用于在线管理 Web 应用(部署、卸载、启动、停止)。
  • 虚拟主机管理端:http://localhost:8080/host-manager/html,用于配置和管理 Tomcat 的虚拟主机。

2. 登录授权配置

默认情况下,Tomcat 未配置管理端用户,需手动在conf/tomcat-users.xml中配置具有对应权限的用户,核心配置示例:

<user username="admin" password="123456" roles="manager-gui,admin-gui"/>

配置后需重启 Tomcat,才能使用配置的用户名和密码登录管理端。

3. 核心功能

  • 在线部署 / 卸载 Web 应用,支持上传 WAR 包快速部署;
  • 手动启动 / 停止已部署的 Web 应用,方便调试;
  • 查看所有应用的运行状态、访问路径、占用资源等信息;
  • 查看 Tomcat 的服务器版本、JDK 版本、内存使用情况等系统信息。

六、Tomcat 部署 Web 应用的三种方式

1. 直接部署到 webapps 目录(开发环境最常用)

  1. 将 Web 应用的文件夹或 WAR 包直接复制到 Tomcat 的webapps目录;
  2. Tomcat 会自动检测到新的应用,完成解压(WAR 包)和部署;
  3. 访问路径:http://localhost:8080/应用名/资源名
  4. 根应用部署:将应用命名为ROOT(大小写敏感),部署后访问路径为http://localhost:8080/资源名,无需输入应用名。

2. 配置 server.xml 文件部署

  1. 打开conf/server.xml文件,在<Host>标签内添加<Context>标签;
  2. 核心配置示例:
<Context path="/myapp" docBase="D:/myapp" debug="0" reloadable="true"/>
  1. 参数说明:

    1. path:应用的访问路径,如配置为/myapp,则访问地址为http://localhost:8080/myapp
    2. docBase:应用在本地磁盘的真实路径,可配置为绝对路径;
    3. reloadable:是否开启自动重载,开发环境设为true(修改代码后无需重启 Tomcat),生产环境设为false(提升服务器性能)。
  2. 配置后需重启 Tomcat,应用才能生效。

3. 创建独立 xml 配置文件部署(生产环境推荐)

  1. 进入 Tomcat 的conf/Catalina/localhost目录;
  2. 创建一个以应用名.xml命名的配置文件(文件名即为访问路径,大小写敏感);
  3. 在文件内编写<Context>标签,配置应用的本地路径,核心示例:
<Context docBase="D:/myapp" debug="0" reloadable="false"/>
  1. 核心优势:无需修改server.xml全局配置文件,避免全局配置出错;每个应用的配置文件独立,便于管理和维护;配置后无需重启 Tomcat,Tomcat 会自动检测并部署。

七、Tomcat 基础配置优化

针对开发环境和生产环境的不同需求,可对 Tomcat 进行基础配置优化,提升开发效率或服务器性能:

  1. 自动重载优化:开发环境将<Context>标签的reloadable设为true,修改 Web 应用代码后无需重启 Tomcat,服务器会自动加载新代码;生产环境设为false,减少服务器资源消耗,提升运行性能。
  2. 端口优化:若需让浏览器直接访问(无需输入端口号),可将conf/server.xml<Connector>标签的port改为 80(浏览器默认的 HTTP 端口)。
  3. 字符编码优化:在<Connector>标签中添加URIEncoding="UTF-8",解决 GET 请求的中文乱码问题,配置示例:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
  1. 日志优化:修改conf/logging.properties文件,可配置日志级别(如 INFO、ERROR)、日志输出格式、日志保存路径和保留时间,便于日志管理和问题排查。

八、Tomcat 核心运行原理

  1. Tomcat 本质是Servlet 容器,同时兼具 Web 服务器的功能,可直接处理静态资源(HTML/CSS/JS/ 图片)请求,对于动态的 Servlet/JSP 请求,会交给内部的 Servlet 容器处理。
  2. 整体请求处理流程: 客户端发送 HTTP 请求 → Tomcat 的 Connector 连接器接收请求 → 根据请求路径匹配对应的 Web 应用 → 静态资源请求由 Tomcat 直接处理并返回响应 → 动态 Servlet/JSP 请求交给 Servlet 容器处理 → Servlet/JSP 执行后生成 HTML 响应 → Connector 将响应返回给客户端。
  3. JSP 的特殊处理流程: 客户端请求 JSP 文件 → Tomcat 检测到 JSP 未编译 → 将 JSP 编译为 Servlet 源文件(.java)→ 编译为字节码文件(.class)并存储在 work 目录 → Servlet 容器实例化并执行该 Servlet → 生成 HTML 响应返回给客户端 → 后续请求直接调用已编译的 class 文件,无需重复编译。