本指南将通过一个简单的Servlet示例,展示如何创建、配置和运行Servlet,包括处理HTTP请求和生成动态响应。


目录

  1. 实例概述
  2. 开发环境准备
  3. 创建Servlet代码
  4. 配置Servlet
  5. 部署与运行
  6. 扩展实例:表单处理
  7. 参考资料

1. 实例概述

我们将创建一个名为 WelcomeServlet 的Servlet:

  • 功能:响应GET请求,显示欢迎消息。
  • 扩展:处理POST请求的表单数据。
  • 目标:展示Servlet的基本用法。

2. 开发环境准备

工具

  • JDK:已安装(如JDK 11)。
  • Tomcat:已安装并运行(如Tomcat 10)。
  • 项目目录
  myapp/
  ├── WEB-INF/
  │   ├── classes/    # 存放 .class 文件
  │   └── web.xml     # 配置文件
  └── index.html      # 静态页面(可选)

验证

  • 确保 java -versionhttp://localhost:8080 正常工作。

3. 创建Servlet代码

WelcomeServlet.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class WelcomeServlet extends HttpServlet {
    @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("<html>");
        out.println("<head><title>Welcome Servlet</title></head>");
        out.println("<body>");
        out.println("<h1>欢迎使用 Servlet!</h1>");
        out.println("<p>当前时间: " + new java.util.Date() + "</p>");
        out.println("</body>");
        out.println("</html>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response); // 简单起见,POST调用GET
    }
}
  • 说明
  • doGet():处理GET请求,显示欢迎消息和当前时间。
  • doPost():暂与GET相同,后续扩展。

4. 配置Servlet

web.xml

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">
    <servlet>
        <servlet-name>WelcomeServlet</servlet-name>
        <servlet-class>WelcomeServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>WelcomeServlet</servlet-name>
        <url-pattern>/welcome</url-pattern>
    </servlet-mapping>
</web-app>
  • 说明
  • <servlet>:定义Servlet名称和类。
  • <servlet-mapping>:映射URL路径。

5. 部署与运行

编译

  1. WelcomeServlet.java 放入 myapp/WEB-INF/classes/
  2. 编译:
   javac -cp /path/to/tomcat/lib/servlet-api.jar WelcomeServlet.java
  • 确保 servlet-api.jar 在Tomcat的 lib 目录中。

部署

  1. myapp 目录复制到Tomcat的 webapps 目录:
   cp -r myapp /path/to/tomcat/webapps/
  1. 启动Tomcat:
  • Windows:bin\startup.bat
  • Linux/Mac:bin/startup.sh

访问

  • 打开浏览器,访问:http://localhost:8080/myapp/welcome
  • 输出示例:
  欢迎使用 Servlet!
  当前时间: Tue Mar 25 12:34:56 CST 2025

6. 扩展实例:表单处理

添加表单页面:index.html

<!DOCTYPE html>
<html>
<head><title>表单提交</title></head>
<body>
    <form method="POST" action="/myapp/welcome">
        姓名: <input type="text" name="username"><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

修改 WelcomeServlet.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class WelcomeServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        out.println("<h1>欢迎使用 Servlet!</h1>");
        out.println("<p>请通过表单提交姓名。</p>");
        out.println("</body></html>");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String username = request.getParameter("username");

        out.println("<html><body>");
        out.println("<h1>欢迎, " + (username != null ? username : "访客") + "!</h1>");
        out.println("<p>当前时间: " + new java.util.Date() + "</p>");
        out.println("</body></html>");
    }
}

测试

  1. 重新编译并部署。
  2. 访问 http://localhost:8080/myapp/index.html
  3. 输入姓名并提交,页面显示个性化欢迎消息。

7. 参考资料

出站链接

其他资源

  • 《Servlet & JSP: A Tutorial》 – Servlet开发书籍。
  • X社区:搜索 #ServletExample 获取更多示例。

这篇指南提供了一个完整的Servlet实例,从基本GET响应到表单处理。如果您需要更复杂的功能(如数据库连接、会话管理或注解配置),请告诉我!