Жизненный цикл JSP управляется контейнером сервлетов и состоит из следующих этапов:
Трансляция (Translation): JSP файл преобразуется в Java-сервлет класс. Этот этап происходит при первом обращении к JSP странице или при перезапуске приложения. На этом этапе генерируется исходный код сервлета.
Компиляция (Compilation): Сгенерированный Java-файл сервлета компилируется в байт-код (.class файл).
Загрузка и Инстанцирование (Loading and Instantiation): Класс сервлета загружается в JVM, и создается его экземпляр.
Инициализация (Initialization): Контейнер вызывает метод jspInit() экземпляра сервлета. Этот метод вызывается только один раз, когда JSP страница загружается в память. Здесь можно выполнить любые необходимые настройки или инициализацию.
java
Обработка запросов (Request Processing): При каждом запросе к JSP странице контейнер вызывает метод _jspService(). Этот метод генерируется автоматически во время трансляции и отвечает за выполнение содержимого JSP страницы (включая теги scriplet, expression, declaration) и создание ответа.
java
Важно отметить, что метод _jspService не должен быть переопределен разработчиком в JSP (в отличие от методов doGet/doPost в обычных сервлетах).
Уничтожение (Destruction): Когда контейнер сервлетов выгружает JSP страницу из памяти (например, при остановке приложения или перезапуске сервера), вызывается метод jspDestroy(). Этот метод также вызывается только один раз и используется для освобождения ресурсов.
java
Вот таблица, обобщающая ключевые методы жизненного цикла:
| Метод | Вызывается когда... | Вызывается сколько раз... | Purpose |
|---|---|---|---|
jspInit() | JSP страница загружена и инстанцирована | Один раз | Инициализация |
_jspService() | При каждом запросе к JSP странице | Несколько раз | Обработка запроса и генерация ответа |
jspDestroy() | JSP страница выгружается из памяти | Один раз | Освобождение ресурсов |