Spec-Zone.ru › OpenJDK 21

Пакет com.sun.net.httpserver

package com.sun.net.httpserver
Предоставляет простой высокоуровневый API для HTTP-сервера, который может использоваться для создания встроенных HTTP-серверов. Поддерживаются как "http", так и "https". API предоставляет частичную реализацию RFC 2616 (HTTP 1.1) и RFC 2818 (HTTP через TLS). Любую функциональность HTTP, не предоставляемую этим API, можно реализовать кодом приложения с использованием API.

Основные компоненты:

  • класс HttpExchange, описывающий пару запроса и ответа,
  • интерфейс HttpHandler для обработки входящих запросов, а также класс HttpHandlers, предоставляющий полезные реализации обработчиков,
  • класс HttpContext, сопоставляющий путь URI с HttpHandler,
  • класс HttpServer для прослушивания подключений и перенаправления запросов обработчикам,
  • класс Filter, позволяющий выполнять предобработку и последующую обработку запросов.

Класс SimpleFileServer предлагает простой HTTP-только файловый сервер (предназначен только для тестирования, разработки и отладки). Реализация по умолчанию предоставляется через инструмент jwebserver.

Разработчики должны реализовать интерфейс HttpHandler. Этот интерфейс предоставляет обратный вызов, который вызывается для обработки входящих запросов от клиентов. HTTP-запрос и его ответ известны как обмен. HTTP-обмены представлены классом HttpExchange. Класс HttpServer используется для прослушивания входящих TCP-соединений и перенаправления запросов на этих соединениях обработчикам, которые были зарегистрированы в сервере.

Ниже представлен пример минимального HTTP-сервера:

   class MyHandler implements HttpHandler {
       public void handle(HttpExchange t) throws IOException {
           InputStream is = t.getRequestBody();
           read(is); // .. read the request body
           String response = "This is the response";
           t.sendResponseHeaders(200, response.length());
           OutputStream os = t.getResponseBody();
           os.write(response.getBytes());
           os.close();
       }
   }
   ...

   HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
   server.createContext("/applications/myapp", new MyHandler());
   server.setExecutor(null); // creates a default executor
   server.start();
   

В приведенном выше примере создается простой HttpServer, который использует поток вызывающего приложения для вызова метода handle() для входящих HTTP-запросов, направленных на порт 8000 и путь /applications/myapp/.

Класс HttpExchange инкапсулирует все, что необходимо приложению для обработки входящих запросов и генерации соответствующих ответов.

Регистрация обработчика в HttpServer создает объект HttpContext, и в возвращенном контексте можно добавить объекты Filter. Фильтры используются для автоматической предобработки и последующей обработки обменов перед передачей их обработчику обмена.

Для конфиденциальной информации можно использовать HttpsServer для обработки запросов "https", защищенных протоколами SSL или TLS. HttpsServer должен быть предоставлен объектом HttpsConfigurator, который содержит инициализированный объект SSLContext. HttpsConfigurator можно использовать для настройки наборов шифрования и других параметров работы SSL. Простой пример SSLContext можно создать следующим образом:

   char[] passphrase = "passphrase".toCharArray();
   KeyStore ks = KeyStore.getInstance("JKS");
   ks.load(new FileInputStream("testkeys"), passphrase);

   KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
   kmf.init(ks, passphrase);

   TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
   tmf.init(ks);

   SSLContext ssl = SSLContext.getInstance("TLS");
   ssl.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
   

В приведенном выше примере используется файл хранилища ключей "testkeys", созданный с помощью утилиты keytool, в качестве хранилища сертификатов для сертификатов клиента и сервера. Следующий код демонстрирует, как SSLContext используется в HttpsConfigurator, а также как SSLContext и HttpsConfigurator связываются с HttpsServer.

    server.setHttpsConfigurator (new HttpsConfigurator(sslContext) {
        public void configure (HttpsParameters params) {

        // get the remote address if needed
        InetSocketAddress remote = params.getClientAddress();

        SSLContext c = getSSLContext();

        // get the default parameters
        SSLParameters sslparams = c.getDefaultSSLParameters();
        if (remote.equals (...) ) {
            // modify the default set for client x
        }

        params.setSSLParameters(sslparams);
        // statement above could throw IAE if any params invalid.
        // eg. if app has a UI and parameters supplied by a user.

        }
    });
   
Since:
1.6
Пакет Описание
com.sun.net.httpserver.spi
Предоставляет интерфейс поставщика услуг с возможностью подмены реализации HTTP-сервера другими реализациями.
Класс Описание
Authenticator
Authenticator представляет реализацию механизма аутентификации HTTP.
Authenticator.Failure
Указывает на неудачную аутентификацию.
Authenticator.Result
Базовый класс для возвращаемого типа метода Authenticator.authenticate(HttpExchange).
Authenticator.Retry
Указывает, что аутентификацию необходимо повторить.
Authenticator.Success
Указывает, что аутентификация прошла успешно, и аутентифицированного пользователя принципал можно получить, вызвав метод Authenticator.Success.getPrincipal().
BasicAuthenticator
BasicAuthenticator предоставляет реализацию HTTP Basic аутентификации.
Filter
Фильтр, используемый для предобработки и постобработки входящих запросов.
Filter.Chain
Цепочка фильтров, связанная с HttpServer.
Headers
HTTP заголовки запроса и ответа представлены этим классом, который реализует интерфейс Map<String, List <String>>.
HttpContext
HttpContext представляет отображение корневого URI пути приложения на HttpHandler, который вызывается для обработки запросов, предназначенных для этого пути на связанном HttpServer или HttpsServer.
HttpExchange
Этот класс инкапсулирует полученный HTTP запрос и генерируемый ответ в одном обмене.
HttpHandler
Обработчик, вызываемый для обработки HTTP обменов.
HttpHandlers
Реализации HttpHandler, которые реализуют различные полезные обработчики, такие как обработчик статических ответов или условный обработчик, который дополняет один обработчик другим.
HttpPrincipal
Представляет пользователя, аутентифицированного с помощью HTTP Basic или Digest аутентификации.
HttpsConfigurator
Этот класс используется для настройки параметров https для каждого входящего https подключения на HttpsServer.
HttpServer
Этот класс реализует простой HTTP-сервер.
HttpsExchange
Этот класс инкапсулирует полученный HTTPS запрос и генерируемый ответ в одном обмене и определяет расширения для HttpExchange, которые специфичны для протокола HTTPS.
HttpsParameters
Представляет набор параметров для каждого https подключения, согласованного с клиентами.
HttpsServer
Этот класс является расширением HttpServer, который предоставляет поддержку HTTPS.
Request
Вид неизменяемого состояния запроса HTTP обмена.
SimpleFileServer
Простой HTTP файловый сервер и его компоненты (предназначены только для тестирования, разработки и отладки).
SimpleFileServer.OutputLevel
Описывает уровень вывода сообщений журнала, производимый сервером при обработке обменов.

© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API