Servlet 与 Tomcat 白话全解析:从核心原理到实战部署

Servlet 和 Tomcat 是 Java Web 开发的 "黄金搭档"------Servlet 是处理网页请求的 Java 程序核心,Tomcat 是运行 Servlet 的服务器,二者配合才能让 Java 写的网页能被浏览器访问。下面用通俗的方式讲清它们的关系、核心用法和实战要点:

一、先搞懂:Servlet 是啥?Tomcat 又是啥?

1. Servlet:Java 写的 "网页请求处理员"

你可以把 Servlet 理解成 "专门处理浏览器请求的 Java 类"。比如用户在浏览器输入网址、点击按钮提交表单,这些请求不会直接找数据库,而是先交给 Servlet:

  • 它接收浏览器的请求数据(比如登录的账号密码);
  • 调用 Java 业务代码(比如验证账号、查数据库);
  • 生成响应内容(比如登录成功 / 失败的页面),再返回给浏览器。

Servlet 本身不是独立运行的程序,它需要 "容器" 来托管 ------ 这个容器就是 Tomcat(也叫 Servlet 容器),没有 Tomcat,Servlet 就是一堆没法执行的代码。

2. Tomcat:运行 Servlet 的 "服务器管家"

Tomcat 是 Apache 基金会的开源轻量级服务器,核心作用就是 "伺候" Servlet:

  • 监听电脑的端口(默认 8080),接收浏览器发来的请求;
  • 把请求转交给对应的 Servlet 处理;
  • 把 Servlet 的处理结果返回给浏览器;
  • 还能管理 Servlet 的生命周期(创建、运行、销毁),不用开发者手动管。

简单说:Servlet 是 "办事的人",Tomcat 是 "给人提供办公场地和对接外部的管家"。

二、Servlet 的核心工作流程(白话版)

  1. 浏览器输入网址(比如 http://localhost:8080/MyWeb/LoginServlet),向 Tomcat 发请求;
  2. Tomcat 解析网址,找到对应的 Servlet 类(比如 LoginServlet);
  3. Tomcat 实例化这个 Servlet,调用它的 service() 方法(核心方法);
  4. Servlet 在 service() 里处理请求:比如获取账号密码,调用工具类查数据库;
  5. Servlet 生成响应内容(比如 HTML 页面、JSON 数据),通过 response 对象传给 Tomcat;
  6. Tomcat 把响应内容转成浏览器能识别的格式,返回给用户。

三、Tomcat 怎么 "管理" Servlet?

1. Tomcat 的核心目录(新手必认)

下载安装 Tomcat 后,关键目录要分清:

目录名 作用
bin 启动 / 关闭 Tomcat 的脚本(windows 点 startup.bat,linux 点 startup.sh
webapps 存放 Java Web 项目的地方(把写好的项目包扔这,Tomcat 启动后就能访问)
conf 配置文件目录(比如改端口、设置用户权限,改 server.xml 就行)
logs 日志文件(项目运行报错了,看这里的日志找问题)
webapps/ROOT 默认访问目录(直接输 localhost:8080 就访问这里的页面)

2. Servlet 注册与访问(实战关键)

早期写 Servlet 要在 web.xml 里注册(告诉 Tomcat 哪个网址对应哪个 Servlet),现在用注解更简单:

步骤 1:写一个 Servlet 类

java

运行

复制代码
// 注解:告诉 Tomcat,访问 /hello 就找这个 Servlet
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    // 处理 GET 请求(浏览器直接访问就是 GET)
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 设置响应的编码,避免中文乱码
        resp.setContentType("text/html;charset=utf-8");
        // 向浏览器输出内容
        resp.getWriter().write("你好,这是 Servlet 处理的响应!");
    }
}
步骤 2:打包部署到 Tomcat
  • 把写好的 Servlet 项目打成 WAR 包(Java Web 项目的标准包);
  • 把 WAR 包复制到 Tomcat 的 webapps 目录;
  • 启动 Tomcat(双击 bin/startup.bat);
  • 浏览器输入 http://localhost:8080/项目名/hello,就能看到 Servlet 输出的内容。

四、Servlet 与 Tomcat 的核心知识点(避坑关键)

1. Servlet 的生命周期(Tomcat 说了算)

  • 初始化 :第一次访问 Servlet 时,Tomcat 调用 init() 方法(只执行一次);
  • 处理请求 :每次访问都调用 service() 方法(实际执行的是 doGet/doPost);
  • 销毁 :Tomcat 关闭时,调用 destroy() 方法(释放资源)。

2. 常见坑点与解决

  • 端口被占用 :Tomcat 默认 8080 端口,若提示 "8080 被占用",改 conf/server.xml 里的 <Connector port="8081" ...> 换端口;

  • 中文乱码 :必须同时设置请求和响应编码:

    java

    运行

    复制代码
    // 请求编码(处理前端传过来的中文)
    req.setCharacterEncoding("utf-8");
    // 响应编码(返回给浏览器的中文)
    resp.setContentType("text/html;charset=utf-8");
  • 404 错误:要么网址输错,要么项目没放对 webapps 目录,要么 Servlet 注解的路径写错;

  • 500 错误:Servlet 代码报错(比如空指针),看 Tomcat 的 logs 目录下的 catalina.out 日志找问题。

3. Tomcat 启动与关闭

  • 启动 :Windows 双击 bin/startup.bat,Linux 执行 ./startup.sh
  • 关闭 :Windows 双击 bin/shutdown.bat,Linux 执行 ./shutdown.sh
  • 启动后能访问 http://localhost:8080 看到 Tomcat 首页,说明启动成功。

五、总结

Servlet 是 Java Web 处理请求的核心逻辑载体,Tomcat 是运行 Servlet 的容器和服务器,二者缺一不可:

  • 写 Servlet 就是写处理请求的 Java 类,重点重写 doGet/doPost 处理不同请求;
  • 用 Tomcat 部署 Servlet 项目,核心是把 WAR 包放 webapps,启动后通过端口访问;
  • 新手先搞定 "写简单 Servlet + 部署到 Tomcat + 解决乱码 / 404",再深入学习会话管理、过滤器等进阶内容。
相关推荐
Spider Cat 蜘蛛猫2 小时前
`mapper-locations` 和 `@MapperScan`区别
java·spring·maven
BD_Marathon2 小时前
【JavaWeb】Tomcat_简介
java·tomcat
⑩-2 小时前
Java-元注解 (Meta-Annotations)
java
Meteors.2 小时前
安卓进阶——原理机制
android·java·开发语言
是阿漂啊2 小时前
vscode运行springboot项目
java·spring boot·后端
ghfdgbg2 小时前
13. 配置优先级 + Bean的管理 + SpringBoot核心原理
java·spring boot·后端
Moe4882 小时前
Elasticsearch 8.1 Java API Client 客户端使用指南(索引、文档操作篇)
java·后端·面试
洋亦2 小时前
GoF23种设计模式 简介
java
Javatutouhouduan2 小时前
Java面试常问Redis核心知识点整理!
java·数据库·redis·java面试·后端开发·java架构师·java程序员