Баннер мобильный (1) Пройти тест

JSP

Глоссарий

20 октября 2023

Поделиться

Скопировано

Содержание

    Java Server Pages (JSP) — технология, позволяющая создавать веб-страницы и Java-приложения со статическим и динамическим содержимым. С ее помощью разработчик может встраивать код Java в обычную HTML-страницу, используя специальные JSP-теги. JavaServer Pages была разработана компанией Sun Microsystem в 1999 году как ответ на коммерчески успешную аналогичную технологию ASP, созданную компанией Microsoft. Сегодня JSP является одним из наиболее распространенных инструментов для создания динамических веб-страниц за счет своей кроссплатформенности, переносимости и легкой масштабируемости. 

    Что такое JSP

    Типичная веб-страница представляет собой статичный HTML-документ, который в полностью готовом виде хранится на сервере. При запросе пользователя сервер просто «отдает» их его браузеру, который и отображает конечный результат. Чтобы изменить статический контент веб-страницы, необходимо иметь к нему доступ на сервере. Данная технология имеет свои преимущества — в частности, такие страницы проще создавать (не нужно знать языки программирования), они менее требовательны к характеристикам сервера, быстрее загружаются и т.д. Вместе с тем статическое содержимое труднее редактировать, так как это приходится делать постранично, то есть менять его на каждой странице.

    Динамические веб-страницы работают иначе — они генерируются в ответ на запрос пользователя из готовых шаблонов, скриптов, файлов и т.д. Чтобы такой документ отобразился в веб-браузере, сервер должен не просто отдать в ответ на запрос готовое содержимое, а как бы собрать его из нужных частей, которые прописаны в HTML-коде. Такой подход существенно расширяет функциональность веб-приложений и делает их более адаптивными. Но при этом требует больших затрат серверных ресурсов и установки на ПК пользователя промежуточного ПО.

    Java Server Pages — технология, позволяющая объединить в одном веб-документе как статическое, так и динамическое содержимое. Первое представляет собой данные, размеченные в текстовых форматах HTML, SVG, WML, или XML. Динамическое содержимое конструируется JSP-элементами, а также с помощью JSP-тегов и скриптового языка Expression Language. Если проще, то эта технология позволяет разработчикам внедрять Java-код непосредственно в HTML-код, что работает существенно проще и быстрее, чем подгрузка динамических компонентов из отдельного файла.

    Как работает JSP Java

    Веб-страницы, созданные с применением технологии JSP, представляют собой HTML-текст с внедренными в него фрагментами кода Java. Когда пользователь отправляет серверу запрос к конкретной JSP-странице, тот ее обрабатывает, превращая в стандартный HTML-документ и присылает браузеру. В итоге пользователь видит перед собой обычную HTML-страницу.

    JSP-страницы, как и обычные статические, хранятся на веб-сервере, доступ пользователей к которому осуществляется по протоколу http (или защищенному https). Однако, для обработки таких документов на сервере должен быть установлен JSP-движок (JSP-контейнер). Это специальный программный модуль, который переводит JSP в Java, инициирует генерацию документа и т.д. Существует несколько таких JSP-движков, но все они работают примерно одинаково и реализуют одну и ту же спецификацию. Однако, при переносе документа между серверами могут понадобиться небольшие изменения в коде. 

    В обобщенном виде процесс обработки веб-сервером JSP-файла выглядит следующим образом.

    • Браузер пользователя посылает на веб-сервер HTTP-запрос, как в случае обычной HTML-страницы.
    • Сервер распознает, что запрос относится к JSP-странице, и отправляет его в JSP-движок (контейнер).
    • Контейнер, в свою очередь, загружает JSP-файл с диска сервера и превращает его в содержимое сервлета. Это простой процесс, в котором текстовая часть шаблона преобразуется в операторы println (), а JSP-компоненты становятся Java-кодом, который отвечает за динамическую реакцию страницы.
    • Далее JSP-движок компилирует сервлет в исполняемый класс и направляет пользовательский запрос уже в механизм сервлета, который загружает класс Servlet и исполняет его. В ходе этого сервлет выводит код страницы в формате HTML и перенаправляет его на веб-сервер.
    • Получив ответ от сервлета, сервер направляет HTTP-ответ браузеру пользователя как статический HTML-объект.
    • На конечном этапе браузер принимает ответ сервера и внутри него обрабатывает динамически генерируемую HTML-страницу аналогично обычному статическому веб-документу.

    Жизненный цикл JSP-страницы включает несколько этапов.

    • Перевод (трансляция). На этом этапе жизненного цикла JSP-контейнер переводит JSP-код документа в код Java. Этот процесс происходит автоматически на стороне сервера, который проверяет достоверность страницы и создает для нее сервлет — программный модуль, отвечающий за обработку запроса пользователя. 
    • Компиляция. Далее JSP-контейнер компилирует Java-код, то есть переводит его на бинарный машинный язык. Перед этим он проверяет необходимость выполнения процесса — она возникает, если страница до этого не компилировалась или была изменена с момента последней компиляции. Сама компиляция осуществляется в три этапа – сначала JSP-контейнер разбирает JSP-код страницы, затем превращает его в сервлет, а потом компилирует его.  
    • Загрузка и инициализация. JSP-контейнер загружает предварительно сгенерированный сервлет и создает экземпляр соответствующего класса. Затем он инициализирует экземпляр объекта, вызывая метод jspinit () перед обслуживанием запросов. Инициализация выполняется в большинстве случаев только один раз.
    • Выполнение. После всех подготовительных этапов JSP-движок начинает обработку запросов. Это осуществляется через сервлет, который вызывает метод _jspService() с двумя параметрами — на поступающие (запрошенные) и отправляемые данные. Для каждого запроса этот метод вызывается только один раз. 
    • Очистка. Этот этап — логическое завершение жизненного цикла JSP. Как только запрос обработан, JSP-контейнер удаляет JSP-код и готовится повторить цикл снова для следующего запроса. 

    Структура JSP-страницы

    Чтобы JSP-страница нормально работала, у нее должна быть соответствующая структура, включающая как стандартный текст, написанный на одном из языков разметки (HTML, XML и т.д.), так и интегрированные Java-компоненты. Интеграция последних осуществляется с помощью следующих инструментов:

    • специальных JSP-тегов <% и %>, которыми в общем HTML-коде обозначаются начало и конец кода, написанный на Java;
    • выражений скриптового языка Expression Language, которые позволяют веб-дизайнерам, не знающим сам язык Java, записывать его код непосредственно на странице и обеспечивать таким образом доступ к Java-компонентам.

     Рассмотрим простой пример структуры JSP-страницы:

    Пример простого веб-документа, написанного на JSP
    Пример JSP-кода. Источник

    В этом примере видна как стандартная часть документа, обозначенная HTML-тегами, так и JSP-фрагменты, выделенные тегами <% и %>.

    • Фрагмент <% String header = «Apache Tomcat»; %> задает переменную типа String под названием header.
    • Фрагмент <h2><%= header %></h2> задает конкретное значение переменной, определенной выше.
    • Фрагмент <p>Today <%= new java.util.Date() %></p> просто показывает текущую дату. 

    Загрузим этот файл на сервер, поместив в JSP-контейнер Tomcat. Запустив его и обратившись к приложению через адресную строку браузера, получим следующий результат:

    реализация JSP-кода из примера
    Конечный результат применения JSP 

    Чтобы начать программировать веб-приложения с помощью JSP, необходимы:

    • cреда разработки. Это специальное программное обеспечение, в котором осуществляется создание, тестирование и отладка JSP-документов. Наиболее распространенные среды разработки для работы с Java-компонентами — NetBeans, Eclipse или Java Development Kit. Их необходимо предварительно скачать и установить на компьютер;
    • JSP-контейнер. Этот компонент представляет собой сервер, отвечающий за системную поддержку сервлетов и обеспечивающий их жизненный цикл на основе правил, утвержденных в спецификациях. JSP-контейнер способен выполнять функции полноценного веб-сервера, поставлять веб-страницы для другого сервера или встраиваться в сервер приложений Java EE. Одним из самых популярных контейнеров для JSP является Apache Tomcat.

    Помимо этого, чтобы разрабатывать веб-страницы на JSP, нужно установить соответствующую библиотеку и сам Java на ПК. 

    Структура JSP

    Технология JSP использует несколько ключевых компонента для написания кода динамических страниц.

    • Директивы (directive). Это сообщения для JSP-движка, определяющие, какие действия и в каком порядке он должен выполнить. Например, с их помощью можно задать характеристики страницы, подключить дополнительные ресурсы, использовать нестандартные библиотеки тегов.
    • Действия (actions). Этот компонент инкапсулирует функции в тегах, которые встраиваются в код в JSP-страницы. Действия часто исполняются с учетом данных, отправляемых на сервер в запросе от конкретного пользователя. С их помощью также можно создавать Java-объекты, которые используются в скриптлетах JSP.
    • Скриптлеты (scriptlets). Они применяются для вставки Java-кода в страницы JSP, взаимодействующего с объектами страницы в процессе обработки запроса.
    • Библиотеки тегов (tag library). Этот компонент позволяет расширить функционал страницы за счет создания и использование собственных тегов.
    • Объявления (declaration). Они задают переменные, методы, внутренние классы и другие характеристики, которые можно позже применить в коде Java в документе JSP. 

    Преимущества JSP

    Широкому распространению JSP способствует ряд преимуществ технологии перед альтернативными методами создания динамических страниц. 

    В сравнении с ASP. Технология активных серверных страниц была предложена в 1997 году компанией Microsoft специально для собственных серверных ОС Windows. На других операционных системах ее использование либо затруднено, либо невозможно. JSP использует Java как язык разработки динамических элементов, что, с одной стороны, упрощает работу, с другой — обеспечивает кроссплатформенность и переносимость веб-приложений на серверы других производителей.

    В сравнении с «чистыми» сервлетами. JSP тоже использует сервлеты в процессе генерации динамических страниц. Однако, для работы сервлетов в чистом виде, HTML-текст страницы должен быть преобразован с помощью операторов println, писать и редактировать которые менее удобно, чем документ, записанный с помощью стандартного языка разметки. 

    В сравнении с SSI (включением на стиороне сервера). SSI — это реализованный в веб-сервере Apache язык для динамической сборки веб-страниц из отдельных модулей с последующей выдачей пользователю в виде HTML-документа. На практике он не позволяет создавать действительно сложные веб-приложения с использованием онлайн-форм, подключением к базам данных, взаимодействием с другими страницами и т.д. JSP же за счет своей многофункциональности позволяет реализовать если не все, то большинство возможностей, ожидаемых от современных веб-приложений. 

    В сравнении с JavaScript. Скриптовый язык программирования JavaScript реализует динамические сценарии на стороне клиента (браузера). Как и в случае с SSI, это позволяет реализовать ограниченный набор возможностей. JSP работает на стороне сервера и задействует более широкий функционал, что позволяет использовать его при разработке крупных и сложных проектов. 

    Отдельно стоит сравнить JSP и другую распространенную в прошлом технологию создания динамических сайтов под названием Common Gateway Interface (Общий интерфейс шлюза). Она работает следующим образом:

    • веб-сервер, получая запрос от клиентского браузера, преобразует его в CGI-форму;
    • затем сервер вызывает обработчик и конвертирует его ответ из CGI-формы в форму HTTP-ответа клиенту.

    Несмотря на то, что схема работы CGI выглядит проще, на практике у JSP есть немало преимуществ перед этой устаревшей технологией.

    • В CGI для динамических компонентов страниц необходимо создавать отдельные файлы. Такой способ замедляет генерацию содержимого страницы. В JSP динамические компоненты можно встраивать непосредственно в HTML-код, что существенно упрощает разработку и увеличивает скорость загрузки страницы. 
    • JSP обязательно компилируется сервером перед обработкой, за исключением случаев, когда компиляция уже была осуществлена, а документ с тех пор не менялся.  CGI же требует при запросе страницы всегда требует загрузки интерпретатора и целевого скрипта.
    • Страницы JavaServer надстраиваются над API сервлетов Java, поэтому JSP доступны все мощные API-интерфейсы Enterprise Java, в том числе JDBC, JNDI, EJB, JAXP и другие.
    • JSP-технологию можно комбинировать с «чистыми» сервлетами, обрабатывающими бизнес-логику, модель, которую поддерживают механизмы шаблонов сервлетов Java.

    Недостатки JSP

    К наиболее заметным недостаткам JSP-технологии относятся следующие.

    • Необходимость знать Java. Изначально технология JSP позиционировалась как средство, разграничивающее код и представление, то есть отделяющее работу дизайнера и программиста. На практике дизайнер зачастую должен владеть хотя бы азами программирования на Java, чтобы спроектировать нормально работающую JSP-страницу. 
    • Использование одного языка. JSP работает только в связке с языком Java. С одной стороны, это ограничивает возможности разработчика, заставляя его переучиваться на этот язык. С другой, на практике Java является одним из наиболее популярных ЯП, поэтому это не вызывает больших проблем.  

    Заключение

    Изначально JSP была создана как ответ на коммерчески успешную ASP, разработанную компанией Microsoft, с которой корпорация Sun Microsystems конкурировала в конце 90-х годов прошлого века. Однако, со временем эта технология претерпела ряд важных изменений и превратилась в самодостаточный инструмент, который сегодня используется при разработке множества веб-приложений. 

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

    JSP-технология основана на четком разделении модели (бизнес-логики) и представления (пользовательского интерфейса). Это позволяет реализовывать большие и сложные веб-сайты и приложения путем разделения обязанностей между программистами и дизайнерами. Кроме того, технология упрощает поддержку таких проектов, так как с ее помощью можно редактировать бизнес-логику, не затрагивая пользовательскую часть, и наоборот. Вместе с тем JSP успешно показывает себя и в создании небольших веб-приложений за счет гибкого подхода к проектированию. 

    Поделиться

    Скопировано

    0 комментариев

    Комментарии