NanoHttpd 2.0.5 发布,轻量级的(只有一个Java文件) HTTP服务器
jopen 11年前
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
andindex.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.