Обработка HTTP-запроса в классе HttpServlet осуществляется путем переопределения одного из методов doGet, doPost, doPut, doDelete, doHead, doOptions, doTrace или service.
Жизненный цикл обработки запроса:
init() (один раз за все время жизни сервлета) и помещает его в пул.HttpServletRequest и HttpServletResponse, инкапсулирующие данные запроса и предоставляющие методы для формирования ответа.service(HttpServletRequest req, HttpServletResponse resp) сервлета.service определяет тип HTTP-метода (GET, POST и т.д.) и делегирует обработку соответствующему методу do<Method> (doGet, doPost и т.д.), передавая им объекты запроса и ответа.do<Method> для реализации специфической логики обработки запроса.do<Method> формирует ответ, записывая данные в HttpServletResponse.service, контейнер отправляет сформированный ответ клиенту.destroy() для освобождения ресурсов.Пример переопределения doGet:
java
Таблица с основными методами do<Method> и их назначением:
| Метод | Назначение |
|---|---|
doGet | Обработка GET-запросов (получение данных, idempotentные операции). |
doPost | Обработка POST-запросов (отправка данных для обработки, создание ресурсов). |
doPut | Обработка PUT-запросов (обновление ресурсов). |
doDelete | Обработка DELETE-запросов (удаление ресурсов). |
doHead | Обработка HEAD-запросов (получение только заголовков ответа). |
doOptions | Обработка OPTIONS-запросов (получение информации о доступных методах). |
doTrace | Обработка TRACE-запросов (отладка, эхо запроса). |
Переопределение метода service позволяет полностью переопределить логику диспетчеризации запросов, но обычно переопределяют специфичные do<Method>.