Last active 1750422453

a very simple HTTP server in Java

Revision 074d8647a2506a15cbaca20b1b4219cafd6c7ce3

httpjava.java Raw
1package rocks.zipcode;
2
3import java.io.IOException;
4import java.io.OutputStream;
5import java.net.InetSocketAddress;
6
7import com.sun.net.httpserver.HttpExchange;
8import com.sun.net.httpserver.HttpHandler;
9import com.sun.net.httpserver.HttpServer;
10
11public class Main {
12 static final int port = 8000;
13 public static void main(String[] args) throws Exception {
14 HttpServer server = HttpServer.create(new InetSocketAddress(Main.port), 0);
15 server.createContext("/", new RootHandler());
16 server.createContext("/test", new TestHandler());
17 server.createContext("/foo", new FooHandler());
18 server.createContext("/bar", new BarHandler());
19 // server.setExecutor(null); // creates a default executor
20 // server.setExecutor(java.util.concurrent.Executors.newCachedThreadPool());
21 server.setExecutor(java.util.concurrent.Executors.newFixedThreadPool(5));
22 server.start();
23 }
24
25 static class RootHandler implements HttpHandler {
26 @Override
27 public void handle(HttpExchange t) throws IOException {
28 String response = "Zip Code Rocks!";
29 t.sendResponseHeaders(200, response.length());
30 OutputStream os = t.getResponseBody();
31 os.write(response.getBytes());
32 os.close();
33 }
34 }
35 static class TestHandler implements HttpHandler {
36 @Override
37 public void handle(HttpExchange t) throws IOException {
38 String response = "Testing! Testing! Zip Code Rocks!";
39 t.sendResponseHeaders(200, response.length());
40 OutputStream os = t.getResponseBody();
41 os.write(response.getBytes());
42 os.close();
43 }
44 }
45 static class FooHandler implements HttpHandler {
46 @Override
47 public void handle(HttpExchange t) throws IOException {
48 String response = "<HTML><BODY><h1>HTML</h1><p>This is a proper paragraph of text.</p></BODY></HTML>";
49 t.sendResponseHeaders(200, response.length());
50 OutputStream os = t.getResponseBody();
51 os.write(response.getBytes());
52 os.close();
53 }
54 }
55
56 static class BarHandler implements HttpHandler {
57 @Override
58 public void handle(HttpExchange t) throws IOException {
59 String response = MakeBody();
60 t.sendResponseHeaders(200, response.length());
61 OutputStream os = t.getResponseBody();
62 os.write(response.getBytes());
63 os.close();
64 }
65 }
66
67 static String MakeBody() {
68 StringBuilder sb = new StringBuilder();
69 String css = "body { font-family: Arial, sans-serif; line-height: 1.6; color: #222; " +
70 "max-width: 40rem; padding: 2rem; margin: auto; background: #fafafa; }" +
71 "a { color: #2ECC40; } h1, h2, strong { color: #111; }";
72
73 sb.append("<HTML>");
74 sb.append("<style>");
75 sb.append(css);
76 sb.append("</style>");
77 sb.append("<BODY><h1>HTML Title</h1>");
78 sb.append("<p>");
79 for(int i = 0; i<10; i++) {
80 sb.append("This is a proper paragraph of text. ");
81 }
82 sb.append("</p>");
83 sb.append("</BODY></HTML>");
84
85 return sb.toString();
86 }
87
88}
89