NanoHTTPD 如何从应用程序呈现变量
NanoHTTPD how to present variable from app
我玩的是NanoHTTPD和基于它的WebServer。要更新我的代码(应用程序)中的任何对象,我可以使用 GET/POST 方法。但是我怎样才能创建动态页面呢?例如,我在光盘上有 html 页,它应该显示当前温度:
<html>
<head>
<title>My page</title>
</head>
<body>
<p style="text-align: center">Temperature: [temperature variable] </p>
</body>
</html>
如何将 "variable temperature" 从基于 NanoHTTPD 的应用程序传递到 html 文件并在浏览器中显示?
您必须从磁盘中读取模板,并将 [temperature variable]
子字符串替换为您要包含的值。
要读取文件,可以使用Files
class:
byte[] data = Files.readAllBytes(Paths.get("mytemplpate.html"));
String templ = new String(data, StandardCharsets.UTF_8);
要输入您的体温:
double temperature = 22.3;
String html = templ.replace("[temperature variable]", Double.toString(temperature));
最后使用 NanoHTTPD 将此作为响应发送:
return new NanoHTTPD.Response(html);
完整程序:
前言:不处理异常,仅供演示。
public class TemperatureServer extends NanoHTTPD {
// Loaded and cached html template
private static String templ;
// Value of this variable will be included and sent in the response
private static double temperature;
public TemperatureServer () {
super(8080);
}
@Override
public Response serve(IHTTPSession session) {
String html = templ.replace("[temperature variable]",
Double.toString(temperature));
return new NanoHTTPD.Response(html);
}
public static void main(String[] args) throws Exception {
byte[] data = Files.readAllBytes(Paths.get("mytemplpate.html"));
templ = new String(data, StandardCharsets.UTF_8);
ServerRunner.run(TemperatureServer.class);
}
}
有关更高级的示例,请查看 NanoHttpd Github 站点的 Samples package。
我玩的是NanoHTTPD和基于它的WebServer。要更新我的代码(应用程序)中的任何对象,我可以使用 GET/POST 方法。但是我怎样才能创建动态页面呢?例如,我在光盘上有 html 页,它应该显示当前温度:
<html>
<head>
<title>My page</title>
</head>
<body>
<p style="text-align: center">Temperature: [temperature variable] </p>
</body>
</html>
如何将 "variable temperature" 从基于 NanoHTTPD 的应用程序传递到 html 文件并在浏览器中显示?
您必须从磁盘中读取模板,并将 [temperature variable]
子字符串替换为您要包含的值。
要读取文件,可以使用Files
class:
byte[] data = Files.readAllBytes(Paths.get("mytemplpate.html"));
String templ = new String(data, StandardCharsets.UTF_8);
要输入您的体温:
double temperature = 22.3;
String html = templ.replace("[temperature variable]", Double.toString(temperature));
最后使用 NanoHTTPD 将此作为响应发送:
return new NanoHTTPD.Response(html);
完整程序:
前言:不处理异常,仅供演示。
public class TemperatureServer extends NanoHTTPD {
// Loaded and cached html template
private static String templ;
// Value of this variable will be included and sent in the response
private static double temperature;
public TemperatureServer () {
super(8080);
}
@Override
public Response serve(IHTTPSession session) {
String html = templ.replace("[temperature variable]",
Double.toString(temperature));
return new NanoHTTPD.Response(html);
}
public static void main(String[] args) throws Exception {
byte[] data = Files.readAllBytes(Paths.get("mytemplpate.html"));
templ = new String(data, StandardCharsets.UTF_8);
ServerRunner.run(TemperatureServer.class);
}
}
有关更高级的示例,请查看 NanoHttpd Github 站点的 Samples package。