Spec-Zone.ru › OpenJDK 21

Класс 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
SecurityException - если установлен менеджер безопасности и рекурсивное FilePermission "read" корневого каталога запрещено

createFileHandler

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

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

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

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

createOutputFilter

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

© 1993, 2023, 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/21/docs/api/jdk.httpserver/com/sun/net/httpserver/SimpleFileServer.html

Spec-Zone.ru

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