Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Интерфейс Duke's Bookstore

В этом разделе приведены дополнительные сведения о компонентах примера Duke's Bookstore и о том, как они взаимодействуют.

Здесь рассматриваются следующие темы:

Сущность Book

Сущность Book, расположенная в пакете dukesbookstore.entity, инкапсулирует данные книги, хранящиеся в Duke's Bookstore.

Сущность Book определяет атрибуты, используемые в примере:

  • Идентификатор книги

  • Имя автора

  • Фамилия автора

  • Название

  • Цена

  • Есть ли книга в продаже

  • Год публикации

  • Описание книги

  • Количество копий в инвентаре

Сущность Book также определяет простой именованный запрос findBooks.

Enterprise-бины, используемые в Duke's Bookstore

Два Enterprise-бина, расположенных в пакете dukesbookstore.ejb, обеспечивают бизнес-логику для Duke's Bookstore.

  • BookRequestBean — это сессионный компонент с состоянием, который содержит бизнес-методы для приложения. Методы создания, поиска и покупки книг, а также обновления инвентаря для книги. Чтобы получить книги, метод getBooks вызывает именованный запрос findBooks, определённый в сущности Book.

  • ConfigBean — это сессионный компонент-синглтон, используемый для создания книг в каталоге при первоначальном развёртывании приложения. Он вызывает метод createBook, определённый в BookRequestBean.

Страницы Facelets и Managed-бины, используемые в Duke's Bookstore

Приложение Duke's Bookstore использует Facelets и его шаблоны для отрисовки пользовательского интерфейса. Страницы Facelets взаимодействуют с набором Managed-бинов CDI, которые действуют как бины поддержки для свойств и методов пользовательского интерфейса. Главная страница также взаимодействует с кастомными компонентами приложения.

Приложение использует следующие страницы Facelets, которые находятся в каталоге tut-install/examples/case-studies/dukes-bookstore/src/main/webapp/.

  • bookstoreTemplate.xhtml: файл шаблона, который определяет заголовок, используемый на каждой странице, а также таблицу стилей, используемую всеми страницами. Шаблон также извлекает язык из настроек веб-браузера.

    Использует Managed-бин LocaleBean.

  • index.xhtml: страница входа, на которой размещаются настраиваемые компоненты карты и области с использованием Managed-бинов, настроенных в файле faces-config.xml, позволяет пользователю выбирать книгу и перейти на страницу bookstore.xhtml.

  • bookstore.xhtml: страница, позволяющая пользователю получить подробную информацию о выбранной книге, добавить книгу в корзину покупок и перейти на страницу bookcatalog.xhtml.

    Использует Managed-бин BookstoreBean.

  • bookdetails.xhtml: страница, которая отображает сведения о книге, выбранной на bookstore.xhtml или других страницах, и позволяет пользователю добавить книгу в корзину и/или перейти на страницу bookcatalog.xhtml.

    Использует Managed-бин BookDetailsBean.

  • bookcatalog.xhtml: страница, которая отображает книги в каталоге и позволяет пользователю добавлять книги в корзину, просматривать сведения о любой книге, просматривать и очищать корзину или совершать покупки книг, находящихся в корзине.

    Используются Managed-бины BookstoreBean, CatalogBean и ShoppingCart.

  • bookshowcart.xhtml: страница, которая отображает содержимое корзины и позволяет пользователю удалять и просматривать содержимое, очищать корзину, приобретать книги в корзине или вернуться в каталог.

    Использует Managed-бины ShowCartBean и ShoppingCart.

  • bookcashier.xhtml: страница, позволяющая пользователю приобретать книги, указывать способ доставки, подписываться на рассылку новостей или вступать в фан-клуб Duke при покупке выше определённой суммы.

    Использует Managed-бины CashierBean и ShoppingCart.

  • bookreceipt.xhtml: страница, которая подтверждает покупку пользователя и позволяет пользователю вернуться на страницу каталога, чтобы продолжить покупки.

    Использует Managed-бин CashierBean.

  • bookordererror.xhtml: страница, отображаемая CashierBean, если в книжном магазине не осталось ни одного экземпляра заказанной книги.

