Жизненный цикл
Жизненный цикл любого сервлета состоит из 4 этапов:
- Инициализация, которая происходит при вызове метода init()
- Обработка клиентского запроса после вызова метода service()
- Уничтожение сервлета с помощью вызова метода destroy()
- Полное уничтожение сервлета сборщиком мусора Java (Garbage Collector).
Метод init()
Данный метод вызывается только один раз при создании сервлета.
Обычно создание происходит в момент перехода по ссылке (URL) на страницу, работу которой обеспечивает определенный сервлет. Это может быть изменено и создание может происходить при запуске сервера.
После создания сервлета, каждый запрос клиента приводит к созданию нового потока, который работает с методами doGet или doPost, в зависимости от самого запроса.
Метод service()
Данный метод является основным методом, который и содержит саму логику работы сервлета. Он вызывается для обработки полученного запроса и передачи ответа HTTP-клиенту.
При получении запроса, сервер создает новый поток, который вызывает метод service. Данный метод проверяет тип запроса (POST, GET и т.д.) и вызывает соответствующий метод (doPost, doGet и т.д.).
Метод destroy()
Данный метод вызывается после того, как сервлет выполнил свои задачи. Используется, например, для таких задач, как запись данных в cookie, закрытие соединения к базе данных (далее – БД) и т.д.
Схематически, жизненный цикл сервлета можно представить следующим образом:
После получения запроса, для обработки которого необходим определенный сервлет, происходит его инициализация (методinit()). После этого, происходит обработка данного запроса (service()). И, в конце жизненного цикла сервлета, происходит вызов метода destroy().