简介
Jetty 是一个开源的项目,提供 HTTP 服务端、HTTP 客户端和 javax.servlet 容器。下面看如何利用 Jetty 的 API 快速开发嵌入式代码。
下载 Jar 包
Jetty 被分解很多 jar 包和依赖包,通过选择 jar 包的最小集合达到占用最小空间的目的。通常,最好使用像 Maven 一样的工具管理 jar 包,但本例中使用包含 Jetty 所有类的聚合 jar 包。可以用 curl 命令或者浏览器手动下载 jetty-all.jar。
像下面这样使用 curl 命令:
| 12
 3
 
 | mkdir Democd Demo
 curl -o jetty-all-uber.jar http://central.maven.org/maven2/org/eclipse/jetty/aggregate/jetty-all/9.3.7.v20160115/jetty-all-9.3.7.v20160115-uber.jar
 
 | 
HelloWorld
Jetty 官方文档中的 嵌入 Jetty一章有很多通过 Jetty API 编写的实例。本教程用只包含一个 Main 方法的简单 HelloWorld 处理器运行服务器。HelloWorld.java 文件代码如下:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 
 | 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.setContentType("text/html; charset=utf-8");
 response.setStatus(HttpServletResponse.SC_OK);
 response.getWriter().println("<h1>Hello World</h1>");
 baseRequest.setHandled(true);
 }
 
 public static void main(String[] args) throws Exception {
 Server server = new Server(8080);
 server.setHandler(new HelloWorld());
 server.start();
 server.join();
 }
 }
 
 | 
编译 HelloWorld
下面的命令编译 HelloWorld 类:
| 12
 
 | mkdir classesjavac -d classes -cp jetty-all-uber.jar HelloWorld.java
 
 | 
运行处理器和服务器
下面的命令运行 HelloWorld 实例:
| 1
 | java -cp classes:jetty-all-uber.jar org.eclipse.jetty.embedded.HelloWorld
 | 
在浏览器地址栏输入:http://localhost:8080 查看 HelloWorld 页面。