Изучаем Java EE 7 - [182]

Шрифт
Интервал

Если вы используете инструмент веб-разработчика для проверки того, что происходит в сети между браузером и GlassFish, то увидите AJAX в действии. Отрисовывается частичный XML-ответ, а не вся HTML-страница. Частичный ответ сервера содержит часть страницы XHTML, которая будет обновляться. JavaScript ищет элементы страницы errors и booklist и применяет необходимые изменения (обновляя DOM). Частичный ответ в листинге 11.23 говорит сам за себя. Он указывает, что обновление должно быть сделано для компонентов, определенных в элементах errors и booklist (). Тело элемента является фрагментом XHTML, который должен переопределить фактические данные таблицы. Конечно, этот XML автоматически обрабатывается с помощью обработчиков AJAX, встроенных в JSF, — разработчик не должен ничего делать с ним вручную.


Листинг 11.23. Частичный ответ, полученный браузером

>

>

>··

>····

>······

>······

  • Книга создана

>······]]>

>····

>····

>······

>······

>········

>··········

>············

>············

>··········

>········

>········

>··········

>············

>············

>··········

>··········

>············

>············

>··········

>··········

>············

>············

>··········

>········

>······

НазваниеЦена
Java EE 631.49
Гарри Поттер19.79
H2G223.99

>······]]>

>····

>··

>

Резюме

В главе 10 рассматривался графический аспект JSF, а эта глава была посвящена его динамической стороне. JSF следует шаблону проектирования MVC, и его спецификация охватывает все: от создания пользовательских интерфейсов с компонентами до обработки данных с помощью компонентов-подложек.

Компоненты-подложки находятся в основе JSF, поскольку используются для обработки бизнес-логики, вызовов EJB и баз данных, а также для навигации между страницами. Они имеют область действия и жизненный цикл (этим они напоминают сеансовые компоненты, не сохраняющие состояние), а также объявляют методы и свойства, которые привязаны к компонентам пользовательского интерфейса, с помощью языка выражений. Аннотации и конфигурация с применением исключений значительно упрощены начиная с версии JSF 2.2, большая часть XML-конфигурации теперь необязательна.

В этой главе показано, как обрабатываются преобразование и валидация данных для любых компонентов, предназначенных для ввода данных. JSF определяет набор преобразователей и валидаторов для наиболее распространенных случаев, но он также позволяет вам легко создавать и регистрировать собственные. Интеграция с Bean Validation естественна, и вам не нужно писать код для интеграции с JSF.

Поскольку AJAX существовал уже в течение нескольких лет, JSF имеет его встроенную поддержку, что позволяет веб-страницам вызывать базовые компоненты асинхронно. JSF определяет стандартную библиотеку JavaScript, и разработчику не нужно писать сценарии. Вместо этого следует использовать функции для обновления части страницы.

Последующие четыре главы будут сосредоточены на взаимодействии с системами благодаря обмену сообщениями, веб-службам SOAP и RESTful с использованием XML или JSON.


Глава 12. Обработка XML и JSON

XML использовался в платформе Java EE с появления дескрипторов развертывания и метаданных. Мы имеем дело с XML, когда приходится работать с файлами persistence.xml, beans.xml или ejb-jar.xml. Часто работа с Java позволяет разработчикам впервые войти в богатый мир XML. Однако мы быстро обнаружили, что работа с XML — это больше чем простое развертывание веб-приложения или EJB.

XML — это промышленный стандарт, определенный W3C. Хотя он не привязан ни к какому языку программирования или поставщику программного обеспечения, этот язык решил проблему независимости данных и совместимости. XML является расширяемым, не зависит от платформы и поддерживает интернационализацию, поэтому он стал предпочтительным языком для обмена данными между программными компонентами, системами и предприятиями (например, за счет использования веб-служб SOAP, которые будут описаны в главе 14).

С другой стороны, JSON появился вместе с JavaScript и служит для представления простых структур данных менее избыточным, нежели XML, способом. Если быть точным, формат JSON часто используется для сериализации и передачи структурированных данных по сети. Он быстро стал настолько популярным, что сегодня последние версии браузеров имеют встроенную поддержку кодирования/декодирования JSON. В дополнение к его отношениям с браузерами и JavaScript, JSON может служить форматом обмена данными (например, широко используется в веб-службах RESTful, которые будут рассмотрены в главе 15).

В данной главе я опишу оба формата, XML и JSON, сосредоточив внимание на структуре документа и API-интерфейсах, позволяющих манипулировать этими структурами. Мир XML богаче, так что вы увидите несколько спецификаций, которые могут помочь в анализе, проверке или связывании XML с объектами Java. Они настолько укоренились в нашей экосистеме, что большинство этих XML-спецификаций относятся к Java SE. JSON является относительным новичком в платформе Java и, следовательно, имеет меньше поддержки в Java SE/EE.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


MFC и OpenGL

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.