轻量级的java HTTP Server——NanoHttpd
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:
package com.example; import java.io.IOException; import java.util.Map; import fi.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 extends NanoHTTPD { public App() throws IOException { super(8080); start(NanoHTTPD.SOCKET_READ_TIMEOUT, false); System.out.println("\nRunning! Point your browsers to http://localhost:8080/ \n"); } public static void main(String[] args) { try { new App(); } catch (IOException ioe) { System.err.println("Couldn't start server:\n" + ioe); } } @Override public Response serve(IHTTPSession session) { String msg = "<html><body><h1>Hello server</h1>\n"; Map<String, String> parms = session.getParms(); if (parms.get("username") == null) { msg += "<form action='?' method='get'>\n <p>Your name: <input type='text' name='username'></p>\n" + "</form>\n"; } else { msg += "<p>Hello, " + parms.get("username") + "!</p>"; } return newFixedLengthResponse(msg + "</body></html>\n"); } }
运行App,浏览器打开http://localhost:8080/ 即可看到效果。
输入username,然后回车:
这样一个简单的登录功能就完成了。
问题:
如果form中指定action为post,你会发现后台session获取不到参数。
解决办法:
session.parseBody(new HashMap()); params = session.getParms();
意思也就是,对于post请求,你需要先调用parseBody()方法,直接传一个简单的新构造的map就行了,然后再调用getParams()方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)