Пакет com.sun.net.httpserver
Программисты должны реализовать интерфейс 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-обменов. |
| HttpPrincipal | Представляет пользователя, аутентифицированного с помощью аутентификации HTTP Basic или Digest. |
| HttpsConfigurator | Этот класс используется для настройки параметров https для каждого входящего https-соединения на HttpsServer. |
| HttpServer | Этот класс реализует простой HTTP-сервер. |
| HttpsExchange | Этот класс инкапсулирует полученный HTTPS-запрос и ответ, который необходимо сгенерировать в одном обмене, и определяет расширения HttpExchange, специфичные для протокола HTTPS. |
| HttpsParameters | Представляет набор параметров для каждого https-соединения, согласованного с клиентами. |
| HttpsServer | Этот класс является расширением HttpServer, который предоставляет поддержку HTTPS. |
© 1993, 2021, 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/17/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html