版权声明:本文为CSDN博主「luckystar2008」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qincidong/article/details/82656569
NanoHTTPD是一个免费、轻量级的(只有一个Java文件) HTTP服务器,可以很好地嵌入到Java程序中。支持 GET, POST, PUT, HEAD 和 DELETE 请求,支持文件上传,占用内存很小。
github地址:https://github.com/NanoHttpd/nanohttpd。
maven依赖:
org.nanohttpd
nanohttpd
2.2.0
官网demo:
1 packagecom.example;2
3 importjava.io.IOException;4 importjava.util.Map;5
6 importfi.iki.elonen.NanoHTTPD;7 //NOTE: If you're using NanoHTTPD >= 3.0.0 the namespace is different,8 //instead of the above import use the following:9 //import org.nanohttpd.NanoHTTPD;
10
11 public class App extendsNanoHTTPD {12
13 public App() throwsIOException {14 super(8080);15 start(NanoHTTPD.SOCKET_READ_TIMEOUT, false);16 System.out.println("\nRunning! Point your browsers to http://localhost:8080/ \n");17 }18
19 public static voidmain(String[] args) {20 try{21 newApp();22 } catch(IOException ioe) {23 System.err.println("Couldn't start server:\n" +ioe);24 }25 }26
27 @Override28 publicResponse serve(IHTTPSession session) {29 String msg = "
Hello server
\n";30 Map parms =session.getParms();31 if (parms.get("username") == null) {32 msg += "\nYour name:
\n" + "\n";33 } else{34 msg += "Hello, " + parms.get("username") + "!
";35 }36 return newFixedLengthResponse(msg + "\n");37 }38 }运行App,浏览器打开http://localhost:8080/ 即可看到效果。
输入username,然后回车:
这样一个简单的登录功能就完成了。
问题:
如果form中指定action为post,你会发现后台session获取不到参数。
解决办法:
session.parseBody(new HashMap());
params = session.getParms();
意思也就是,对于post请求,你需要先调用parseBody()方法,直接传一个简单的新构造的map就行了,然后再调用getParams()方法。