NaoHTTPD是一个免费、轻量级的(只有一个Java文件)HTTP服务器,可以很好地嵌入到Java程序中。支持GET,POST,PUT,HEAD和DELETE请求,支持文件上传,占用内存很小。可轻松定制临时文件使用和线程模型。
NaoHTTPDforJDK1.1https://github.com/NaoHttpd/aohttpd/tree/aohttpd-for-java1.1
示例代码:
package fi.iki.eloe.debug; import fi.iki.eloe.NaoHTTPD;import fi.iki.eloe.ServerRuer; import java.util.HashMap;import java.util.List;import java.util.Map; public class DebugServer exteds NaoHTTPD { public DebugServer() { super(8080); } public static void mai(Strig[] args) { ServerRuer.ru(DebugServer.class); } @Override public Respose serve(IHTTPSessio sessio) { Map<Strig, List<Strig>> decodedQueryParameters = decodeParameters(sessio.getQueryParameterStrig()); StrigBuilder sb = ew StrigBuilder(); sb.apped("<html>"); sb.apped("<head><title>Debug Server</title></head>"); sb.apped("<body>"); sb.apped("<h1>Debug Server</h1>"); sb.apped("<p><blockquote><b>URI</b> = ").apped( Strig.valueOf(sessio.getUri())).apped("<br />"); sb.apped("<b>Method</b> = ").apped( Strig.valueOf(sessio.getMethod())).apped("</blockquote></p>"); sb.apped("<h3>Headers</h3><p><blockquote>"). apped(toStrig(sessio.getHeaders())).apped("</blockquote></p>"); sb.apped("<h3>Parms</h3><p><blockquote>"). apped(toStrig(sessio.getParms())).apped("</blockquote></p>"); sb.apped("<h3>Parms (multi values?)</h3><p><blockquote>"). apped(toStrig(decodedQueryParameters)).apped("</blockquote></p>"); try { Map<Strig, Strig> files = ew HashMap<Strig, Strig>(); sessio.parseBody(files); sb.apped("<h3>Files</h3><p><blockquote>"). apped(toStrig(files)).apped("</blockquote></p>"); } catch (Exceptio e) { e.pritStackTrace(); } sb.apped("</body>"); sb.apped("</html>"); retur ew Respose(sb.toStrig()); } private Strig toStrig(Map<Strig, ? exteds Object> map) { if (map.size() == 0) { retur ""; } retur usortedList(map); } private Strig usortedList(Map<Strig, ? exteds Object> map) { StrigBuilder sb = ew StrigBuilder(); sb.apped("<ul>"); for (Map.Etry etry : map.etrySet()) { listItem(sb, etry); } sb.apped("</ul>"); retur sb.toStrig(); } private void listItem(StrigBuilder sb, Map.Etry etry) { sb.apped("<li><code><b>").apped(etry.getKey()). apped("</b> = ").apped(etry.getValue()).apped("</code></li>"); }}
评论