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