Jetty 嵌入式之 HelloWorld
本节提供一个教程,演示如何快速开发针对Jetty API的嵌入式代码。
1. 下载 Jar 包
Jetty被分解为许多jar和依赖项,通过选择最小的jar集来实现最小的占用空间。 通常最好使用像Maven这样的东西来管理jar,但本教程使用一个聚合Jar,它包含一个Jar中所有必需的Jetty类。 您可以使用curl或浏览器手动下载聚合jetty-all.jar。
注意:*Maven仓库已经开始积极拒绝/拒绝从wget命令行工具访问存储库(由于某些组滥用该工具)。 *maven存储库的管理员已经声明推荐的命令行下载工具现在是 curl 。
重要:本节中引用的jetty-all jar仅用于示例目的,不应在此之外使用。 请考虑使用Maven来管理项目依赖项。
使用 curl 如下所示:
> mkdir Demo
> cd Demo
> curl -o jetty-all-uber.jar https://repo1.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/9.4.12-SNAPSHOT/jetty-all-9.4.12-SNAPSHOT-uber.jar
2. 写一个 HelloWorld 示例
Embedding Jetty部分包含许多针对Jetty API编写的示例。 本教程使用一个简单的HelloWorld处理程序和一个main方法来运行服务器。 您可以在编辑器中下载或创建具有以下内容的文件HelloWorld.java:
//
// ========================================================================
// Copyright (c) 1995-2018 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
// package org.eclipse.jetty.embedded; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Request;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.AbstractHandler; public class HelloWorld extends AbstractHandler
{
@Override
public void handle( String target,
Request baseRequest,
HttpServletRequest request,
HttpServletResponse response ) throws IOException,
ServletException
{
// 声明 response 编码和类型
response.setContentType("text/html; charset=utf-8"); // 声明 response 状态码
response.setStatus(HttpServletResponse.SC_OK); // 写入 response 内容
response.getWriter().println("<h1>Hello World</h1>"); // 通知 jetty 这个请求已经被处理过
baseRequest.setHandled(true);
} public static void main( String[] args ) throws Exception
{
Server server = new Server(8080);
server.setHandler(new HelloWorld()); server.start();
server.join();
}
}
3. 编译Hello World示例
以下命令编译HelloWorld类:
> mkdir classes
> javac -d classes -cp jetty-all-uber.jar HelloWorld.java
4. 运行 Handler 和 Server
以下命令运行HelloWorld示例:
> java -cp classes:jetty-all-uber.jar org.eclipse.jetty.embedded.HelloWorld
您现在可以在浏览器地址栏输入 http:// localhost:8080 以查看您的 hello world 页面。
参考资料:http://www.eclipse.org/jetty/documentation/9.4.x/advanced-embedding.html#jetty-helloworld