Spec-Zone.ru › OpenJDK 27

Класс SimpleFileServer

java.lang.Object
com.sun.net.httpserver.SimpleFileServer
public final class SimpleFileServer extends Object
Простой HTTP-файловый сервер и его компоненты (предназначены только для тестирования, разработки и отладки).

Простой файловый сервер состоит из трёх компонентов:

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

Простой файловый сервер

Статический фабричный метод createFileServer возвращает HttpServer, представляющий собой простой готовый к использованию файловый сервер. Сервер поставляется с начальным обработчиком, который обслуживает файлы из заданного каталога (и его подкаталогов). Уровень вывода определяет, какие сообщения журнала (если таковые имеются) выводятся в System.out.

Пример простого файлового сервера:

   var addr = new InetSocketAddress(8080);
   var server = SimpleFileServer.createFileServer(addr, Path.of("/some/path"), OutputLevel.INFO);
   server.start();

Обработчик файлов

Статический фабричный метод createFileHandler возвращает HttpHandler, обслуживающий файлы и списки каталогов. Обработчик поддерживает только методы запросов HEAD и GET; для обработки других методов запросов можно добавить к серверу дополнительные обработчики или дополнить обработчик файлов, составив единый обработчик с помощью HttpHandlers.handleOrElse(Predicate, HttpHandler, HttpHandler).

Пример составления единого обработчика:

   var handler = HttpHandlers.handleOrElse(
       (req) -> req.getRequestMethod().equals("PUT"),
       (exchange) -> {
           // validate and handle PUT request
       },
       SimpleFileServer.createFileHandler(Path.of("/some/path")))
   );

Фильтр вывода

Статический фабричный метод createOutputFilter возвращает post-processing filter, выводящий сообщения журнала об обменах, обрабатываемых сервером. Формат вывода задаётся значением outputLevel.

Пример фильтра вывода:

   var filter = SimpleFileServer.createOutputFilter(System.out, OutputLevel.VERBOSE);
   var server = HttpServer.create(new InetSocketAddress(8080), 10, "/some/path/", new SomeHandler(), filter);
   server.start();

Инструмент jwebserver

Простая реализация HTTP-файлового сервера доступна с помощью инструмента jwebserver.

Руководства по инструментам:
jwebserver
Начиная с версии:
18

Краткое описание вложенных классов

Модификатор и тип Класс Описание
static enum  SimpleFileServer.OutputLevel
Описывает уровень вывода сообщений журнала, формируемых сервером при обработке обменов.

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

Модификатор и тип Метод Описание
static HttpHandler createFileHandler(Path rootDirectory)
Создаёт обработчик файлов, обслуживающий файлы из заданного каталога (и его подкаталогов).
static HttpServer createFileServer(InetSocketAddress addr, Path rootDirectory, SimpleFileServer.OutputLevel outputLevel)
Создаёт файловый сервер, обслуживающий файлы из заданного пути.
static Filter createOutputFilter(OutputStream out, SimpleFileServer.OutputLevel outputLevel)
Создаёт фильтр постобработки, выводящий сообщения журнала об обменах.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Приостанавливает текущий поток до пробуждения, обычно в результате вызова notify или прерывания.
final void wait(long timeoutMillis)
Приостанавливает текущий поток до пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает текущий поток до пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени.

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

createFileServer

public static HttpServer createFileServer(InetSocketAddress addr, Path rootDirectory, SimpleFileServer.OutputLevel outputLevel)
Создаёт файловый сервер, обслуживающий файлы из заданного пути.

Сервер настраивается с начальным контекстом, сопоставляющим URI path с обработчиком файлов. Обработчик файлов создаётся так, как если бы был вызван метод createFileHandler(rootDirectory), и связывается с контекстом, созданным так, как если бы был вызван метод createContext("/"). Возвращённый сервер не запущен.

Можно задать уровень вывода для печати сообщений журнала об обменах, обрабатываемых сервером. Сообщения журнала (если таковые имеются) выводятся в System.out. Если задано значение OutputLevel.NONE, сообщения журнала не выводятся.

Параметры:
addr — адрес для прослушивания
rootDirectory — корневой каталог для обслуживания; должен быть абсолютным путём
outputLevel — уровень вывода сообщений журнала
Возвращает:
HttpServer
Исключения:
IllegalArgumentException — если корневой каталог не существует, путь не является абсолютным, не указывает на каталог или каталог недоступен для чтения
UncheckedIOException — если произошла ошибка ввода-вывода
NullPointerException — если любой аргумент равен null

createFileHandler

public static HttpHandler createFileHandler(Path rootDirectory)
Создаёт обработчик файлов, обслуживающий файлы из заданного каталога (и его подкаталогов).

Обработчик файлов разрешает URI запроса относительно заданного пути rootDirectory, чтобы определить путь p в связанной файловой системе, для которого нужно сформировать ответ. Если путь p указывает на каталог, ответ содержит список каталога, отформатированный в HTML, в теле ответа. Если путь p указывает на файл, ответ содержит заголовок «Content-Type», значение которого определяется на основе наиболее вероятного типа содержимого, полученного вызовом getContentTypeFor для общесистемного объекта mimeTable, а также содержимое файла в теле ответа.

Обработчик поддерживает запросы только с методом HEAD или GET; для запросов с любым другим методом он возвращает код ответа 405.

Параметры:
rootDirectory — корневой каталог для обслуживания; должен быть абсолютным путём
Возвращает:
обработчик файлов
Исключения:
IllegalArgumentException — если rootDirectory не существует, путь не является абсолютным, не указывает на каталог или каталог недоступен для чтения
NullPointerException — если аргумент равен null

createOutputFilter

public static Filter createOutputFilter(OutputStream out, SimpleFileServer.OutputLevel outputLevel)
Создаёт фильтр постобработки, выводящий сообщения журнала об обменах. Сообщения журнала выводятся в заданный OutputStream с кодировкой UTF-8.
Примечание API:
Чтобы не выводить сообщения журнала, рекомендуется не использовать фильтр.
Параметры:
out — поток для вывода
outputLevel — уровень вывода
Возвращает:
фильтр постобработки
Исключения:
IllegalArgumentException — если задано значение OutputLevel.NONE
NullPointerException — если любой аргумент равен null

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, 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.

Spec-Zone.ru

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