DEV Community

loading...

Servidor HTTP simples em Java

Paulo Collares
Originally published at paulocollares.com.br on ・2 min read

Servidor HTTP simples em Java

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

Discussion (0)