使用Jetty嵌入Web服务器 | AI生成和翻译

Home 2025.03

要在 Java 项目中使用 org.eclipse.jetty,通常需要利用 Jetty 库在应用程序中嵌入轻量级 Web 服务器或 Servlet 容器。Jetty 由 Eclipse 基金会维护,是一个开源项目,允许您提供 Web 内容、处理 HTTP 请求并支持 Servlet 和 Web 应用程序等功能。以下是一个分步指南,帮助您开始使用 org.eclipse.jetty 在 Java 应用程序中设置基本 Web 服务器,使用 Maven 作为构建工具。


步骤 1:将 Jetty 依赖项添加到项目中

要使用 Jetty,您需要在项目中包含其库。如果使用 Maven,请将必要的依赖项添加到 pom.xml 文件中。对于带有 Servlet 支持的基本 Web 服务器设置,请包含 jetty-serverjetty-servlet。以下是一个示例:

<project>
    <dependencies>
        <!-- Jetty Server -->
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
            <version>9.4.31.v20200723</version>
        </dependency>
        <!-- Jetty Servlet Support -->
        <dependency>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-servlet</artifactId>
            <version>9.4.31.v20200723</version>
        </dependency>
        <!-- Servlet API (optional, often included transitively) -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

注意:请检查 Maven 中央仓库 以获取最新的 Jetty 版本,并相应更新 <version> 标签。


步骤 2:创建一个简单的 Jetty 服务器

您可以通过创建 org.eclipse.jetty.server 包中的 Server 类实例,以编程方式使用 Jetty。以下是两种常见方法:使用基本处理程序提供静态响应,或使用 Servlet 提供动态内容。

选项 1:使用基本处理程序

此示例设置一个服务器,对所有请求响应 “Hello, World!”。

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.handler.AbstractHandler;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class SimpleJettyServer {
    public static void main(String[] args) throws Exception {
        // 创建一个监听 8080 端口的服务器实例
        Server server = new Server(8080);

        // 设置一个处理程序来处理请求
        server.setHandler(new AbstractHandler() {
            @Override
            public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
                    throws IOException {
                // 设置响应属性
                response.setContentType("text/plain");
                response.setStatus(HttpServletResponse.SC_OK);
                response.getWriter().println("Hello, World!");

                // 标记请求已处理
                baseRequest.setHandled(true);
            }
        });

        // 启动服务器
        server.start();
        server.join(); // 保持服务器运行直到停止
    }
}

运行此代码,然后在浏览器中打开 http://localhost:8080/ 即可看到 “Hello, World!”。

选项 2:使用 Servlet

对于更复杂的应用程序,您可以使用带有 ServletContextHandler 的 Servlet。

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ServletJettyServer {
    public static void main(String[] args) throws Exception {
        // 在端口 8080 上创建一个服务器实例
        Server server = new Server(8080);

        // 创建一个 Servlet 上下文处理程序
        ServletContextHandler context = new ServletContextHandler();
        context.setContextPath("/"); // 根上下文路径

        // 为服务器设置处理程序
        server.setHandler(context);

        // 添加一个 Servlet 来处理请求
        context.addServlet(new ServletHolder(new HelloServlet()), "/*");

        // 启动服务器
        server.start();
        server.join();
    }
}

// 定义一个简单的 Servlet
class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {
        response.setContentType("text/plain");
        response.setStatus(HttpServletResponse.SC_OK);
        response.getWriter().println("Hello from Jetty Servlet!");
    }
}

运行此代码并访问 http://localhost:8080/ 即可看到 “Hello from Jetty Servlet!”。


步骤 3:编译和运行

  1. 确保您的项目已设置 Maven(例如,运行 mvn compile 以下载依赖项)。
  2. 编译并运行 Java 类(例如,java SimpleJettyServer 或使用 IDE 的运行功能)。
  3. 在浏览器中访问 http://localhost:8080/ 或使用 curl 等工具测试服务器。

其他用例


关键点

通过遵循这些步骤,您可以有效地使用 org.eclipse.jetty 在 Java 应用程序中嵌入 Web 服务器,以满足您的特定需求!


Back Donate