Статьи

JSP, JSF и EL Введение

Страницы JavaServer, JavaServer Faces и язык выражений

В этой статье я собираюсь взглянуть на JavaServer Pages (JSP) и Expression Language (EL), а затем связать его с JavaServer Faces (JSF). Я расскажу о том, как получить доступ к объектам HTTP непосредственно в коде JSP и JSF, и вы увидите несколько примеров синтаксического различия между ними.

JSP — устаревшая технология

JSP — это устаревшая технология веб-программирования Java EE, выпущенная в первой версии J2EE в 1999 году . Позже он был заменен в 2003 году на JSF, но его развитие продолжилось с последней версией 2.3, выпущенной в Java EE 7, поскольку до сих пор она не устарела.

JSF является предпочтительным

Несмотря на то, что JSF опередил JSP в качестве предпочтительного варианта, все еще есть много приложений, использующих JSP, и весьма вероятно, что вы столкнетесь с такими приложениями в течение нескольких лет, так что стоит оценить эту технологию.

Динамическое Java веб-приложение

JSP — это технология на стороне сервера, которая позволяет разработчику создавать динамическое веб-приложение на Java. JSP можно рассматривать как расширение технологии сервлетов, поскольку он предоставляет функции для простого создания пользовательских представлений. JavaServer Pages состоит из HTML-кода, но он позволяет включать Java-код для динамического создания контента. Поскольку веб-приложения содержат множество пользовательских экранов, JSP часто используются в веб-приложениях.

Преодолеть разрыв между Java и HTML

Для преодоления разрыва между кодом Java и HTML в JSP предусмотрены дополнительные функции, такие как теги JSP , язык выражений и пользовательские теги . Это облегчает понимание и помогает веб-разработчику быстро разрабатывать страницы JSP. Однако большую часть времени мы используем JSP только для генерации представлений, и вся бизнес-логика присутствует в коде сервлета, Enterprise Java Beans или классах моделей.

Это гораздо менее сложный язык рендеринга представлений по сравнению с JSF и не пользуется преимуществами компонентов. Тем не менее, разделение логики представления и бизнес-логики не всегда остается таким четким. Сценарии JSP позволяют писать код Java непосредственно в логике представления. Это омрачает разделение.

Встроенная Java

Такой код Java вводится непосредственно на странице JSP между ракетой и процентом <%…%>

Здесь мы используем код Java для доступа к объекту HTTPServerRequest , чтобы получить параметр запроса с именем id и паролем .

Смешивать эту логику с технологиями представления — плохая практика. Вот почему современные приложения Java EE предпочитают не использовать JSP, а вместо этого используют более структурированный язык JSF на основе компонентов.

Неявные объекты JSP

Неявные объекты JSP создаются контейнером сервлетов при переводе JSP в сервлеты. Они в основном связаны с объектами и областями HTTP. Мы можем использовать неявные объекты в JSP непосредственно в скриптлетах, как показано в приведенном выше фрагменте кода, для доступа к значениям, связанным с текущей областью действия или объектами HTTP.

В следующем фрагменте кода мы ссылаемся на объекты HTTP-запроса, чтобы получить путь к контексту.

1
<%=request.contextPath %>

Примерами других неявных объектов JSP являются запрос , ответ , pageContext и приложение .

Чтобы еще больше усложнить ситуацию, язык выражений имеет свои собственные неявные объекты, имена которых аналогичны тем, которые доступны в JSP, и относятся к тем же объектам и областям HTTP.

1
${request.contextPath}

Примеры других неявных объектов EL: request , requestScoped , pageContext , applicationScoped

Здесь мы получаем путь контекста из объекта HTTP-запроса, как мы это делали в примере с JSP ранее. Обратите внимание, что некоторые объекты названы по-разному и используется другой синтаксис.

Использование EL в JSP и JSF

Давайте немного расширим тему и посмотрим, как мы используем язык выражений в JSP и JSF.

В следующем фрагменте кода показано использование EL в JSP:

  • Неявные объекты: $ {request.contextPath}
  • Свойство бина : $ {book.title}

и следующий фрагмент кода показывает, что использование EL в JSF:

  • Неявные объекты: # {request.contextPath}
  • Свойство бина : # {book.title}

В обоих случаях ссылка на объект называется одинаковой и ссылается на один и тот же объект. Единственным отличием является синтаксис, используемый для ссылки на экземпляр. JSP использует знак доллара, а JSF использует хэш .   На имя компонента ссылается, используя имя класса с первой буквой в нижнем регистре (если только другое имя не было явно определено в названной аннотации).

И, наконец, давайте рассмотрим лишь немного синтаксиса, который мы используем в языке выражений.

  • Логические операторы
  • [] , () , , <=> , eq ne , || и более
  • и , не , instanceof , правда , мод и многое другое
  • $ {not empty book.title}

Как и следовало ожидать, это очень знакомо. У нас есть стандартные логические операторы, которые проверяют равенство и выполняют математические операции. Кроме того, нам дается некоторый синтаксический сахар над сложными операциями, такими как непустая операция, которую мы видим здесь.

Дальнейшее чтение

Как насчет того, чтобы немного узнать о внедрении контекстов и зависимостей (CDI) и корпоративных Java-бинов (EJB). Это две основные технологии.

Недавно я опубликовал мини-серию блогов, посвященных JAX-RS . Они обсуждают, как управлять ошибками проверки bean-компонентов , работать с Потребителями и Производителями и как создавать Ресурсные объекты JAX-RS .

Есть две серии глубоких погружений по темам JAX-RS:

Что дальше?

Если вы новичок в Java EE, вам может быть непросто разобраться во всех API-интерфейсах от корпоративной экосистемы. Вот почему я написал и записал видео-учебный курс Learning Java Enterprise Edition . Этот двухчасовой курс знакомит вас со всеми наиболее важными API Java EE. Имея множество демонстраций, примеров кода и практических заданий о том, как программировать с помощью Enterprise Java, вы сможете в совершенстве говорить о том, как стать разработчиком Java EE.

Развивайте свои знания

Если вы хотите узнать больше, есть курсы, которые углубляются в каждый из API. Существует курс по API JAX-RS, который поможет вам расширить свои знания, научившись создавать конечные точки RESTful . Существует курс по API WebSocket, в котором вы можете научиться разрабатывать приложение для чата, а также курс по JSON, где вы узнаете, как освоить курс API JSON-Processing . На горизонте много курсов, так почему бы не начать сейчас и дать толчок своей карьере в Java EE.

Ссылка: JSP, JSF и EL Введение от нашего партнера JCG Алекса Тедома в блоге Read Learn Code .