想弄一个 Java 内嵌网页服务器 ( Embedded Web Server ),这样,在我的 Java 应用程序里,可以直接提供网页服务,而不用再给用户配置一个网页服务器。对于轻量级的本地网页服务,这样就足够了!

在 Java 应用里内嵌一个网页服务器,Jetty 是一个很好的选择。以下是我在摸索过程中,总结的基本步骤:

1. Jetty 环境的配置

首先从官方网站下载开发包,再解压到你喜欢的目录,Java 的东西就是方便呀!

<p>
  注意,<a href="http://wiki.eclipse.org/Jetty/Starting/Downloads">Jetty 还分好几种包</a>,Jetty@eclipse、Jetty@codehaus 是比较常见的,内容应该差不多,应该只是镜像罢了。
</p></p>

2. 在 Eclipse 里建立 Jetty 内嵌网页服务器 Hello World 程序

Java 开发中使用第三方库的时候,就需要把该库添加到工程里。Jetty 的库文件,全部在解压目录的 lib 目录下,比如说,在我这里就是

<pre>

D:\eclipse\jetty-hightide-8.0.4.v20111024\lib

<p>
  目录。在 Eclipse 里新建一个 Java 工程,同时,在工程上点右键,弹出的菜单里,选择&#8221;Properties&#8221;,打开工程属性对话框,进行如下操作:
</p>

<p>
  在 &#8220;Java Build Path&#8221; ==> &#8220;Libraries&#8221; 选项卡里,选择 &#8220;Add External JARs&#8221; 按钮,然后切换到 Jetty 目录里的 lib 目录,把所有的 jar 包都添加到工程里。
</p>

<p>
  现在,我们可以用<a href="http://wiki.eclipse.org/Jetty/Tutorial/Embedding_Jetty#Creating_a_Server">最简单的例子</a>来启动一个 Jetty 内嵌网页服务器,但是这个代码,只可以获得一个 404 错误。不过没有关系,这起码可以证明 Jetty Server is Ready!
</p>

<p>
  相比于上面这个 404 错误的例子,相信你会更喜欢下面这个 <a href="http://wiki.eclipse.org/Jetty/Tutorial/Jetty_HelloWorld#Writing_a_HelloWorld_Example">HelloWorld 例子</a>:
</p>

<pre>

import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException;

import java.io.IOException;

import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.handler.AbstractHandler;

public class HelloWorld extends AbstractHandler { 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); baseRequest.setHandled(true); response.getWriter().println("<h1>Hello World</h1>"); }

<span>public</span> <span>static</span> <span>void</span> <span>main</span>(<span>String</span>[] <span>args</span>) <span>throws</span> <span>Exception</span>
{
    <span>Server</span> <span>server</span> = <span>new</span> <span>Server</span>(8080);
    server.setHandler(<span>new</span> <span>HelloWorld</span>());

    server.start();
    server.join();
}

}

3. 其它添加 Jetty 库文件的方法

如果需要在 Java 工程里进行 Embeded Server 开发,也可以把 Jetty 的库目录包含到 CLASSPATH 环境变量里。事实上,只要能找到下面几个文件就可以了:

<pre>

servlet-api-3.0.jar jetty-util-8.0.4.v20111024.jar jetty-8.x.jar

<p>
  手册上是这样写的,不过最后一个 jetty-8.x.jar 文件,我没有找到。
</p></p>