Изучаем Java EE 7 - [166]
JSF 2.2 упрощает и насыщает работу с динамическими пользовательскими интерфейсами. Он имеет встроенную поддержку вызовов AJAX. Спецификация поставляется с библиотекой JavaScript, что позволяет осуществлять асинхронные вызовы сервера и обновлять небольшую часть страницы.
Создание пользовательских интерфейсов, управление навигацией по всему приложению и синхронный либо асинхронный вызов бизнес-логики стали возможны потому, что JSF построен по шаблону «модель — представление — контроллер» (Model — View — Controller, MVC). Каждая часть существует отдельно от других, что позволяет изменять пользовательский интерфейс без ущерба для бизнес-логики и наоборот. В этой главе представлены все эти понятия, и она дополняет главу 10.
Шаблон MVC
JSF, как и большинство веб-платформ поощряет разделение обязанностей с использованием вариаций шаблона проектирования MVC. MVC — это архитектурный шаблон, предназначенный для изоляции бизнес-логики от пользовательского интерфейса. Бизнес-логика не должна перемешиваться с кодом пользовательского интерфейса. Если они смешаются, приложения станет намного труднее поддерживать и расширять. Применение MVC приводит к созданию слабосвязанного приложения; в приложениях такого типа проще изменить визуальный внешний вид приложения или основные правила бизнес-логики, не затрагивая другие компоненты.
Модель в MVC представляет собой данные приложения, отображение соответствует пользовательскому интерфейсу, а контроллер управляет связью между ними (рис. 11.1).
Рис. 11.1. Шаблон проектирования MVC
Модель представлена содержимым, которое часто хранится в базе данных и отображается в представлении. Модель строится, не заботясь о внешнем виде, в котором она предстанет пользователю. В JSF она может состоять из компонентов-подложек, вызовов EJB, сущностей JPA и т. д.
Представление в JSF — это фактически страница XHTML, когда мы имеем дело с веб-интерфейсами. Как объяснялось в главе 10, представление обеспечивает графическое отображение модели. Модель может также иметь несколько представлений, показывая книгу, например, в виде формы или списка.
Когда пользователь манипулирует представлением, тот информирует контроллер о желаемых изменениях. Затем контроллер собирает данные, преобразует и проверяет их, вызывает бизнес-логику и генерирует содержимое XHTML. В JSF контроллером является FacesServlet.
FacesServlet
FacesServlet — это реализация типа javax.servlet.Servlet. Она действует как центральный элемент контроллера, через который проходят все запросы пользователей. Как показано на рис. 11.2, при возникновении события (например, когда пользователь нажимает кнопку) уведомление о нем отправляется через HTTP на сервер и перехватывается объектом типа javax.faces.webapp.FacesServlet. Он изучает запрос и вызывает различные действия для модели с использованием компонентов-подложек.
FacesServlet принимает входящие запросы и передает управление объекту типа javax.faces.lifecycle.Lifecycle. Используя фабрику, он создает объект типа javax.faces.context.FacesContext, который содержит и обрабатывает всю информацию о состоянии для каждого запроса. Объект типа Lifecycle использует объект типа FacesContext в течение шести различных фаз жизненного цикла страницы (описан в главе 10) до отрисовки ответа.
Рис. 11.2. Взаимодействия FacesServlet
Запросы пользователей обрабатываются средой выполнения JSF, которая объявляет объект типа FacesServlet, используя общее поведение, благодаря конфигурации с помощью исключения. Если параметры по умолчанию вас чем-то не устраивают, вы можете настроить FacesServlet в файле web.xml. Пример этого файла приведен в листинге 11.1.
>
>
>·········xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
>·········xsi: schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
>·········http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
>·········version="3.1">
>··
>····
>····
>····
>··
>··
>····
>····
>··
>··
>····
>····
>··
>··
>····
>····
>··
>
В этом файле определяется объект типа javax.faces.webapp.FacesServlet: задаются его имя (Faces Servlet) и способ отображения. В данном примере все запросы, которые имеют расширение. jsf, управляются сервлетом, а любые запросы вида http://localhost:8080/chapter11-1.0/newBook.jsf будут обрабатываться JSF.
Стандартное отображение сервлетов для JSF-страниц — *.faces или /faces/*. В листинге 11.1 это значение по умолчанию было изменено на. jsf, но, если. faces вам подходит, можно опустить конфигурацию отображения сервлета.
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.