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

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

Основной интерфейс

Основной интерфейс позволяет студентам и сотрудникам контролировать посещаемость учащихся, а также фиксировать присутствие студентов на игровой площадке.

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

Сущности API персистентности Java, используемые в основном интерфейсе

Следующие сущности, используемые в основном интерфейсе, инкапсулируют данные, хранящиеся и управляемые Duke’s Tutoring, и находятся в пакете dukestutoring.entity проекта dukes-tutoring-common.

  • Person: сущность Person определяет атрибуты, общие для студентов и опекунов, отслеживаемых приложением. Этими атрибутами являются имя человека и контактная информация, включающая номера телефонов и адрес электронной почты. У этой сущности есть два дочерних класса: Student и Guardian.

  • PersonDetails: сущность PersonDetails используется для хранения дополнительных данных, общих для всех людей, таких как фотография и день рождения человека, которые не включены в сущность Person по причинам производительности.

  • Student и Guardian: сущность Student хранит атрибуты, специфичные для студентов, которые проходят обучение. Они включают в себя такую ​​информацию, как класс ученика и школа. Атрибуты сущности Guardian специфичны для родителей или опекунов Student. Студенты и опекуны связаны отношением "многие ко многим". То есть у студента может быть один или несколько опекунов, а у опекуна может быть один или несколько студентов.

  • Address: сущность Address представляет почтовый адрес и связана с сущностями Person. Адреса и люди связаны отношением "многие к одному". То есть у одного человека может быть много адресов.

  • TutoringSession: сущность TutoringSession представляет определённый день в обучающем центре. Отдельная учебная сессия отслеживает, какие студенты посетили этот день, а какие студенты пошли в парк.

  • StatusEntry: сущность StatusEntry, которая регистрирует изменения статуса студента, связана с сущностью TutoringSession. Статусы студентов меняются в момент их регистрации в учебный день или когда они идут в парк, и когда они их покидают. Запись статуса позволяет сотрудникам учебного центра точно отслеживать, какие студенты посещали занятия, когда они регистрировались, какие студенты ходили в парк, когда они были в учебном центре, и когда они приходили и возвращались из парка.

Информацию о создании сущностей API персистентности Java смотрите в главе 40 «Введение в API персистентности Java». Информацию о валидации данных сущностей смотрите в Валидация персистентных полей и свойств и главе 24 «Валидация бинов: дополнительные темы».

Enterprise-бины, используемые в основном интерфейсе

Следующие Enterprise-бины, используемые в основном интерфейсе, предоставляют бизнес-логику для Duke’s Tutoring и находятся в пакете dukestutoring.ejb проекта dukes-tutoring-war:

  • ConfigBean — это сессионный компонент-синглтон, используемый для создания студентов по умолчанию при первоначальном развёртывании приложения и для создания автоматического таймера EJB, который создаёт объекты учебных сессий на каждый день недели.

  • RequestBean — это сессионный компонент без сохранения состояния, содержащий бизнес-методы для основного интерфейса. Бин также имеет бизнес-методы для получения списка студентов. Эти бизнес-методы используют строго типизированные запросы API Criteria для извлечения данных из базы данных. RequestBean также инъецирует объект события CDI, StatusEvent. Это событие вызывается бизнес-методами, когда изменяется статус студента.

Информацию о создании и использовании Enterprise-бинов см. в разделе Enterprise-бины. Для получения информации о создании строго типизированных запросов API Criteria см. главу 43 «Использование Criteria API для создания запросов». Для получения информации о событиях CDI см. Использование событий в приложениях CDI,

Конечная точка веб-сокета, используемая в основном интерфейсе

Класс javaeetutorial.dukestutoring.web.websocket.StatusEndpoint является серверно конечной точкой веб-сокета, которая возвращает студентов и их статусы клиентским конечным точкам. Метод StatusEndpoint.updateStatus является методом наблюдателя CDI для события StatusEvent. При изменении статуса студента в основном интерфейсе запускается StatusEvent. Контейнер вызывает метод-наблюдатель updateStatus и передаёт изменение состояния всем клиентским конечным точкам, зарегистрированным в StatusEndpoint.

Страница index.xhtml JavaServer Faces содержит код JavaScript для подключения к конечной точке веб-сокета. Метод onMessage на этой странице кликает кнопку JavaServer Faces, которая отправляет Ajax-запрос на обновление таблицы, отображающей текущий статус студентов.

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

Файлы Facelets, используемые в основном интерфейсе

