HTTP сервлет поддерживает запросы клиента через метод service. Метод service поддерживает стандартные HTTP запросы клиента, отправляя каждый запрос соответствующему разработанному для обработки данного запроса методу. Например, метод service вызывает метод doGet показанный ранее в главе Простой сервлет.

Запросы и Ответы

В этой части обсуждаются объекты, которые представляют клиентский запрос (HttpServletRequest object) и сервлетный ответ (HttpServletResponse object). Эти объекты используются методом service и методами, которые вызывают метод service для обработки HTTP запросов.

Обработка GET и POST запросов

Методы, которым метод service передает управление HTTP запросов, включают:

  • doGet, для обработки GET, условный GET, и HEAD запросов;
  • doPost, для обработки POST запросов;
  • doPut, для обработке PUT запросов;
  • doDelete, для обработки DELETE запросов.

По умолчанию, эти методы возвращают BAD_REQUEST (ошибка 400). Ваш сервлет должен переопределить метод или методы, разработанные для обработки HTTP взаимодействий, которые поддерживают их. В этой части показано, как выполнять методы которые поддерживают самые основные HTTP запросы: GET и POST.

Метод service также вызывает метод doOptions, когда сервлет получает запрос OPTIONS (ОПЦИИ), и метод doTrace, когда сервлет получает запрос TRACE. По умолчанию метод doOptions автоматически определяет, какие опции HTTP поддерживаются, и возвращает эту информацию. По умолчанию метод doTrace объединяет ответ с сообщением, содержащим все заголовки, отправленные в запросе трассировки. Эти методы обычно не переопределяются.

Потоковый вывод

Сервлеты HTTP, как правило, поддерживают обработку нескольких клиентов одновременно. Если методы в Вашем сервлете, работающие на клиента, используют общие ресурсы, то вы должны либо:

  • Синхронизировать доступ к этому ресурсу, либо
  • Создать сервлет, который обслуживает только одного клиента в определенный момент времени.

Этот урок расскажет вам, как выполнить второй вариант. (Первый обсуждается в уроке о потоках.)

Описание сервлета

Вдобавок к обработке клиентских HTTP запросов, сервлеты также вынуждены поддерживать описание самих себя. Эта часть покажет вам получать описание, переопределяя метод getServletInfo, который поддерживает описание сервлета.