Java Сервер HTTP
Проект сборка-b92

Пакет com.sun.net.httpserver

Обеспечивает простой высокий уровень API сервера Http, который может использоваться, чтобы создать встроенные серверы HTTP.

См.: Описание

Пакет com.sun.net.httpserver Описание

Обеспечивает простой высокий уровень API сервера Http, который может использоваться, чтобы создать встроенные серверы HTTP. И "http" и "https" поддерживаются. API обеспечивает частичную реализацию RFC 2616 (HTTP 1.1) и RFC 2818 (HTTP по TLS). Любая функциональность HTTP, не обеспеченная этим API, может быть реализована кодом программы, используя API.

Программисты должны реализовать HttpHandler интерфейс. Этот интерфейс обеспечивает обратный вызов, который вызывается, чтобы обработать входящие запросы от клиентов. Запрос HTTP и его ответ известны как обмен. Обмены HTTP представляются HttpExchange class. HttpServer class используется, чтобы прислушаться к входящим соединениям 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));
   server.createContext("/applications/myapp", new MyHandler());
   server.setExecutor(null); // creates a default executor
   server.start();
   

Пример выше создает простой HttpServer, который использует поток вызывающего приложения, чтобы вызвать дескриптор () метод для того, чтобы поступить запросы http, предписанные портировать 8000, и к пути/applications/myapp/.

HttpExchange class инкапсулирует все, что приложение должно обработать входящие запросы и генерировать соответствующие ответы.

Регистрация обработчика с HttpServer создает a HttpContext объект и Filter объекты могут быть добавлены к возвращенному контексту. Фильтры используются, чтобы выполнить автоматический пред-и последующая обработка обменов прежде, чем их передадут к обработчику обмена.

Для уязвимой информации, a HttpsServer может использоваться, чтобы обработать запросы "https", защищенные протоколами TLS или SSL. HttpsServer нужно предоставить a 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);
   

В примере выше, keystore файл, названный "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
Java Сервер HTTP
Проект сборка-b92


Авторское право © 2005, 2013, Oracle и/или его филиалы. Все права защищены.

Проект сборка-b92