Spec-Zone.ru › OpenJDK 25

Класс HttpHandlers

java.lang.Object
com.sun.net.httpserver.HttpHandlers
public final class HttpHandlers extends Object
Реализации HttpHandler, реализующие различные полезные обработчики, например обработчик статического ответа или условный обработчик, дополняющий один обработчик другим.

Фабричный метод of(int, Headers, String) позволяет создавать обработчики с заранее заданным состоянием статического ответа. Например, jsonHandler, который всегда возвращает 200 с одним и тем же JSON:

   HttpHandlers.of(200,
                   Headers.of("Content-Type", "application/json"),
                   Files.readString(Path.of("some.json")));
или notAllowedHandler, который всегда отвечает кодом 405 — Method Not Allowed и указывает набор разрешённых методов:
   HttpHandlers.of(405, Headers.of("Allow", "GET"), "");

Функциональность обработчика можно расширить или улучшить с помощью handleOrElse, позволяющего дополнить заданный обработчик. Например, дополнив jsonHandler обработчиком notAllowedHandler:

   Predicate<Request> IS_GET = r -> r.getRequestMethod().equals("GET");
   var handler = HttpHandlers.handleOrElse(IS_GET, jsonHandler, notAllowedHandler);
Приведённый выше handler handleOrElse реализует конструкцию, подобную if-else: если метод запроса — "GET", обработка обмена передаётся jsonHandler, в противном случае обработка обмена передаётся notAllowedHandler.
Начиная с:
18

Краткое описание методов

Модификатор и тип Метод Описание
static HttpHandler handleOrElse(Predicate<Request> handlerTest, HttpHandler handler, HttpHandler fallbackHandler)
Дополняет условный HttpHandler другим обработчиком.
static HttpHandler of(int statusCode, Headers headers, String body)
Возвращает HttpHandler, отправляющий ответ, состоящий из заданных statusCode, headers и body.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

handleOrElse

public static HttpHandler handleOrElse(Predicate<Request> handlerTest, HttpHandler handler, HttpHandler fallbackHandler)
Дополняет условный HttpHandler другим обработчиком.

Этот метод создаёт обработчик handleOrElse — конструкцию, подобную if-else. Обмены, запросы которых соответствуют предикату handlerTest, обрабатываются handler. Все остальные обмены обрабатываются fallbackHandler.

Пример вложенного обработчика handleOrElse:

   Predicate<Request> IS_GET = r -> r.getRequestMethod().equals("GET");
   Predicate<Request> WANTS_DIGEST =  r -> r.getRequestHeaders().containsKey("Want-Digest");

   var h1 = new SomeHandler();
   var h2 = HttpHandlers.handleOrElse(IS_GET, new SomeGetHandler(), h1);
   var h3 = HttpHandlers.handleOrElse(WANTS_DIGEST.and(IS_GET), new SomeDigestHandler(), h2);
Обработчик handleOrElse h3 передаёт обработку обмена SomeDigestHandler, если в заголовке запроса присутствует "Want-Digest" и метод запроса — GET; в противном случае он передаёт обработку обмена обработчику h2. В свою очередь, обработчик handleOrElse h2 передаёт обработку обмена SomeGetHandler, если метод запроса — GET; в противном случае он передаёт обработку обмена обработчику h1. Обработчик h1 обрабатывает все обмены, которые ранее не были переданы ни SomeGetHandler, ни SomeDigestHandler.
Параметры:
handlerTest — предикат запроса
handler — условный обработчик
fallbackHandler — резервный обработчик
Возвращает:
обработчик
Вызывает исключение:
NullPointerException — если какой-либо аргумент равен null

of

public static HttpHandler of(int statusCode, Headers headers, String body)
Возвращает HttpHandler, отправляющий ответ, состоящий из заданных statusCode, headers и body.

Этот метод создаёт обработчик, который считывает и отбрасывает тело запроса, прежде чем задаёт состояние ответа и отправляет ответ.

headers — это фактические заголовки ответа. Байты тела ответа — это последовательность байтов UTF-8, закодированная в body. Заголовки ответа отправляются с заданным statusCode и длиной байтов тела (или -1, если тело пусто). Затем байты тела отправляются как тело ответа, если только тело не пусто; в этом случае тело ответа не отправляется.

Параметры:
statusCode — код состояния ответа
headers — заголовки
body — строка тела ответа
Возвращает:
обработчик
Вызывает исключение:
IllegalArgumentException — если statusCode не является положительным целым числом из 3 цифр согласно разделу 6.1.1 RFC 2616
NullPointerException — если headers или body равны null

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/jdk.httpserver/com/sun/net/httpserver/HttpHandlers.html

Spec-Zone.ru

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