Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
Основной интерфейс позволяет студентам и сотрудникам контролировать посещаемость учащихся, а также фиксировать присутствие студентов на игровой площадке.
Здесь рассматриваются следующие темы:
Следующие сущности, используемые в основном интерфейсе, инкапсулируют данные, хранящиеся и управляемые 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-бины, используемые в основном интерфейсе, предоставляют бизнес-логику для 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.
Приложение 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 хранит дескрипторы развёртывания в каталоге 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-бинов в этом приложении.
Назад | Вперёд | Содержание |