Веб-серверу требуется механизм JSP, который представляет собой контейнер для обработки страниц JSP. Контейнер отвечает за перехват запросов к страницам JSP. В этом руководстве используется Apache со встроенным контейнером JSP для поддержки разработки JSP.
Контейнер JSP взаимодействует с веб-сервером, обеспечивая необходимую операционную среду и другие службы для нормальной работы JSP, а также может правильно идентифицировать специальные элементы, уникальные для веб-страниц JSP.
На следующем рисунке показано расположение контейнера JSP и файлов JSP в веб-приложении.
Следующие шаги показывают, как веб-сервер использует JSP для создания веб-страницы:
Как и любая другая обычная веб-страница, ваш браузер отправляет HTTP-запрос на сервер.
Веб-сервер распознает, что это запрос на веб-страницу JSP, и передает запрос механизму JSP. Это делается с помощью URL-адреса или файла .jsp.
Механизм JSP загружает файлы JSP с диска и преобразует их в сервлеты. Это преобразование просто преобразует весь текст шаблона в операторы println() и преобразует все элементы JSP в код Java.
Механизм JSP компилирует сервлет в исполняемый класс и передает исходный запрос механизму сервлетов.
Компонент веб-сервера вызовет механизм сервлетов, а затем загрузит и выполнит класс сервлета. Во время выполнения сервлет генерирует выходные данные в формате HTML, встраивает их в ответ HTTP и отправляет на веб-сервер.
Веб-сервер возвращает HTTP-ответ вашему браузеру в виде статической веб-страницы HTML.
В конечном итоге веб-браузеры обрабатывают динамически генерируемые HTML-страницы в ответе HTTP, как если бы они были статическими веб-страницами.
Упомянутые выше шаги можно представить на следующем рисунке:
В обычных обстоятельствах механизм JSP проверяет, существует ли уже сервлет, соответствующий файлу JSP, и проверяет, не является ли дата изменения файла JSP более ранней, чем дата изменения сервлета. Если дата изменения файла JSP раньше, чем дата изменения соответствующего сервлета, то контейнер может быть уверен, что файл JSP не был изменен и сервлет действителен. Это делает весь процесс более эффективным и быстрым, чем в других языках сценариев (например, PHP).
В общем, веб-страницы JSP — это еще один способ писать сервлеты, не становясь при этом экспертом по программированию на Java. За исключением этапа интерпретации, веб-страницу JSP можно рассматривать почти как обычный сервлет.