Пакет 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.
}
});
- Начиная с:
- 1.6
| Класс | Описание |
|---|---|
| Authenticator | Authenticator представляет реализацию механизма аутентификации HTTP. |
| Authenticator.Failure | Указывает на сбой аутентификации. |
| Authenticator.Result | Базовый класс для типа возвращаемого значения метода Authenticator.authenticate(HttpExchange). |
| Authenticator.Retry | Указывает, что аутентификацию необходимо повторить. |
| Authenticator.Success | Указывает, что аутентификация прошла успешно, и субъект аутентифицированного пользователя principal можно получить, вызвав Authenticator.Success.getPrincipal(). |
| BasicAuthenticator | BasicAuthenticator предоставляет реализацию базовой аутентификации HTTP. |
| Filter | Фильтр для предварительной и последующей обработки входящих запросов. |
| Filter.Chain | Цепочка фильтров, связанная с HttpServer. |
| Headers | |
| HttpContext | HttpContext представляет сопоставление корневого пути URI приложения с HttpHandler, который вызывается для обработки запросов, предназначенных для этого пути на связанном HttpServer или HttpsServer. |
| HttpExchange | Этот класс инкапсулирует полученный HTTP-запрос и формируемый ответ в рамках одного обмена данными. |
| HttpHandler | Обработчик, вызываемый для обработки обменов HTTP. |
| HttpHandlers | Реализации HttpHandler, реализующие различные полезные обработчики, например обработчик статического ответа или условный обработчик, дополняющий один обработчик другим. |
| HttpPrincipal | Представляет пользователя, прошедшего базовую или дайджест-аутентификацию HTTP. |
| HttpsConfigurator | Этот класс используется для настройки параметров https для каждого входящего https-соединения на HttpsServer. |
| HttpServer | Этот класс реализует простой HTTP-сервер. |
| HttpsExchange | Этот класс инкапсулирует полученный HTTPS-запрос и формируемый ответ в рамках одного обмена данными и определяет расширения HttpExchange, относящиеся к протоколу HTTPS. |
| HttpsParameters | Представляет набор параметров для каждого https-соединения, согласованного с клиентами. |
| HttpsServer | Этот класс является расширением HttpServer, обеспечивающим поддержку HTTPS. |
| Request | Представление неизменяемого состояния запроса в рамках обмена HTTP. |
| SimpleFileServer | Простой файловый HTTP-сервер и его компоненты (предназначенные только для тестирования, разработки и отладки). |
| SimpleFileServer.OutputLevel | Описывает уровень выводимых сервером сообщений журнала при обработке обменов данными. |
© 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/package-summary.html