在Java中创建一个简单的HTTP服务器可以通过利用Java内置的com.sun.net.httpserver.HttpServer类来完成。以下将会对此进行详细的介绍。
一、HttpServer类总览 {#title-1}
Java提供了com.sun.net.httpserver类,该类提供了实现HTTP服务器的有限公开API。使用它可以启动一个监听指定端口的HTTP服务器,并且对请求的URL做出响应。
此类包含start()方法来启动服务器,createContext()方法来指定URL路径和处理该路径请求的回调函数。最后,通过调用HttpServer.create()并传递一个InetSocketAddress建立服务器。
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import java.net.InetSocketAddress;
public class SimpleHttpServer {
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/applications/myapp", new MyHandler());
server.setExecutor(null); // creates a default executor
server.start();
}
}
二、创建处理程序 {#title-2}
HttpHandler是处理HTTP交换的回调函数。它只有一个方法void handle(HttpExchange t)。HttpExchange有请求方法getField()、响应方法sendResponseHeaders()、以及获取RequestBody和ResponseBody的方法。
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
class MyHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
String response = "This is the response";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
三、运行服务器 {#title-3}
最后,在编写完处理程序和主程序后,可以运行主程序以启动服务器。然后浏览器访问http://localhost:8000/applications/myapp,就会显示出我们在处理程序中定义的响应内容了。
public class Main {
public static void main(String[] args) throws Exception {
SimpleHttpServer.main(args);
}
}