Spec-Zone.ru › OpenJDK 24

Класс 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)
Создаёт фильтр постобработки, который выводит сообщения журнала об обменах.

Методы, объявленные в классе java.lang.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 - если корневой каталог не существует, не является абсолютным, не является каталогом или не читаемый
NullPointerException - если аргумент равен null

createOutputFilter

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

© 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://download.java.net/java/early_access/jdk24/docs/api/jdk.httpserver/com/sun/net/httpserver/SimpleFileServer.html

Spec-Zone.ru

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