Gymterview
junior

Как обрабатываются JSP страницы от запроса к серверу до ответа пользователю

Обработка JSP-страницы включает трансляцию в сервлет, компиляцию и выполнение. При первом запросе происходят все три этапа, при последующих — только выполнение (кэширование).

Последовательность обработки

  1. Клиент отправляет HTTP-запрос (например, GET /page.jsp)
  2. Контейнер находит JSP-файл и проверяет, есть ли скомпилированный сервлет
  3. Если нет — JSP транслируется в .java файл (Jasper-компилятор)
  4. Сгенерированный Java-класс компилируется в .class (байт-код)
  5. Класс загружается в JVM, создаётся экземпляр сервлета
  6. Вызывается jspInit() (инициализация)
  7. Вызывается _jspService() — генерируется HTML-ответ
  8. HTML-ответ отправляется клиенту

При повторном запросе контейнер проверяет, изменился ли JSP-файл (по timestamp). Если нет — используется уже скомпилированный сервлет (шаги 3-6 пропускаются). Если да — происходит повторная трансляция и компиляция (горячее развёртывание).

На собеседовании: акцент на том, что JSP — это «синтаксический сахар» для сервлетов. Под капотом каждая JSP становится обычным сервлетом. Частая ошибка — не упомянуть кэширование скомпилированного класса.