junior
Как обрабатываются JSP страницы от запроса к серверу до ответа пользователю
Обработка JSP-страницы включает трансляцию в сервлет, компиляцию и выполнение. При первом запросе происходят все три этапа, при последующих — только выполнение (кэширование).
Последовательность обработки
- Клиент отправляет HTTP-запрос (например,
GET /page.jsp) - Контейнер находит JSP-файл и проверяет, есть ли скомпилированный сервлет
- Если нет — JSP транслируется в
.javaфайл (Jasper-компилятор) - Сгенерированный Java-класс компилируется в
.class(байт-код) - Класс загружается в JVM, создаётся экземпляр сервлета
- Вызывается
jspInit()(инициализация) - Вызывается
_jspService()— генерируется HTML-ответ - HTML-ответ отправляется клиенту
При повторном запросе контейнер проверяет, изменился ли JSP-файл (по timestamp). Если нет — используется уже скомпилированный сервлет (шаги 3-6 пропускаются). Если да — происходит повторная трансляция и компиляция (горячее развёртывание).
На собеседовании: акцент на том, что JSP — это «синтаксический сахар» для сервлетов. Под капотом каждая JSP становится обычным сервлетом. Частая ошибка — не упомянуть кэширование скомпилированного класса.