|
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-бинов в этом приложении.
| Назад | Вперёд | Содержание |
Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены.
Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)