Приложение использует следующие Managed-бины, которые находятся в каталоге tut-install/examples/case-studies/dukes-bookstore/src/main/java/javaeetutorial/dukesbookstore/web/managedbeans/.

  • AbstractBean: содержит служебные методы, вызываемые другими Managed-бинами.

  • BookDetailsBean: вспомогательный бин для страницы bookdetails.xhtml. Определяет имя details.

  • BookstoreBean: вспомогательный бин для страницы bookstore.xhtml. Определяет имя store.

  • CashierBean: вспомогательный бин для страниц bookcashier.xhtml и bookreceipt.xhtml.

  • CatalogBean: вспомогательный бин для страницы bookcatalog.xhtml. Определяет имя catalog.

  • LocaleBean: Managed-бин, который получает текущую локаль. Используется на каждой странице.

  • ShoppingCart: вспомогательный бин, используемый страницами bookcashier.xhtml, bookcatalog.xhtml и bookshowcart.xhtml. Определяет имя cart.

  • ShoppingCartItem: содержит методы, вызываемые ShoppingCart, CatalogBean и ShowCartBean.

  • ShowCartBean: вспомогательный бин для страницы bookshowcart.xhtml. Определяет имя showcart.

Пользовательские компоненты и другие кастомные объекты, используемые в Duke's Bookstore

Настраиваемые компоненты карты и области для Duke's Bookstore вместе со связанными классами отрисовщика, слушателя и модели определены в следующих пакетах в tut-install/examples/case-studies/dukes-bookstore/src/main/java/javaeetutorial/dukesbookstore/.

Каталог tut-install/examples/case-studies/dukes-bookstore/src/java/dukesbookstore/ также содержит кастомный конвертер и другие пользовательские слушатели, не привязанные специально к пользовательским компонентам.

Файлы свойств, используемые в Duke's Bookstore

Строки, используемые в приложении Duke's Bookstore, инкапсулированы в bundle-ресурсы, что позволяет отображать локализованные строки в нескольких локалях. Файлы свойств, расположенные в каталоге tut-install/examples/case-studies/dukes-bookstore/src/main/java/javaeetutorial/dukesbookstore/web/messages/, включают файл по умолчанию, содержащий английские строки и три дополнительных файла для других локалей. Файлы следующие:

  • Messages.properties: файл по умолчанию, содержащий английские строки

  • Messages_de.properties: файл, содержащий немецкие строки

  • Messages_es.properties: файл, содержащий испанские строки

  • Messages_fr.properties: файл, содержащий французские строки

Настройка языка в веб-браузере пользователя определяет, какой язык используется. Тег html в bookstoreTemplate.xhtml извлекает языковые настройки из свойства language в LocaleBean:

<html lang="#{localeBean.language}"
...

Для получения дополнительной информации о пакетах ресурсов см. главу 22 «Интернационализация и локализация веб-приложений».

Пакет ресурсов настраивается в файле faces-config.xml следующим образом:

<application>
    <resource-bundle>
        <base-name>
            javaeetutorial.dukesbookstore.web.messages.Messages
        </base-name>
        <var>bundle</var>
    </resource-bundle>
    <locale-config>
        <default-locale>en</default-locale>
        <supported-locale>de</supported-locale>
        <supported-locale>es</supported-locale>
        <supported-locale>fr</supported-locale>
    </locale-config>
</application>

Эта конфигурация означает, что на страницах Facelets сообщения извлекаются с использованием префикса bundle с ключом, найденным в файле Messages_`locale.properties`, как в следующем примере из страница index.xhtml:

<h:outputText style="font-weight:bold"
              value="#{bundle.ChooseBook}" />

В Messages.properties ключевая строка определяется следующим образом:

ChooseBook=Choose a Book from our Catalog

Дескрипторы развёртывания, используемые в Duke's Bookstore

В Duke's Bookstore используются следующие дескрипторы развёртывания:

  • src/main/resources/META-INF/persistence.xml: файл конфигурации API персистентности Java

  • src/main/webapp/WEB-INF/bookstore.taglib.xml: файл дескриптора библиотеки тегов для кастомных компонентов

  • src/main/webapp/WEB-INF/faces-config.xml: файл конфигурации JavaServer Faces, в котором настраиваются Managed-бины для компонента карты, а также пакеты ресурсов для приложения

  • src/main/webapp/WEB-INF/web.xml: файл конфигурации веб-приложения


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)