如何用Java内置Web服务器指向index.html?
How to point to index.html with Java built-in Web Server?
我有一个非常简单的 Java Web 服务器(在 this tutorial 之后),有没有办法指向 index.html 文件(来自 Bootstrap)在处理程序中而不是对响应进行硬编码?
import java.io.*;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.*;
public class SO {
public static void main(String[] args) throws Exception {
int port = 9000;
HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
System.out.println("server started at " + port);
server.createContext("/", new RootHandler());
server.setExecutor(null);
server.start();
}
public static class RootHandler implements HttpHandler {
@Override
public void handle(HttpExchange he) throws IOException {
String response = "<h1>Static Response</h1>";
he.sendResponseHeaders(200, response.length());
OutputStream os = he.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
}
内置的 HttpServer 非常低级,据我所知,不提供此功能。但是没有什么能阻止您读取文件并将其内容发送到响应输出流:
File file = new File("index.html");
he.sendResponseHeaders(200, file.length());
try (OutputStream os = he.getResponseBody()) {
Files.copy(file.toPath(), os);
}
我有一个非常简单的 Java Web 服务器(在 this tutorial 之后),有没有办法指向 index.html 文件(来自 Bootstrap)在处理程序中而不是对响应进行硬编码?
import java.io.*;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.*;
public class SO {
public static void main(String[] args) throws Exception {
int port = 9000;
HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
System.out.println("server started at " + port);
server.createContext("/", new RootHandler());
server.setExecutor(null);
server.start();
}
public static class RootHandler implements HttpHandler {
@Override
public void handle(HttpExchange he) throws IOException {
String response = "<h1>Static Response</h1>";
he.sendResponseHeaders(200, response.length());
OutputStream os = he.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
}
内置的 HttpServer 非常低级,据我所知,不提供此功能。但是没有什么能阻止您读取文件并将其内容发送到响应输出流:
File file = new File("index.html");
he.sendResponseHeaders(200, file.length());
try (OutputStream os = he.getResponseBody()) {
Files.copy(file.toPath(), os);
}