junior
Расскажите об этапах жизненного цикла JSP
Жизненный цикл JSP управляется контейнером и состоит из семи фаз. Первые три происходят при первом обращении (или при изменении JSP-файла), остальные — при каждом запросе.
| Фаза | Описание | Когда |
|---|---|---|
| Translation | Парсинг JSP-файла, генерация Java-кода сервлета | При первом обращении / изменении файла |
| Compilation | Компиляция сгенерированного .java в .class |
При первом обращении / изменении файла |
| Class Loading | Загрузка скомпилированного класса в JVM | При первом обращении / изменении файла |
| Instantiation | Создание экземпляра класса через конструктор без параметров | Один раз |
| Initialization | Вызов jspInit() с параметрами из web.xml |
Один раз |
| Request Processing | Вызов _jspService() для каждого запроса в отдельном потоке |
Многократно |
| Destroy | Вызов jspDestroy() при остановке приложения |
Один раз |
Как и сервлеты, JSP поддерживает ленивую загрузку (по первому запросу) и eager-загрузку (через load-on-startup). При ленивой загрузке первый пользователь ожидает трансляцию и компиляцию, что может занять несколько секунд для сложных страниц.
На собеседовании: ключевое — JSP жизненный цикл аналогичен сервлету с двумя дополнительными фазами: Translation и Compilation. Это потому что JSP — шаблон, который компилируется в сервлет.