Изучаем Java EE 7 - [150]
Рис. 10.4. Страница NewBook.html с сообщением об ошибке
JavaScript — это богатый язык. Предыдущий раздел охватывает лишь небольшую часть, которая демонстрирует взаимодействие JavaScript и DOM. Важно понимать, что функция JavaScript может получить объект на странице (по имени или ID, например с помощью метода GetElementById()) и изменить его содержимое динамически на стороне клиента. Подробнее см. в разделе «AJAX» главы 11.
Концепция JSF
Вы только что видели технологии и языки, работающие на стороне клиента, такие как XHTML и CSS, которые представляют содержимое и визуальную составляющую статических веб-страниц. Чтобы добавить возможность взаимодействия и динамически изменять части веб-страницы, вы можете использовать функции JavaScript, которые работают в браузере. Но в большинстве случаев необходимо вызывать бизнес-слой EJB, чтобы отобразить данные из базы. Это динамическое содержимое может быть получено с помощью JSF на стороне сервера.
Архитектуру JSF легко понять (рис. 10.5), если вы знакомы с веб-платформами. Приложения JSF — это стандартные веб-приложения, которые перехватывают HTTP-запросы с помощью сервлета Faces и производят HTML. Архитектура позволяет подключить любой язык объявления страниц (или язык объявления видов), отрисовать его для различных устройств (браузер, мобильные устройства, планшеты и т. д.), а также создавать страницы с помощью событий, слушателей и компонентов, как Swing. Swing представляет собой набор инструментов Java для работы с виджетами и входит в состав Java SE, начиная с выпуска 1.2. Это GUI-фреймворк, предназначенный для создания настольных приложений (не веб-приложений) с помощью графических компонентов и модели слушателя событий для обработки данных, вводимых пользователем. JSF также имеет стандартный набор виджетов пользовательского интерфейса (UI) (кнопки, гиперссылки, флажки, текстовые поля и т. д.) и позволяет легко подключать сторонние компоненты. На рис. 10.5 показана архитектура JSF на очень высоком уровне.
Рис. 10.5. Архитектура JSF
На рис. 10.5 представлены несколько важных компонентов JSF, которые делают его архитектуру богатой и гибкой.
• FacesServlet и faces-config.xml. FacesServlet является основным сервлетом приложения и опционально может быть настроен с помощью файла дескриптора faces-config.xml.
• Страницы и компоненты. JSF позволяет использовать несколько PDL, но Facelets рекомендован с версии JSF 2.0.
• Отрисовщики. Отвечают за отображение компонентов и перевод пользовательского ввода в значения свойств компонента.
• Преобразователи. Конвертируют значения компонента (Date, Boolean и т. д.), в значения разметки и из них (String).
• Валидаторы. Отвечают за то, чтобы значение, введенное пользователем, было корректным (большинство проверок может быть делегировано Bean Validation).
• Резервные компоненты и навигация. Бизнес-логика располагается в компонентах-подложках, которые также контролируют навигацию между страницами.
• Поддержка AJAX. JSF 2.2 поставляется со встроенной поддержкой AJAX, что описано в главе 11.
• Язык выражений (EL). EL используется в страницах JSF для привязки переменных и действий между компонентами и компонентами-подложками.
FacesServlet
Большинство веб-фреймворков используют шаблон проектирования Model — View — Controller (MVC — «модель — вид — представление»), и JSF не является исключением. Шаблон MVC используется для того, чтобы отделить представление (страницы) и модель (данные, которые будут отображаться в представлении). Контроллер обрабатывает действия пользователя, которые могут привести к изменениям в модели и обновлению представлений. В JSF контроллер является сервлетом и называется FacesServlet. Это сервлет, управляющий жизненным циклом обработки запросов для веб-приложений. Все пользовательские запросы проходят через FacesServlet, который рассматривает запрос и вызывает различные действия модели с использованием компонентов-подложек.
Этот сервлет является внутренней частью JSF. Он может быть настроен только с использованием внешних метаданных. Вплоть до версии JSF 1.2 единственным способом конфигурации был файл faces-config.xml. Сегодня, когда существует версия JSF 2.2, этот файл опционален и большая часть метаданных может быть определена с помощью аннотаций (для компонентов-подложек, преобразователей, компонентов, отрисовщиков и валидаторов).
Страницы и компоненты
Фреймворк JSF должен отправить страницу на устройство вывода клиента (например, браузер), поэтому ему требуется технология отображения. Этой технологией становится PDL. Приложение JSF может свободно использовать несколько технологий для его PDL, но Facelets — предпочтительный вариант для версии JSF 2.2 (читайте подробнее в подразделе «Facelets» далее).
Страницы Facelets состоят из дерева компонентов (также называемых виджетами, или элементами управления), которые обеспечивают конкретную функциональность для взаимодействия с конечным пользователем (текстовое поле, кнопки, списки и т. д.). JSF имеет стандартный набор компонентов и позволяет легко создавать свои собственные. Страница проходит через насыщенный жизненный цикл, чтобы управлять этим деревом компонентов (инициализация, события, отрисовка и т. д.).
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.