NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。
github地址:https://github.com/NanoHttpd/nanohttpd。
maven依赖:
org.nanohttpd
nanohttpd
2.2.0
官网demo:
packagecom.example;importjava.io.IOException;importjava.util.Map;importfi.iki.elonen.NanoHTTPD;//NOTE: If you're using NanoHTTPD >= 3.0.0 the namespace is different,//instead of the above import use the following://import org.nanohttpd.NanoHTTPD;
public class App extendsNanoHTTPD {public App() throwsIOException {super(8080);
start(NanoHTTPD.SOCKET_READ_TIMEOUT,false);
System.out.println("\nRunning! Point your browsers to http://localhost:8080/ \n");
}public static voidmain(String[] args) {try{newApp();
}catch(IOException ioe) {
System.err.println("Couldn't start server:\n" +ioe);
}
}
@OverridepublicResponse serve(IHTTPSession session) {
String msg= "
Hello server
\n";Map parms =session.getParms();if (parms.get("username") == null) {
msg+= "
\nYour name:
\n" + "\n";}else{
msg+= "
Hello, " + parms.get("username") + "!
";}return newFixedLengthResponse(msg + "\n");
}
}
运行App,浏览器打开http://localhost:8080/ 即可看到效果。
输入username,然后回车:
这样一个简单的登录功能就完成了。
问题:
如果form中指定action为post,你会发现后台session获取不到参数。
解决办法:
session.parseBody(newHashMap());
params= session.getParms();
意思也就是,对于post请求,你需要先调用parseBody()方法,直接传一个简单的新构造的map就行了,然后再调用getParams()方法。
本文介绍了NanoHTTPD,一个免费、轻量级的Java HTTP服务器,可嵌入Java程序,支持多种请求和文件上传,占用内存小。给出了github地址、maven依赖和官网demo,还展示了简单登录功能的实现,同时解决了post请求后台获取参数的问题。

被折叠的 条评论
为什么被折叠?



