灌木大叔

每一个不曾起舞的日子都是对以往生命的辜负!!

  :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

版权声明:本文为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依赖:

<dependency>
<groupId>org.nanohttpd</groupId> <!-- <groupId>com.nanohttpd</groupId> for 2.1.0 and earlier -->
<artifactId>nanohttpd</artifactId>
<version>2.2.0</version>
</dependency>

官网demo:

 1 package com.example;
 2 
 3 import java.io.IOException;
 4 import java.util.Map;
 5 
 6 import fi.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 extends NanoHTTPD {
12 
13     public App() throws IOException {
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 void main(String[] args) {
20         try {
21             new App();
22         } catch (IOException ioe) {
23             System.err.println("Couldn't start server:\n" + ioe);
24         }
25     }
26 
27     @Override
28     public Response serve(IHTTPSession session) {
29         String msg = "<html><body><h1>Hello server</h1>\n";
30         Map<String, String> parms = session.getParms();
31         if (parms.get("username") == null) {
32             msg += "<form action='?' method='get'>\n  <p>Your name: <input type='text' name='username'></p>\n" + "</form>\n";
33         } else {
34             msg += "<p>Hello, " + parms.get("username") + "!</p>";
35         }
36         return newFixedLengthResponse(msg + "</body></html>\n");
37     }
38 }

运行App,浏览器打开http://localhost:8080/ 即可看到效果。

输入username,然后回车:

这样一个简单的登录功能就完成了。

问题:
如果form中指定action为post,你会发现后台session获取不到参数。
解决办法:

session.parseBody(new HashMap());
params = session.getParms();
意思也就是,对于post请求,你需要先调用parseBody()方法,直接传一个简单的新构造的map就行了,然后再调用getParams()方法。

posted on 2019-11-06 08:59  灌木大叔  阅读(1133)  评论(0编辑  收藏  举报