Пакет 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 | Указывает, что аутентификация прошла успешно, и аутентифицированного пользователя principal можно получить, вызвав метод 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, 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/package-summary.html