- •Обозначения и сокращения
- •введение
- •1. Установка и настройка инструментальных средств
- •1.1. Установка и подготовка к работе операционной системы
- •1.2. Установка программного обеспечения
- •1.3. Создание таблиц в базе данных
- •2. Основы Java EE 6
- •2.1. Распределенные многоуровневые приложения
- •2.2. Контейнеры Java EE
- •2.3. Сервер GlassFish v3
- •2.4. Структура приложения
- •2.5. Конфигурирование приложений
- •2.6. Задание ссылок на ресурсы
- •4. Введение в компоненты Facelets
- •4.1. Веб-страницы
- •4.2. Разработка простого приложения Facelets
- •4.3. Использование шаблонов
- •5. Унифицированный язык записи выражений
- •6.1. Добавление компонент библиотеки HTML на страницу
- •6.2. Использование компонент для таблиц баз данных
- •6.3. Использование тегов библиотеки Core
- •7. Использование конвертеров, слушателей и проверок
- •7.1. Использование стандартных преобразователей
- •7.2. Регистрация слушателей для компонентов
- •8. Внешние объекты (JavaBeans)
- •8.1. Создание класса внешних объектов
- •8.2. Описание свойств бинов
- •8.3. Написание методов внешних бинов
- •8.4. Проверка бинами
- •9.1. Файл конфигурации ресурсов приложения
- •9.2. Упорядочение ресурсов конфигурации приложения
- •9.3. Конфигурирование состояния проекта
- •9.4. Выбор конфигурации бина
- •9.5. Регистрация сообщений об ошибках как пакет ресурса
- •9.7. Конфигурирование правил навигации (Navigation Rules)
- •9.8. Основные требования приложения JavaServer Faces
- •10. Технология Java Servlet
- •11. Введение в Java Persistence API
- •11.1. Требования к классам сущностей
- •11.3. Внедряемые классы в сущностях
- •11.4. Наследование сущностей
- •11.5. Стратегии наследования сущностей с отображением
- •11.6. Управление сущностями
- •11.7. Запросы сущностей
- •12. Примеры хранимых сущностей
- •12.1. Приложение order
- •12.2. Пример получения схемы отношений на основе таблиц БД
- •13.1. Терминология языка запросов
- •13.3. Упрощенный синтаксис языка запросов
- •13.4. Примеры запросов
- •13.5. Запросы с навигацией связанных сущностей
- •13.6. Запросы с другими условными выражениями
- •13.7. Изменение и удаление группы сущностей
- •13.8. Полный синтаксис языка запросов
- •14. Язык запросов Criteria API
- •14.3. Корни запроса
- •14.4. Использование объединения в запросе
- •14.5. Навигация путей в запросах
- •14.6. Ограничения на результаты запроса
- •14.7. Управление результатами запросов
- •14.8. Исполнение запросов
- •15. Связывание ресурсов
- •15.1. Ресурсы и служба имен JNDI
- •15.2. Объекты DataSource и пулы соединений (Connection Pools)
- •15.3. Внедрение ресурсов
- •15.4. Адаптеры ресурсов
- •15.5. Аннотации метаданных
- •16. Безопасность веб-приложений
- •16.1. Краткий обзор
- •16.2. Механизмы обеспечения безопасности
- •16.3. Безопасность сервера предприятия
- •16.4. Использование защищенного соединения SSL
- •18. Пример приложения
- •18.1. Создание проекта веб-приложения
- •18.3.Структура приложения JavaEE 6
- •18.4. Программирование вида для объектов
- •18.5. Дизайн главной страницы
- •18.6. Страница просмотра записей таблицы городов
- •18.7. Страница добавления записей о городах
- •18.8. Страница редактирования записей о городах
- •18.9. Страница удаления записей о городах
- •19. Обработка связей внешних ключей
- •19.1. Разработка класса для вида сущности
- •19.2. Доработка вида для городов
- •19.3. Разработка обзорной страницы
- •19.5. Страница для редактирования записей с внешними ключами
- •20. Дополнительные функции
- •20.1. Сортировка записей таблицы
- •20.2. Контроль за удалением связанных записей
- •20.3. Контроль ввода наименований
- •20.4. Запросы к БД на языке Java Persistence Query Language
- •20.5. Управление страницами при просмотре таблицы
- •20.6. Создание и просмотр отчетов
- •20.7. Использование шаблонов и стилей
- •20.8. Защита приложения паролем
- •Заключение
- •Библиографический список
Упражнения
1.Проследите движение информации об имени города при добавлении персоны.
2.Проанализируйте правила формирования и использования списка выбора.
19.5.Страница для редактирования записей с внешними ключами
Как и для добавления записей, страница редактирования имеет точно такую же
структуру и отличается обработчиками командных кнопок.
Файл person_mod.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates and open the template in the editor.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Редактирование персоны</title> </head>
<body>
<f:view>
<table border="1" width="100%"> <tr>
<td>
<h:form>
<table>
<tr>
<td> <h:outputLabel value="Ключ:#{personsView. person.idPerson}"/> </td>
<td> <h:inputHidden value="#{personsView.per-
son.idPerson}"
/> </td>
</tr>
<tr>
<td> <h:outputLabel value="Фамилия:"/> </td> <td><h:inputText value="#{personsView.person.
family}"/> </td>
</tr>
<tr>
<td> <h:outputLabel value="Имя:"/> </td>
240
<td><h:inputText value="#{personsView.person.
name}"/> </td>
</tr>
<tr>
<td> <h:outputLabel value="Отчество:"/> </td> <td><h:inputText value="#{personsView.person.fa-
ther}"/> </td>
</tr>
<tr>
<td> <h:outputLabel value="Рождение:"/> </td> <td><h:inputText value="#{personsView.person.
bday}">
<f:convertDateTime dateStyle="short" /> </h:inputText>
</td>
</tr>
<tr>
<td> <h:outputLabel value="Город:"/> </td> <td>
<h:selectOneMenu id="idCity" required = "true" value =
"#{personsView.id_City}" >
<f:selectItems value="#{citiesView.citiesSe-
lector}" />
<!--f:converter / --> </h:selectOneMenu>
</td>
</tr>
<tr>
<td>
<h:commandButton action="#{personsView.mod_yes_Person}"
value="Заменить" /> <h:commandButton action="personsPage" value="Отменить" />
</td>
</tr>
</table>
</h:form>
</td>
</tr>
</table>
</f:view>
</body>
</html>
Упражнение
Найдите и проанализируйте различия между страницами добавления и редактирования записей персон.
241
19.6.Страница для удаления записей
свнешними ключами
Структура и состав компонент для удалениям персон аналогичен модифика-
ции объекта с заменой полей ввода на невидимые поля.
Файл person_del.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates and open the template in the editor.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Редактирование персоны</title> </head>
<body>
<f:view>
<table border="1" width="100%"> <tr>
<td>
<h:form>
<table>
<tr>
<td> <h:outputLabel value="Ключ: #{persons View.person.idPerson}"/> </td>
<td> <h:inputHidden value="#{personsView.person.
idPerson}"
/> </td>
</tr>
<tr>
<td> <h:outputLabel value="Фамилия: #{personsView.person.family}"/> </td>
<td><h:inputHidden value="#{personsView.person.
family}"/> </td>
</tr>
<tr>
<td> <h:outputLabel value="Имя: #{persons View.person.name}"/> </td>
<td><h:inputHidden value="#{personsView.person.
name}"/> </td>
</tr>
<tr>
242
<td> <h:outputLabel value="Отчество: #{personsView.person.father}"/> </td>
<td><h:inputHidden value="#{personsView.person.
father}"/> </td>
</tr>
<tr>
<td> <h:outputLabel value="Рождение: #{personsView.person.bday}"/> </td>
<td><h:inputHidden value="#{personsView.person.
bday}">
<f:convertDateTime dateStyle="short" /> </h:inputHidden>
</td>
</tr>
<tr>
<td> <h:outputLabel value="Город: #{persons View.person.cityId.name}"/> </td>
<td>
<h:inputHidden value="#{personsView.id_City}"/> </td>
</tr>
<tr>
<td>
<h:commandButton action="#{personsView.del_yes_Person}"
value="Удалить" /> <h:commandButton action="personsPage"
value="Отменить" />
</td>
</tr>
</table>
</h:form>
</td>
</tr>
</table>
</f:view>
</body>
</html>
Упражнения
1.Проанализируйте отличия страниц добавления, редактирования и удаления персон.
2.Объясните, как обеспечить контроль удалений связанных внешними ключами записей справочных таблиц?
3.Самостоятельно доработайте фрагменты приложения для обслуживания таблицы рабочих мест.
243