本文目录导读:

我来帮你系统性地入门Java Servlet开发,这是一个从零开始的学习路径:
开发环境准备
需要安装的工具
# 1. JDK 8+ (推荐JDK 11或17) - 下载地址:https://www.oracle.com/java/technologies/downloads/ # 2. IDE(推荐IntelliJ IDEA社区版) - 下载地址:https://www.jetbrains.com/idea/download/ # 3. Tomcat服务器(Servlet容器) - 下载地址:https://tomcat.apache.org/download-10.cgi # 4. Maven(依赖管理) - 下载地址:https://maven.apache.org/download.cgi
第一个Servlet项目
使用Maven创建Web项目结构
my-first-servlet/
├── src/
│ └── main/
│ ├── java/
│ │ └── com/
│ │ └── example/
│ │ └── HelloServlet.java
│ ├── resources/
│ └── webapp/
│ ├── WEB-INF/
│ │ └── web.xml
│ └── index.html
└── pom.xml
pom.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-first-servlet</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>my-first-servlet</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.2</version>
</plugin>
</plugins>
</build>
</project>
编写第一个Servlet
package com.example;
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;
import java.io.PrintWriter;
// 使用注解方式配置Servlet
@WebServlet(name = "HelloServlet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {
// 处理GET请求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置响应内容类型
response.setContentType("text/html;charset=UTF-8");
// 获取输出流
PrintWriter out = response.getWriter();
// 输出HTML内容
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>My First Servlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello, Servlet!</h1>");
out.println("<p>当前时间: " + new java.util.Date() + "</p>");
out.println("</body>");
out.println("</html>");
}
// 处理POST请求
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
web.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">
<display-name>My First Servlet Application</display-name>
</web-app>
Servlet核心概念
Servlet生命周期
@WebServlet("/lifecycle-demo")
public class LifecycleServlet extends HttpServlet {
// 1. 初始化(Servlet第一次被访问时调用)
@Override
public void init() throws ServletException {
System.out.println("Servlet正在初始化...");
}
// 2. 处理请求
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("处理GET请求...");
response.getWriter().println("请求已处理");
}
// 3. 销毁(应用关闭时调用)
@Override
public void destroy() {
System.out.println("Servlet正在销毁...");
}
}
请求处理示例
@WebServlet("/user-handler")
public class UserHandlerServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取请求参数
String name = request.getParameter("name");
String age = request.getParameter("age");
// 获取请求头
String userAgent = request.getHeader("User-Agent");
// 设置响应
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<h2>用户信息</h2>");
out.println("<p>姓名: " + (name != null ? name : "未提供") + "</p>");
out.println("<p>年龄: " + (age != null ? age : "未提供") + "</p>");
out.println("<p>浏览器: " + userAgent + "</p>");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 处理POST请求(如表单提交)
String username = request.getParameter("username");
String password = request.getParameter("password");
// 处理登录逻辑...
response.sendRedirect("/success.html");
}
}
常用功能示例
请求转发和重定向
@WebServlet("/dispatcher-demo")
public class DispatcherServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("action");
if ("forward".equals(action)) {
// 请求转发(服务器内部跳转,URL不变)
request.setAttribute("message", "这是转发过来的数据");
request.getRequestDispatcher("/target.jsp").forward(request, response);
} else if ("redirect".equals(action)) {
// 重定向(浏览器跳转,URL改变)
response.sendRedirect("/other-page.html");
}
}
}
Session管理
@WebServlet("/session-demo")
public class SessionServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取或创建Session
HttpSession session = request.getSession();
// 设置Session属性
session.setAttribute("username", "张三");
session.setAttribute("loginTime", new java.util.Date());
// 获取Session ID
String sessionId = session.getId();
// 设置Session超时时间(秒)
session.setMaxInactiveInterval(30 * 60); // 30分钟
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<h2>Session Demo</h2>");
out.println("<p>Session ID: " + sessionId + "</p>");
out.println("<p>用户名: " + session.getAttribute("username") + "</p>");
out.println("<p>登录时间: " + session.getAttribute("loginTime") + "</p>");
// 清除Session
// session.invalidate();
}
}
部署和运行
使用IDE运行(推荐)
IntelliJ IDEA配置步骤:
- 点击菜单
Run→Edit Configurations - 点击 号 →
Tomcat Server→Local - 配置Tomcat路径
- Deployment中添加你的war包
- 点击运行按钮
手动部署
# 1. 打包项目 mvn clean package # 2. 将生成的war包复制到Tomcat的webapps目录 cp target/my-first-servlet.war $TOMCAT_HOME/webapps/ # 3. 启动Tomcat $TOMCAT_HOME/bin/startup.sh # Linux/Mac # 或 $TOMCAT_HOME/bin/startup.bat # Windows # 4. 访问应用 # http://localhost:8080/my-first-servlet/hello
学习建议
学习路线
- 第一阶段:掌握Servlet基本API(doGet/doPost)
- 第二阶段:学习JSP与Servlet配合使用
- 第三阶段:学习MVC设计模式
- 第四阶段:学习Filter、Listener
- 第五阶段:学习Spring MVC(企业级框架)
实践项目建议
// 练习项目:简易用户管理系统 // 功能清单: 1. 用户注册(doPost) 2. 用户登录(Session管理) 3. 用户列表展示(doGet) 4. 用户信息修改(doPut) 5. 用户删除(doDelete)
常见问题解决
// 1. 中文乱码问题
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
// 2. 静态资源访问
// 将HTML、CSS、JS等文件放在webapp目录下
// 3. 404错误
// 检查Servlet路径配置是否正确
这就是Servlet入门开发的基本流程,从简单的Hello World开始,逐步增加功能,多动手实践是最好的学习方式,遇到问题可以随时问我!