Приложение Duke’s Tutoring использует Facelets для отображения пользовательского интерфейса и широко использует шаблоны Facelets. Facelets, технология отображения по умолчанию для JavaServer Faces, состоит из файлов XHTML, расположенных в каталоге tut-install/examples/case-studies/dukes-tutoring-war/src/main/webapp/.

В основном интерфейсе используются следующие файлы Facelets:

  • template.xhtml: файл шаблона для основного интерфейса

  • error.xhtml: файл ошибки, если что-то идёт не так

  • index.xhtml: страница входа для основного интерфейса

  • park.xhtml: страница, показывающая, кто в данный момент находится в парке

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

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

  • resources/components/allStudentsTable.xhtml: составной компонент для таблицы, отображающей всех активных студентов

  • resources/components/allInactiveStudentsTable.xhtml: составной компонент для таблицы, отображающей всех неактивных студентов

  • resources/components/currentSessionTable.xhtml: составной компонент для таблицы, отображающей всех студентов на сегодняшней учебной сессии

  • resources/components/parkTable.xhtml: составной компонент для таблицы, отображающей всех студентов, которые в данный момент находятся в парке

  • WEB-INF/includes/mainNav.xhtml: фрагмент XHTML для панели навигации основного интерфейса

Для получения информации об использовании Facelets см. главу 8 «Введение в Facelets».

Вспомогательные классы, используемые в основном интерфейсе

Следующие вспомогательные классы, находящиеся в пакете dukestutoring.util проекта dukes-tutoring-common, используются в основном интерфейсе.

  • CalendarUtil: класс, предоставляющий метод для удаления ненужных временны́х данных из объектов java.util.Calendar.

  • Email: класс кастомной аннотации Bean Validation для валидации адресов электронной почты в сущности Person.

  • StatusType: перечислимый тип, определяющий различные статусы, которые может иметь студент. Возможные значения: IN, OUT и PARK. StatusType используется во всём приложении, в том числе в сущности StatusEntry и во всём основном интерфейсе. StatusType также определяет метод toString, который возвращает локализованное название статуса исходя из локали.

Файлы свойств

Строки, используемые в основном интерфейсе, инкапсулированы в bundle-ресурсы, что позволяет отображать локализованные сообщения в нескольких локалях. Каждый из файлов свойств имеет специфичные для локали файлы, к которым добавлены коды локали, содержащие переведённые строки для каждой локали. Например, Messages_es.properties содержит локализованные строки для испанских локалей.

Проект dukes-tutoring-common имеет следующий bundle-ресурс в src/main/resources/.

  • javaeetutorial/dukestutoring/util/StatusMessages.properties: строки для каждого из типов статуса, определённых в перечислимом типе StatusType для локали по умолчанию. Каждая поддерживаемая локаль имеет файл свойств в форме StatusMessages_`locale prefix .properties`, содержащий локализованные строки. Например, строки для испаноязычных локалей находятся в StatusMessages_es.properties.

Проект dukes-tutoring-war имеет следующие bundle-ресурсы в src/main/resources/.

  • ValidationMessages.properties: строки для локали по умолчанию, используемой средой выполнения Bean Validation для отображения сообщений валидации. Этот файл должен иметь имя ValidationMessages.properties и находиться в пакете по умолчанию, как того требует спецификация Bean Validation. Каждая поддерживаемая локаль имеет файл свойств в форме ValidationMessages_`locale prefix.properties`, содержащий локализованные строки. Например, строки для немецкоязычных локалей находятся в ValidationMessages_de.properties.

  • javaeetutorial/dukestutoring/web/messages/Messages.properties: строки для локали по умолчанию для основного интерфейса и интерфейса администрирования. Каждая поддерживаемая локаль имеет файл свойств в форме Messages_`locale prefix.properties`, содержащий локализованные строки. Например, строки для упрощённых китайскоязычных локалей находятся в Messages_zh.properties.

Для получения информации о локализации веб-приложений см. Регистрация сообщений приложения.

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

Duke’s Tutoring хранит дескрипторы развёртывания в каталоге src/main/webapp/WEB-INF проекта dukes-tutoring-war:

  • faces-config.xml: файл конфигурации JavaServer Faces

  • glassfish-web.xml: файл конфигурации, специфичный для сервера GlassFish, который определяет сопоставление ролей безопасности

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

Duke’s Tutoring также использует следующий дескриптор развёртывания в каталоге src/main/resources/META-INF проекта dukes-tutoring-common:

  • persistence.xml: файл конфигурации API персистентности Java

Дескриптор развёртывания Enterprise-бина не используется в Duke’s Tutoring. Аннотации в файлах классов Enterprise-бинов используются для настройки Enterprise-бинов в этом приложении.


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