Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
16 Ноя 2023
2 мин
2336

Создание простого HTTP-сервера на Java с использованием только Java SE API

Иногда разработчикам требуется создать очень базовый HTTP-сервер, который поддерживает только методы GET и POST. Java SE API предоставляет удобный инструментарий

Иногда разработчикам требуется создать очень базовый HTTP-сервер, который поддерживает только методы GET и POST. Java SE API предоставляет удобный инструментарий для работы с HTTP-клиентами, например, HttpURLConnection. Однако, разработчики часто сталкиваются с проблемой при попытке найти аналогичный инструмент для работы с HTTP-серверами.

Примером может служить ситуация, когда вам нужно создать приложение, которое обрабатывает HTTP-запросы от других приложений. При этом вы не хотите заниматься ручной обработкой HTTP-запросов и форматированием HTTP-ответов.

Использование HttpServer из com.sun.net.httpserver

Пакет com.sun.net.httpserver предоставляет базовую функциональность для создания простого HTTP-сервера. Этот пакет является частью Java SE, начиная с версии 6.

Вот пример создания простого HTTP-сервера, который слушает на порту 8000 и отвечает на все GET-запросы простым текстовым сообщением «Hello, World!»:

import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpExchange;

import java.io.OutputStream;
import java.io.IOException;
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("/", new MyHandler());
        server.setExecutor(null); // creates a default executor
        server.start();
    }

    static class MyHandler implements HttpHandler {
        @Override
        public void handle(HttpExchange t) throws IOException {
            String response = "Hello, World!";
            t.sendResponseHeaders(200, response.length());
            OutputStream os = t.getResponseBody();
            os.write(response.getBytes());
            os.close();
        }
    }
}

Этот сервер поддерживает только GET-запросы. Для поддержки POST-запросов вам нужно будет добавить дополнительную логику в обработчик MyHandler.

Вместо того чтобы ручками обрабатывать HTTP-запросы и форматировать HTTP-ответы, вы можете использовать этот класс для создания простого HTTP-сервера. Однако, обратите внимание на то, что этот класс предоставляет ограниченные возможности и не подходит для создания полноценных веб-приложений.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий