Servlet 基础与快速入门
2025/9/17大约 4 分钟
Servlet 基础与快速入门
前置知识
在学习本教程前,建议你具备以下基础:
- Java 基础语法
- Web 基础(HTTP 协议、浏览器与服务器交互)
- Maven/Gradle 构建工具
目录
什么是 Servlet?
Servlet(Server Applet)是 Java EE 规范中用于处理 HTTP 请求和响应的服务器端组件。它运行在 Servlet 容器(如 Tomcat、Jetty)中,负责动态生成 Web 内容。
- Servlet 是 Java Web 的核心技术之一
- 通过实现 Servlet 接口,开发者可自定义请求处理逻辑
- Servlet 适用于各种 Web 应用场景,如表单处理、REST API、动态页面等
Servlet 应用场景
- 用户登录、注册、表单提交
- 动态页面内容生成
- RESTful API 服务
- 文件上传与下载
- 作为 Spring、Struts 等框架的底层支撑
发展历程
Servlet 规范自 1997 年诞生,已成为 Java Web 的基础。现代框架(如 Spring MVC)底层依然依赖 Servlet。
Servlet 规范与核心接口
Servlet 规范定义了开发 Web 组件的标准方式,核心接口如下:
javax.servlet.Servlet
:所有 Servlet 的顶级接口javax.servlet.http.HttpServlet
:最常用,简化了 HTTP 请求处理javax.servlet.ServletRequest
、ServletResponse
:请求与响应对象
Servlet 主要接口结构
public interface Servlet {
void init(ServletConfig config) throws ServletException; // 初始化
ServletConfig getServletConfig(); // 获取配置
void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; // 处理请求
String getServletInfo(); // 获取信息
void destroy(); // 销毁
}
开发环境搭建
1. 安装 JDK
建议使用 JDK 8 及以上版本。
2. 安装 Servlet 容器
常用容器:
- Apache Tomcat
- Jetty
- Undertow
3. 构建工具
推荐使用 Maven 或 Gradle 管理依赖。
4. IDE 推荐
- IntelliJ IDEA
- Eclipse
- VS Code(需插件)
第一个 Servlet 示例
下面通过一个简单的 HelloServlet 展示 Servlet 的基本用法。
HelloServlet.java
package com.example.servlet;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 一个最简单的Servlet示例,响应Hello World
*/
@Slf4j
@WebServlet(name = "HelloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置响应内容类型
resp.setContentType("text/html;charset=UTF-8");
// 输出内容
resp.getWriter().write("<h2>你好,Servlet!</h2>");
log.info("HelloServlet 被访问");
}
}
说明
- 使用
@WebServlet
注解注册 Servlet,无需 web.xml 配置 - 继承
HttpServlet
,重写doGet
方法处理 GET 请求 - 使用 Lombok 的
@Slf4j
简化日志输出
依赖与配置
1. Maven 依赖
<dependencies>
<!-- Servlet API,仅编译时依赖,运行由容器提供 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope> <!-- 由容器提供,无需打包 -->
</dependency>
<!-- Lombok 简化实体与日志代码 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
<scope>provided</scope>
</dependency>
</dependencies>
2. 项目结构建议
src/main/java/com/example/servlet/
├── HelloServlet.java
└── ...
3. 部署与访问
- 将项目打包为 war 包,部署到 Tomcat 的 webapps 目录
- 启动 Tomcat,访问 http://localhost:8080/项目名/hello
常见问题
- 404 错误:检查 @WebServlet 注解、Tomcat 部署路径
- 依赖冲突:确保 servlet-api 依赖为 provided
- 中文乱码:设置 resp.setContentType("text/html;charset=UTF-8")
小结与建议
- Servlet 是 Java Web 的基石,理解其原理有助于掌握高级框架
- 推荐使用注解简化开发,Lombok 提高代码效率
- 遇到问题优先查日志与容器控制台输出
- 后续可深入学习请求/响应、生命周期、过滤器、监听器等内容
本文为 Servlet 系列教程第一篇,后续将介绍请求响应机制、生命周期、过滤器与监听器等内容,敬请期待!