Java第21课:JavaWeb入门——Tomcat+第一个Servlet

从现在进入 JavaWeb 网页开发 阶段,这是后端开发主流方向。 本节课带你搭建环境、手写第一个 Web 程序,实现浏览器访问 Java 代码。

前置准备:

  1. 安装 JDK 8/11(已配置环境变量)
  2. 下载并解压 Tomcat 9(主流稳定版本)
  3. IDE 推荐:IDEA / Eclipse,本文以通用代码 + 部署方式讲解

一、核心概念先了解

  1. JavaWeb:使用 Java 开发网页后端程序,处理浏览器请求、返回数据。
  2. Tomcat :免费的 Web 服务器,专门运行 Java Web 项目。
  3. Servlet:JavaWeb 最基础核心组件,用来接收浏览器请求、做出响应。

二、第一步:创建 Web 项目结构(标准目录)

手动创建文件夹(Web 项目固定规范),命名为 FirstWeb

plaintext

复制代码
FirstWeb
└── WEB-INF          # 核心目录,浏览器无法直接访问
    ├── classes      # 存放编译后的 class 字节码文件
    └── lib          # 存放依赖 jar 包
web.xml              # 项目配置文件(WEB-INF 同级)
index.html           # 静态页面(可选)

1. 导入依赖包

进入 Tomcat 安装目录 lib,复制两个 jar 包到项目 WEB-INF/lib

  • servlet-api.jar
  • jsp-api.jar 作用:提供 Servlet 相关 API,否则代码会报错。

三、编写第一个 Servlet 代码

1. 编写 Servlet 类(Java 代码)

新建 Java 源文件 HelloServlet.java,代码如下:

java

复制代码
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * 第一个 Servlet:处理浏览器请求,响应页面内容
 * 继承 HttpServlet 是标准写法
 */
public class HelloServlet extends HttpServlet {
    // 重写 doGet 方法:处理浏览器 GET 请求(地址栏直接访问就是GET)
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1. 设置响应编码,防止中文乱码
        response.setContentType("text/html;charset=UTF-8");

        // 2. 获取输出流,向浏览器写内容
        PrintWriter out = response.getWriter();

        // 3. 拼接 HTML 内容,返回给浏览器
        out.write("<html>");
        out.write("<head><title>我的第一个JavaWeb程序</title></head>");
        out.write("<body>");
        out.write("<h1>Hello JavaWeb!</h1>");
        out.write("<p>成功运行 Servlet 啦 🎉</p>");
        out.write("</body>");
        out.write("</html>");

        // 关闭流
        out.close();
    }
}

2. 编译 Java 文件

打开命令行,进入 HelloServlet.java 所在目录,执行编译命令(指定依赖包路径):

bash

复制代码
# 格式:javac -cp jar包路径 文件名.java
javac -cp "Tomcat安装目录/lib/*" HelloServlet.java

编译成功后会生成 HelloServlet.class,把该文件放入项目 WEB-INF/classes 下。


四、配置 web.xml(核心映射配置)

在项目根目录创建 web.xml,作用:把访问地址和 Servlet 类绑定

xml

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!-- 1. 注册 Servlet -->
    <servlet>
        <!-- 别名,自定义名称 -->
        <servlet-name>HelloServlet</servlet-name>
        <!-- Servlet 完整类名(包名+类名,无包名直接写类名) -->
        <servlet-class>HelloServlet</servlet-class>
    </servlet>

    <!-- 2. 配置访问路径映射 -->
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <!-- 浏览器访问地址:项目名 + /hello -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

</web-app>

五、部署项目 & 启动 Tomcat

  1. 将整个 FirstWeb 文件夹,复制到 Tomcat/webapps 目录下。
  2. 进入 Tomcat 的 bin 目录:
    • Windows 双击 startup.bat
    • Linux/Mac 执行 startup.sh
  3. 看到控制台无报错,代表服务器启动成功。

六、浏览器访问测试

打开浏览器,输入地址:

plaintext

复制代码
http://localhost:8080/FirstWeb/hello

页面效果

浏览器会展示:

plaintext

复制代码
Hello JavaWeb!
成功运行 Servlet 啦 🎉

七、核心知识点讲解

1. HttpServlet 常用方法

  • doGet():处理 GET 请求(地址栏访问、超链接、表单 get 提交)
  • doPost():处理 POST 请求(表单 post 提交,后面讲解)

2. 两大核心对象

  1. HttpServletRequest request请求对象 接收浏览器发送过来的参数、请求头、地址等数据。
  2. HttpServletResponse response响应对象 向浏览器返回文本、HTML、数据,设置编码、状态码。

3. 中文乱码解决方案

java

复制代码
// 固定写法,放在方法第一行
response.setContentType("text/html;charset=UTF-8");

4. 访问地址规则

plaintext

复制代码
http://服务器IP:端口/项目名/映射路径
默认端口:8080
本机IP:localhost / 127.0.0.1

八、补充:静态页面 index.html

在项目根目录新建 index.html,测试静态页面访问:

html预览

复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>静态页面</title>
</head>
<body>
    <h2>静态 HTML 页面</h2>
    <a href="hello">点击访问 Servlet</a>
</body>
</html>

访问地址:http://localhost:8080/FirstWeb


九、记忆口诀

plaintext

复制代码
Tomcat 是服务器,运行 Web 程序;
Servlet 处理请求,doGet 接收GET;
request 拿请求,response 做响应;
xml 配映射,地址访问全打通!
相关推荐
就叫_这个吧1 小时前
Java使用tomcat+servlet+filter实现简单的登录功能,需先登录再进行页面数据管理操作
java·开发语言·servlet·tomcat·jsp·filter
十五年专注C++开发2 小时前
ANTLR4: CORBA IDL、C++ 语法文件分析利器
java·开发语言·c++·antlr4
子非衣2 小时前
Java使用Aspose进行Word转PDF时异常卡主问题
java·pdf·word
sbjdhjd2 小时前
Tomcat(下) 集群高可用实战:反向代理・负载均衡・分布式 Session
运维·前端·云原生·开源·tomcat·负载均衡·memcached
此生决int2 小时前
Java面向对象进阶精讲:抽象类、接口、内部类与Object类万字详解
java
阿维的博客日记2 小时前
‘version‘ must be a constant version but is ‘${revision}‘
java·spring boot·后端
C+++Python2 小时前
C++ 常量全面讲解
java·开发语言·c++
程序员小羊!2 小时前
17 Maven
java·maven