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