Jetty是Eclipse基金会下面的一个开源项目, 是一个Web服务器和Servlet容器, 同时支持HTTP/2, WebSocket, OSGi, JMX, JNDI, JAAS功能. Jetty可以作为web服务器非常容易的嵌入到应用代码中, 包括Android的app.

Jetty除了嵌入到应用代码中外, 也可以像Tomcat那样独立运行, 通过部署WAR包的方式提供服务. 理论上来说, Tomcat下面运行的WAR包可以直接在Jetty下运行, 这一点我没有验证过. 有需要的同学可以自行验证. 接下来的博客中主要介绍嵌入运行方式.

接下来通过一个简单的例子来看看Jetty是如何开发的.

  1. package com.lqp.test;
  2. import org.apache.logging.log4j.LogManager;
  3. import org.eclipse.jetty.server.Server;
  4. import org.eclipse.jetty.server.handler.ContextHandler;
  5. import org.eclipse.jetty.server.handler.ResourceHandler;
  6. public class TestJettyServer {
  7. public static void main(String[] args) {
  8. Server server = new Server(8080);
  9. ResourceHandler resource_handler = new ResourceHandler();
  10. resource_handler.setDirectoriesListed(true);
  11. ContextHandler resHanler = new ContextHandler();
  12. resHanler.setHandler(resource_handler);
  13. resHanler.setResourceBase(".");
  14. resHanler.setContextPath("/");
  15. server.setHandler(resHanler);
  16. try {
  17. server.start();
  18. } catch (Exception e) {
  19. LogManager.getLogger().catching(e);
  20. }
  21. }
  22. }

启动一个JettyWeb服务器就是这么简单. 启动后, 就可以在浏览器里浏览和查看当前目录下的文件了. 效果如下图:
001.png

Handler是Jetty服务器的业务功能实现地, 如果要扩展web服务器的功能, 只需要添加自己实现的handler就行, 还是很容易理解的.

1. 如何引用jetty的jar包

  1. 下载jar包, 添加jar引用, 这里是下载地址
  2. Maven依赖引用, 推荐这种方式. ```xml org.eclipse.jetty jetty-server 9.4.2.v20170220

org.eclipse.jetty jetty-servlet 9.4.2.v20170220 ```