NanoHttpd 2.0.5 發布,輕量級的(只有一個Java文件) HTTP服務器

jopen 10年前發布 | 39K 次閱讀 NanoHttpd

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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!