Http Server in Logo
Here’s the translation of the HTTP Server example from Go to Java, formatted in Markdown suitable for Hugo:
Our first HTTP server example demonstrates how to create a basic server using Java’s built-in com.sun.net.httpserver package.
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
public class HTTPServer {
public static void main(String[] args) throws IOException {
HttpServer server = HttpServer.create(new InetSocketAddress(8090), 0);
server.createContext("/hello", new HelloHandler());
server.createContext("/headers", new HeadersHandler());
server.setExecutor(null); // creates a default executor
server.start();
}
static class HelloHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
String response = "hello\n";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
static class HeadersHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
StringBuilder response = new StringBuilder();
for (String key : t.getRequestHeaders().keySet()) {
response.append(key).append(": ")
.append(String.join(", ", t.getRequestHeaders().get(key)))
.append("\n");
}
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.toString().getBytes());
os.close();
}
}
}In Java, we use the HttpHandler interface to define our request handlers. This is similar to the concept of handlers in the net/http package.
The HelloHandler and HeadersHandler classes implement the HttpHandler interface, providing the logic for handling requests to the /hello and /headers endpoints respectively.
In the main method, we create an HttpServer instance, set up the context paths with their corresponding handlers, and start the server.
To run the server:
$ javac HTTPServer.java
$ java HTTPServer &Now you can access the /hello route:
$ curl localhost:8090/hello
helloThis example demonstrates how to set up a basic HTTP server in Java, register handlers for different routes, and process incoming requests. The structure is similar to the original example, but uses Java-specific classes and interfaces to achieve the same functionality.