第5部分:Servlets与Java Servlet API——编写一个简单的Web应用程序

作者:API传播员 · 2025-11-20 · 阅读时间:4分钟

本材料是“企业发展导论”系列的一部分。如果您已经掌握了如何编写在控制台上显示文本的Java应用程序,但还不清楚如何创建第一个Web应用程序,那么本文将是您的理想起点。在这里,我们将介绍Java Servlets,并带您编写一个简单的Web应用程序。通过这个应用程序,您可以轻松向朋友展示您的成果,而无需发送JAR文件或要求他们下载Java。


什么是Servlet?

首先,我们需要了解什么是Servlet以及它的作用。Java Servlet API是一个标准化的API,专为在服务器端实现而设计。它基于请求-响应模型,与客户端进行交互。Servlet本质上是一个类,它能够接收客户端的请求并返回响应。它是Java中构建客户端-服务器架构的核心组件之一。


创建Web应用程序需要什么?

在开始之前,您需要以下工具和环境:

  1. Maven:用于构建和管理项目依赖。
  2. Tomcat:作为Servlet容器运行您的应用程序。
  3. Java开发环境:确保您已安装JDK。

创建第一个Web应用程序

1. 配置Maven项目

首先,创建一个Maven项目,并在pom.xml文件中添加以下依赖项和打包配置:


    4.0.0
    org.example
    servlet
    1.0-SNAPSHOT
    war
    
        
            javax.servlet
            javax.servlet-api
            4.0.1
        
    

2. 编写简单的Servlet类

创建一个名为MainServlet的类,并继承HttpServlet。以下是代码示例:

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;

@WebServlet("/hello")
public class MainServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        PrintWriter writer = resp.getWriter();
        writer.write("Hello!");
        writer.close();
    }
}

3. 配置Tomcat

接下来,您需要配置Tomcat以运行您的应用程序:

  • 指定Tomcat版本。
  • 设置服务器的URL和端口,例如:http://localhost:8080
  • 配置项目的部署方式,选择“WAR爆炸”模式。

4. 运行应用程序

启动Tomcat后,您可以通过以下URL访问应用程序:
http://localhost:8080/hello

当您访问该URL时,浏览器将显示“Hello!”。


使用参数和会话

我们可以进一步改进Servlet,使其能够处理请求参数和会话。以下是示例代码:

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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/hello")
public class MainServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession();
        Integer visitCounter = (Integer) session.getAttribute("visitCounter");
        if (visitCounter == null) {
            visitCounter = 1;
        } else {
            visitCounter++;
        }
        session.setAttribute("visitCounter", visitCounter);        String username = req.getParameter("username");
        resp.setContentType("text/html");
        PrintWriter writer = resp.getWriter();
        if (username == null) {
            writer.write("Hello, Anonymous
"); } else { writer.write("Hello, " + username + "
"); } writer.write("Page has been visited " + visitCounter + " times."); writer.close(); } }

转发与重定向

在Servlet中,您可以使用转发或重定向来处理请求:

  • 转发:将请求转发到另一个Servlet或JSP。
  • 重定向:向客户端返回一个新的URL,客户端会自动导航到该地址。

以下是重定向的代码示例:

resp.sendRedirect(req.getContextPath() + "/hello");

总结

通过本文,您学习了如何创建一个简单的Java Web应用程序,并了解了Servlet的基本概念和用法。我们从配置Maven项目开始,编写了一个简单的Servlet类,并通过Tomcat运行了应用程序。此外,我们还探讨了如何处理请求参数和会话,以及转发与重定向的区别。希望这篇文章能帮助您迈出Web开发的第一步!

原文链接: https://codegym.cc/groups/posts/301-part-5-servlets-and-the-java-servlet-api-writing-a-simple-web-application