NanoHttpd 2.0.5 发布,轻量级的(只有一个Java文件) HTTP服务器

jopen 10年前

NanoHTTPD是专为嵌入在其他Java应用程序中使用的一个轻量级HTTP服务器,它只有一个Java文件。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。可轻松定制临时文件使用和线程模型。
用法:

public class DebugServer extends NanoHTTPD {      /**       * Constructs an HTTP server on given port.       */      public DebugServer() {          super(8080);      }        @Override      public Response serve(String uri, Method method, Map<String, String> header, Map<String, String> parms, Map<String, String> files) {          StringBuilder sb = new StringBuilder();          sb.append("<html>");          sb.append("<head><title>Debug Server</title></head>");          sb.append("<body>");          sb.append("<h1>Response</h1>");          sb.append("<p><blockquote><b>URI -</b> ").append(uri).append("<br />");          sb.append("<b>Method -</b> ").append(method).append("</blockquote></p>");          sb.append("<h3>Headers</h3><p><blockquote>").append(header).append("</blockquote></p>");          sb.append("<h3>Parms</h3><p><blockquote>").append(parms).append("</blockquote></p>");          sb.append("<h3>Files</h3><p><blockquote>").append(files).append("</blockquote></p>");          sb.append("</body>");          sb.append("</html>");          return new Response(sb.toString());      }        public static void main(String[] args) {          ServerRunner.run(DebugServer.class);      }  }

Core Features

  • Only one Java file, providing HTTP 1.1 support.
  • 2 "flavors" - one at "current" standards and one strictly Java 1.1 compatible.
  • Released as open source, free software, under a Modified BSD licence.
  • No fixed config files, logging, authorization etc. (Implement by yourself if you need them.)
  • Experimental support for SSL (see the 'ssl-support' branch in git)
  • Basic support for cookies
  • Supports parameter parsing of GET and POST methods.
  • Rudimentary PUT support (added in 1.25).
  • Support for HEAD and DELETE requests.
  • Supports single and multi-value parameters (w/ a helper method) if needed.
  • Supports file upload (since version 1.2, 2010) with minimal memory overhead.
  • Never caches anything.
  • Doesn't limit bandwidth, request time or simultaneous connections.
  • All header names are converted lowercase so they don't vary between browsers/clients.
  • Very low memory overhead when processing even the largest of requests.
  • Temp file usage and threading model are easily cutomized.
  • Persistent connections (Connection "keep-alive") support allowing multiple requests to be served over a single socket connection.

Webserver Features

  • Supports both dynamic content and file serving.
  • Default code serves files and shows all HTTP parameters and headers.
  • File server supports directory listing, index.html and index.htm.
  • File server supports partial content (streaming).
  • File server supports ETags.
  • File server does the 301 redirection trick for directories without /.
  • File server supports simple skipping for files (continue download).
  • File server serves also very long files without memory overhead.
  • Contains a built-in list of most common mime types.
  • Runtime extension support (extensions that serve particular mime types) - example extension that serves Markdown formatted files. Simply including an extension JAR in the webserver classpath is enough for the extension to be loaded.


项目地址:https://github.com/NanoHttpd/nanohttpd