Servidor HTTP simples em Java

1 minutos de leitura

Atualizado em:

Neste post iremos montar um servidor HTTP simples em Java. Útil para obter informações simples de uma aplicação rodando um background por exemplo.

O projeto completo pode ser baixado no Github: https://github.com/pcollares/exemplos-blog/tree/master/SimpleHTTPServer

O primeiro passo é criar uma instância do servidor http nativo:

HttpServer servidor = HttpServer.create(new InetSocketAddress(8080), 0);

Nesse exemplo ele irá executar na porta 8080.

Agora adiciono um novo contexto e uma classe, que criaremos abaixo que será quem irá resolver as requisições.

servidor.createContext("/", new Root());

Bastando iniciar o servidor agora

servidor.start();

Nesse exemplo, a classe Root que irá responder as requisições feitas para o contexto '/' e deve implementar a interface HttpHandler para que o método handle prepare o retorno que será enviado no corpo da resposta http.

Para isso, crio um StringBuilder para facilitar a concatenação das Strings:

StringBuilder out = new StringBuilder();

out.append("<html>");
out.append("<head>");
out.append("<title>Ola mundo").append("</title>");
out.append("</head>");
out.append("<body>");
out.append("Olá mundo");
out.append("</body>");
out.append("</html>");

E escrevo essa saída como um array de bytes:

he.sendResponseHeaders(200, out.toString().length());

try (OutputStream os = he.getResponseBody()) {
    os.write(out.toString().getBytes("ISO-8859-1"));
}

O resultado pode ser visto acessando http://localhost:8080/

No código completo no Github, adicionei mais uma página de exemplo (/stats) que demonstra como pode ser útil para obter informações do Hardware e do sistema operacional, como memória, uso do disco, processador, threads, etc...


Exemplo de resposta do servidor http simples em Java

[]'s

Deixe um comentário