Класс Filter
public abstract class Filter extends Object
HttpContext. Каждый Filter в цепочке вызывает следующий фильтр в собственной реализации doFilter(HttpExchange, Chain). Последний Filter в цепочке вызывает обработчик обмена приложения.
- Начиная с:
- 1.6
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static class |
Filter.Chain |
Цепочка фильтров, связанная с HttpServer. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Конструктор, предназначенный для вызова подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static Filter |
adaptRequest |
Возвращает фильтр предварительной обработки, который проверяет и, возможно, адаптирует состояние запроса. |
static Filter |
afterHandler |
Возвращает Filter последующей обработки с заданным описанием и операцией. |
static Filter |
beforeHandler |
Возвращает Filter предварительной обработки с заданным описанием и операцией. |
abstract String |
description() |
Возвращает краткое описание этого Filter. |
abstract void |
doFilter |
Запрашивает у этого фильтра предварительно или последовательно обработать заданный обмен. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект некоторому другому объекту. |
protected void |
finalize() |
Устарел и будет удален: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Приостанавливает текущий поток до пробуждения, обычно вследствие вызова notify или interrupt. |
final void |
wait |
Приостанавливает текущий поток до пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени. |
final void |
wait |
Приостанавливает текущий поток до пробуждения, обычно вследствие вызова notify или interrupt, либо до истечения заданного времени. |
Подробное описание конструкторов
Filter
protected Filter()
Подробное описание методов
doFilter
public abstract void doFilter(HttpExchange exchange, Filter.Chain chain) throws IOException
- Проверять или изменять заголовки запроса.
- Фильтровать тело запроса или ответа, создавая подходящие потоки фильтра и вызывая
HttpExchange.setStreams(InputStream, OutputStream). - Устанавливать объекты атрибутов в обмене, к которым могут обращаться другие фильтры или обработчик обмена.
- Выбрать одно из следующих действий:
- Вызвать следующий фильтр в цепочке, вызвав
Filter.Chain.doFilter(HttpExchange). - Прервать цепочку вызовов, не вызывая
Filter.Chain.doFilter(HttpExchange).
- Вызвать следующий фильтр в цепочке, вызвав
- Если выбран вариант 1, то к моменту возврата из doFilter() будут вызваны все последующие фильтры в цепочке, после чего заголовки ответа можно проверить или изменить.
- Если выбран вариант 2, этот фильтр должен использовать HttpExchange для отправки подходящего ответа.
- Параметры:
-
exchange—HttpExchange, который необходимо отфильтровать -
chain—Chain, позволяющий вызвать следующий фильтр - Вызывает исключение:
-
IOException— может быть выброшено любым модулем фильтра и, если перехвачено, должно быть выброшено повторно -
NullPointerException— если exchange или chain равныnull
description
public abstract String description()
Filter.- Возвращает:
String, описывающуюFilter
beforeHandler
public static Filter beforeHandler(String description, Consumer<HttpExchange> operation)
Filter предварительной обработки с заданным описанием и операцией. operation является фактической реализацией фильтра. Она выполняется для каждого HttpExchange перед вызовом следующего фильтра в цепочке или обработчика обмена (если это последний фильтр в цепочке). Исключения, выброшенные operation, не обрабатываются фильтром.
- Примечание API:
- Фильтр beforeHandler обычно используется для проверки или изменения состояния обмена до его обработки.
operationфильтра выполняется до вызоваFilter.Chain.doFilter(HttpExchange), то есть до выполнения последующих фильтров в цепочке и обработчика обмена. Предполагается, чтоoperationфильтра не будет обрабатывать запрос или отправлять заголовки ответа, поскольку обычно это делает обработчик обмена.Пример добавления заголовка ответа
"Foo"ко всем ответам:var filter = Filter.beforeHandler("Add response header Foo", e -> e.getResponseHeaders().set("Foo", "Bar")); httpContext.getFilters().add(filter); - Параметры:
-
description— строка, возвращаемая методомdescription() -
operation— операция возвращаемого фильтра - Возвращает:
- фильтр, операция которого вызывается до обработки обмена
- Вызывает исключение:
-
NullPointerException— если какой-либо аргумент равен null - Начиная с:
- 17
afterHandler
public static Filter afterHandler(String description, Consumer<HttpExchange> operation)
Filter последующей обработки с заданным описанием и операцией. operation является фактической реализацией фильтра. Она выполняется для каждого HttpExchange после вызова следующего фильтра в цепочке или обработчика обмена (если этот фильтр является последним в цепочке). Исключения, выброшенные operation, не обрабатываются фильтром.
- Примечание API:
- Фильтр afterHandler обычно используется для проверки состояния обмена, а не его изменения.
operationфильтра выполняется после вызоваFilter.Chain.doFilter(HttpExchange), то есть после выполнения всех последующих фильтров в цепочке и обработчика обмена. Предполагается, чтоoperationфильтра не будет обрабатывать обмен или отправлять заголовки ответа. Скорее всего, это приведет к сбою, поскольку обмен обычно уже обработан к моменту вызоваoperation. В частности, ответ может быть отправлен до выполненияoperationфильтра.Пример добавления фильтра, который регистрирует код ответа всех обменов:
var filter = Filter.afterHandler("Log response code", e -> log(e.getResponseCode()); httpContext.getFilters().add(filter);Пример добавления последовательности фильтров afterHandler в контекст:
Операции фильтров вызываются в порядке, обратном порядку добавления фильтров в список фильтров контекста.var a1Set = Filter.afterHandler("Set a1", e -> e.setAttribute("a1", "some value")); var a1Get = Filter.afterHandler("Get a1", e -> doSomething(e.getAttribute("a1"))); httpContext.getFilters().addAll(List.of(a1Get, a1Set));Операция
a1Getбудет вызвана после операцииa1Set, посколькуa1Getбыл добавлен передa1Set. - Параметры:
-
description— строка, возвращаемая методомdescription() -
operation— операция возвращаемого фильтра - Возвращает:
- фильтр, операция которого вызывается после обработки обмена
- Вызывает исключение:
-
NullPointerException— если какой-либо аргумент равен null - Начиная с:
- 17
adaptRequest
public static Filter adaptRequest(String description, UnaryOperator<Request> requestOperator)
Request, возвращаемое requestOperator, становится эффективным состоянием запроса обмена. Оно выполняется для каждого HttpExchange перед вызовом следующего фильтра в цепочке или обработчика обмена (если это последний фильтр в цепочке). Исключения, выброшенные requestOperator, не обрабатываются фильтром.- Примечание API:
- При вызове возвращаемого фильтра он сначала вызывает
requestOperatorс заданным обменом,ex, чтобы получить адаптированное состояние запроса. Затем он вызывает следующий фильтр в цепочке или обработчик обмена, передавая обмен, эквивалентныйex, в котором адаптированное состояние запроса задано как эффективное состояние запроса.Пример добавления заголовка запроса
"Foo"ко всем запросам:var filter = Filter.adaptRequest("Add Foo header", r -> r.with("Foo", List.of("Bar"))); httpContext.getFilters().add(filter); - Параметры:
-
description— строка, возвращаемая методомdescription() -
requestOperator— оператор запроса - Возвращает:
- фильтр, адаптирующий состояние запроса до обработки обмена
- Вызывает исключение:
-
NullPointerException— если какой-либо аргумент равен null - Начиная с:
- 18
© 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.