Жизненный цикл сервлета управляется контейнером сервлетов. Он проходит следующие этапы:
Class.newInstance(). Сервлеты являются синглтонами в контексте приложения.init(ServletConfig config). Этот метод вызывается только один раз за весь жизненный цикл сервлета. Он используется для выполнения задач инициализации, таких как чтение параметров конфигурации, создание подключений к базе данных и т.д.
java
service(ServletRequest request, ServletResponse response). Метод service() обычно делегирует обработку запроса другим специфичным методам, таким как doGet(), doPost(), doPut(), doDelete() в зависимости от типа HTTP-запроса.
java
destroy(). Этот метод вызывается только один раз перед уничтожением экземпляра сервлета. Он используется для освобождения ресурсов, таких как закрытие подключений к базе данных, очистка кэша и т.д.
java
Кратко этапы можно представить в виде таблицы:
| Этап | Метод, вызываемый контейнером | Описание | Вызывается |
|---|---|---|---|
| Загрузка класса | - | Класс сервлета загружается в память | Один раз |
| Создание экземпляра | Class.newInstance() | Создается экземпляр сервлета | Один раз |
| Инициализация | init(ServletConfig config) | Выполнение инициализационных задач | Один раз |
| Обработка запросов | service(...), doGet(...), doPost(...) и т.д. | Обработка входящих клиентских запросов | Много раз |
| Уничтожение | destroy() | Освобождение ресурсов перед удалением экземпляра сервлета | Один раз |