Spec-Zone.ru › OpenJDK 25

Класс 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

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

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, 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/SimpleFileServer.html

Spec-Zone.ru

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