Пакет com.sun.net.httpserver
Основные компоненты:
- класс
HttpExchange, описывающий пару запроса и ответа, - интерфейс
HttpHandlerдля обработки входящих запросов, а также классHttpHandlers, предоставляющий полезные реализации обработчиков, - класс
HttpContext, сопоставляющий путь URI сHttpHandler, - класс
HttpServerдля прослушивания подключений и перенаправления запросов обработчикам, - класс
Filter, позволяющий выполнять предобработку и последующую обработку запросов.
Класс SimpleFileServer предлагает простой HTTP-только файловый сервер (предназначен только для тестирования, разработки и отладки). Реализация по умолчанию предоставляется через инструмент jwebserver.
Разработчики должны реализовать интерфейс HttpHandler. Этот интерфейс предоставляет обратный вызов, который вызывается для обработки входящих запросов от клиентов. HTTP-запрос и его ответ известны как обмен. HTTP-обмены представлены классом HttpExchange. Класс HttpServer используется для прослушивания входящих TCP-соединений и перенаправления запросов на этих соединениях обработчикам, которые были зарегистрированы в сервере.
Ниже представлен пример минимального HTTP-сервера:
class MyHandler implements HttpHandler {
public void handle(HttpExchange t) throws IOException {
InputStream is = t.getRequestBody();
read(is); // .. read the request body
String response = "This is the response";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
...
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/applications/myapp", new MyHandler());
server.setExecutor(null); // creates a default executor
server.start();
В приведенном выше примере создается простой HttpServer, который использует поток вызывающего приложения для вызова метода handle() для входящих HTTP-запросов, направленных на порт 8000 и путь /applications/myapp/.
Класс HttpExchange инкапсулирует все, что необходимо приложению для обработки входящих запросов и генерации соответствующих ответов.
Регистрация обработчика в HttpServer создает объект HttpContext, и в возвращенном контексте можно добавить объекты Filter. Фильтры используются для автоматической предобработки и последующей обработки обменов перед передачей их обработчику обмена.
Для конфиденциальной информации можно использовать HttpsServer для обработки запросов "https", защищенных протоколами SSL или TLS. HttpsServer должен быть предоставлен объектом HttpsConfigurator, который содержит инициализированный объект SSLContext. HttpsConfigurator можно использовать для настройки наборов шифрования и других параметров работы SSL. Простой пример SSLContext можно создать следующим образом:
char[] passphrase = "passphrase".toCharArray();
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream("testkeys"), passphrase);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, passphrase);
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
tmf.init(ks);
SSLContext ssl = SSLContext.getInstance("TLS");
ssl.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
В приведенном выше примере используется файл хранилища ключей "testkeys", созданный с помощью утилиты keytool, в качестве хранилища сертификатов для сертификатов клиента и сервера. Следующий код демонстрирует, как SSLContext используется в HttpsConfigurator, а также как SSLContext и HttpsConfigurator связываются с HttpsServer.
server.setHttpsConfigurator (new HttpsConfigurator(sslContext) {
public void configure (HttpsParameters params) {
// get the remote address if needed
InetSocketAddress remote = params.getClientAddress();
SSLContext c = getSSLContext();
// get the default parameters
SSLParameters sslparams = c.getDefaultSSLParameters();
if (remote.equals (...) ) {
// modify the default set for client x
}
params.setSSLParameters(sslparams);
// statement above could throw IAE if any params invalid.
// eg. if app has a UI and parameters supplied by a user.
}
});
- Since:
- 1.6
| Класс | Описание |
|---|---|
| Authenticator | Authenticator представляет реализацию механизма аутентификации HTTP. |
| Authenticator.Failure | Указывает на неудачную аутентификацию. |
| Authenticator.Result | Базовый класс для возвращаемого типа метода Authenticator.authenticate(HttpExchange). |
| Authenticator.Retry | Указывает, что аутентификацию необходимо повторить. |
| Authenticator.Success | Указывает, что аутентификация прошла успешно, и аутентифицированного пользователя принципал можно получить, вызвав метод Authenticator.Success.getPrincipal(). |
| BasicAuthenticator | BasicAuthenticator предоставляет реализацию HTTP Basic аутентификации. |
| Filter | Фильтр, используемый для предобработки и постобработки входящих запросов. |
| Filter.Chain | Цепочка фильтров, связанная с HttpServer. |
| Headers | |
| HttpContext | HttpContext представляет отображение корневого URI пути приложения на HttpHandler, который вызывается для обработки запросов, предназначенных для этого пути на связанном HttpServer или HttpsServer. |
| HttpExchange | Этот класс инкапсулирует полученный HTTP запрос и генерируемый ответ в одном обмене. |
| HttpHandler | Обработчик, вызываемый для обработки HTTP обменов. |
| HttpHandlers | Реализации HttpHandler, которые реализуют различные полезные обработчики, такие как обработчик статических ответов или условный обработчик, который дополняет один обработчик другим. |
| HttpPrincipal | Представляет пользователя, аутентифицированного с помощью HTTP Basic или Digest аутентификации. |
| HttpsConfigurator | Этот класс используется для настройки параметров https для каждого входящего https подключения на HttpsServer. |
| HttpServer | Этот класс реализует простой HTTP-сервер. |
| HttpsExchange | Этот класс инкапсулирует полученный HTTPS запрос и генерируемый ответ в одном обмене и определяет расширения для HttpExchange, которые специфичны для протокола HTTPS. |
| HttpsParameters | Представляет набор параметров для каждого https подключения, согласованного с клиентами. |
| HttpsServer | Этот класс является расширением HttpServer, который предоставляет поддержку HTTPS. |
| Request | Вид неизменяемого состояния запроса HTTP обмена. |
| SimpleFileServer | Простой HTTP файловый сервер и его компоненты (предназначены только для тестирования, разработки и отладки). |
| SimpleFileServer.OutputLevel | Описывает уровень вывода сообщений журнала, производимый сервером при обработке обменов. |
© 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/package-summary.html