- •Обозначения и сокращения
- •введение
- •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. Защита приложения паролем
- •Заключение
- •Библиографический список
Министерство образования и науки Российской Федерации
Уральский федеральный университет имени первого Президента России Б. Н. Ельцина
В. И. Суханов
РАЗРАБОТКА ВЕБ-ПРИЛОЖЕНИЙ В JAVA EE 6
Учебное пособие
Екатеринбург
УрФУ
2011
УДК 004.438Java EE 6(075.8)
ББК 32.973-08.1.73 С91
Рецензенты:
кафедра прикладной информатики Уральского института экономики, управления и права
(зав. кафедрой — канд. техн. наук, профессор А. Г. Жигалин); С. М. Червинский, канд. техн. наук, главный программист УрО РАН
Суханов, В. И.
С91 Разработка веб-приложений в Java EE 6 : учебное пособие / В. И. Суханов. –
Екатеринбург : УрФУ, 2011. – 272 с.
ISBN 978-5-321-02077-7
Учебное пособие содержит описание технологии Java EE 6 разработки веб-
приложений для работы с базами данных СУБД PostgreSQL. Приведены необходимые
справочные и методические материалы по используемым инструментальным средствам, примеры фрагментов программ, упражнения, полные тексты демонстрационного приложения. Изложение ведется по принципу «от простого к сложному».
Учебное пособие предназначено для студентов направления 231000
«Программная инженерия» УрФУ и может быть полезным программистам, разработ-
чикам веб-приложений корпоративных информационных систем.
Бибилиогр.: 10 назв. Табл. 24. Рис. 35.
УДК 004.438Java EE 6(075.8)
ББК 32.973-08.1.73
ISBN 978-5-321-02077-7 |
© Уральский федеральный |
|
университет, 2011 |
|
© Суханов В. И., 2011 |
Оглавление
Обозначения и сокращения 6
введение 7
1. Установка и настройка инструментальных средств 8 1.1. Установка и подготовка к работе операционной системы 8 1.2. Установка программного обеспечения 9 1.3. Создание таблиц в базе данных 10
1.4. Разработка веб-приложений в Netbeans 6.8 15
2. Основы Java EE 6 30 2.1. Распределенные многоуровневые приложения 30 2.2. Контейнеры Java EE 31
2.3. Сервер GlassFish v3 33 2.4. Структура приложения 34 2.5. Конфигурирование приложений 36 2.6. Задание ссылок на ресурсы 38
3. Технология JavaServer Faces TM (JSF) 40
4. Введение в компоненты Facelets 44
4.1. Веб-страницы 44
4.2. Разработка простого приложения Facelets 45 4.3. Использование шаблонов 51
5. Унифицированный язык записи выражений 56
6. Использование технологии JavaServer Faces 59
6.1. Добавление компонент библиотеки HTML на страницу 59
6.2. Использование компонент для таблиц баз данных 62 6.3. Использование тегов библиотеки Core 63
7. Использование конвертеров, слушателей и проверок 65
7.1. Использование стандартных преобразователей 65
7.2. Регистрация слушателей для компонентов 68
8. Внешние объекты (JavaBeans) 73 8.1. Создание класса внешних объектов 73
8.2. Описание свойств бинов 75
8.3. Написание методов внешних бинов 82
8.4. Проверка бинами 85
9. Конфигурирование приложений JavaServer Faces 87
9.1. Файл конфигурации ресурсов приложения 87 9.2. Упорядочение ресурсов конфигурации приложения 88
9.3. Конфигурирование состояния проекта 89
9.4. Выбор конфигурации бина 89 9.5. Регистрация сообщений об ошибках как пакет ресурса 97
3
9.6. Проверка по умолчанию (Default Validator) 98
9.7. Конфигурирование правил навигации (Navigation Rules) 99 9.8. Основные требования приложения JavaServer Faces 101 9.9. Конфигурирование приложений в дескрипторе развертывания 102
10. Технология Java Servlet 106
11. Введение в Java Persistence API 111 11.1. Требования к классам сущностей 111 11.2. Xранимые поля и свойства в классах сущностей 111 11.3. Внедряемые классы в сущностях 118 11.4. Наследование сущностей 119
11.5. Стратегии наследования сущностей с отображением 121 11.6. Управление сущностями 123 11.7. Запросы сущностей 128
12. Примеры хранимых сущностей 129 12.1. Приложение order 129
12.2. Пример получения схемы отношений на основе таблиц БД 138
13. Язык запросов Java Persistence Query Language 151
13.1. Терминология языка запросов 151 13.2. Создание запросов в Java Persistence Query Language 151 13.3. Упрощенный синтаксис языка запросов 153 13.4. Примеры запросов 154 13.5. Запросы с навигацией связанных сущностей 154
13.6. Запросы с другими условными выражениями 156
13.7. Изменение и удаление группы сущностей 157 13.8. Полный синтаксис языка запросов 158 13.9. Примеры запросов Java Persistence Query Language 170
14. Язык запросов CriteriaAPI 173
14.1. Моделирование сущностей с использованием Metamodel API 173 14.2. Основы типизации запросов в Criteria API и Metamodel API 174 14.3. Корни запроса 175 14.4. Использование объединения в запросе 175
14.5. Навигация путей в запросах 176
14.6. Ограничения на результаты запроса 176
14.7. Управление результатами запросов 178 14.8. Исполнение запросов 179
15. Связывание ресурсов 180
15.1. Ресурсы и служба имен JNDI 180
15.2. Объекты DataSource и пулы соединений (Connection Pools) 180 15.3. Внедрение ресурсов 181 15.4. Адаптеры ресурсов 184
15.5. Аннотации метаданных 186
4
15.6. Интерфейс CommonClient 190
16. Безопасность веб-приложений 192 16.1. Краткий обзор 192 16.2. Механизмы обеспечения безопасности 194 16.3. Безопасность сервера предприятия 195 16.4. Использование защищенного соединения SSL 202
16.5. Введение в сертификаты (Certificate) и SSL 205
17. Подготовка приложения к развертыванию 207
18. Пример приложения 212 18.1. Создание проекта веб-приложения 212 18.2. Создание и редактирование файлов веб-приложения 212 18.3.Структура приложения JavaEE 6 215 18.4. Программирование вида для объектов 219 18.5. Дизайн главной страницы 222 18.6. Страница просмотра записей таблицы городов 223
18.7. Страница добавления записей о городах 226 18.8. Страница редактирования записей о городах 228
18.9. Страница удаления записей о городах 230
19. Обработка связей внешних ключей 232 19.1. Разработка класса для вида сущности 233 19.2. Доработка вида для городов 235 19.3. Разработка обзорной страницы 235
19.4. Страница для добавления записей с внешними ключами 238
19.5. Страница для редактирования записей с внешними ключами 240 19.6. Страница для удаления записей с внешними ключами 242
20. Дополнительные функции 244
20.1. Сортировка записей таблицы 244
20.2. Контроль за удалением связанных записей 244 20.3. Контроль ввода наименований 245 20.4. Запросы к БД на языке Java Persistence Query Language 246 20.5. Управление страницами при просмотре таблицы 247
20.6. Создание и просмотр отчетов 258
20.7. Использование шаблонов и стилей 263
20.8. Защита приложения паролем 266
21. Курсовое проектирование
по дисциплине "Клиент-серверные технологии" 268
Заключение 269 Библиографический список 270
5
Обозначения и сокращения
ООП — объектно-ориентированное программирование.
ОС — операционная система.
ПК — персональный компьютер.
СУБД — система управления базами данных.
API — Application Programming Interface, программный интерфейс
разработчика приложений.
AWT — Abstract Windowing Toolkit, общая библиотека компонентов.
CSS — Cascade Style Sheet, таблица каскадных стилей.
EIS — Enterprise Information System, информационная система предприятия.
EL — Expression Language, язык выражений JSTL.
GUI — Graphic User Interface, графический интерфейс с пользователем.
HTML — Hyper Text Markup Language, язык гипертекстовой разметки.
J2EE — JavaTM 2 Platform Enterprise Edition, платформа для разработки корпоративных информационных веб-приложений.
JAR — Java ARchive, файл (ZIP-архив), содержащий часть программы на языке Java.
JavaEE — Java Enterprise Edition, платформа для разработки корпоративных веб-приложений.
JPQL — язык запросов Java Persistence query language.
JRE — Java Runtime Environment, среда исполнения программ на языке Java.
JSP — JavaServer Pages, технология разработки страниц.
JSF — JavaServer Faces, технология разработки страниц.
JSTL — JavaServer Pages Standard Tag Library, стандартная библиотека тегов.
SGML — Standard Generalized Markup Language.
SQL — язык запросов к базам данных.
UI — User Interface, интерфейс с пользователем.
WAR — Web Archive, веб-архив.
WML — wireless markup language, язык разметки для беспроводных систем.
XML — Extensible Markup Language, расширяемый язык разметки.
6
введение
Разработка клиент/серверных приложений с веб-интерфейсами привлекает
внимание программистов, администраторов и пользователей тем, что существенно
упрощается как сама информационная система организации, так и ее эксплуатация. Наличие центрального сервера позволяет организовать надежное хранение данных и
проверкуполномочийнадоступкним.Отсутствиеспециальногопрограммногообеспе-
чения на стороне клиента минимизирует задачи развертывания и администрирования
приложений. Для работы клиенту достаточно иметь компьютер с сетевым подключе-
нием и стандартный интернет-браузер. Пользователи могут выполнять свои функции с любого компьютера внутренней сети организации или, если открыт доступ, с любого
компьютера, подключенного к сети Интернет. Это повышает мобильность, позволяет
расширить круг пользователей далеко за пределами офиса.
Существует множество конкурирующих технологий для создания таких систем. Наиболееизвестныетрадиционныетехнологиииспользуютстандартныевеб-серверы,
например, широко распространенные Apache, Zope, IIS и т. д. На некотором поддер-
живаемом ими языке программирования (Perl, PHP, Python и др.) пишутся программы,
генерирующие динамические страницы в ответ на запросы пользователя, в которых
широко используются хранимые в СУБД данные. В последнее время все большее внимание разработчиков привлекают Java-технологии, обладающие рядом преимуществ.
Наиболее значимыми являются их надежность, поддерживаемая сертификацией ин-
струментов разработки мировыми лидерами программной индустрии, независимость
от платформы, идеология открытого кода и их свободное распространение.
Учебное пособие основано на официальных материалах [1-5], дополненных примерами проверенных автором программ, содержит описание инструментальных
средств, используемых для разработки веб-приложений в технологии JavaTM Platform Enterprise Edition 6 (Java EE 6), которая определяет стандарт для разработки многоуровневых корпоративных приложений. Серверы JavaEE упрощают разработку приложений, предоставляя программистам готовые сервисы в виде стандартизованных
модульных компонент. Часть функций выполняется автоматически, например, про-
верка полномочий, и не требует программирования. Среди большого разнообразия серверов JavaEE здесь рассматривается Sun GlassFish Enterprise Server v3, простой и доступный, но обладающий хорошей функциональностью, достаточной для изучения всех аспектов технологии и разработки корпоративных информационных систем мас-
штаба среднего и малого бизнеса.
Приступая к изучению этих технологий, необходимо знать:
1)программирование для веб (особенности взаимодействия сервера и клиента: как формируется, из каких частей состоит запрос, как он отправляется на сервер, в
каком виде поступает ответ с сервера; язык HTML; каскадные таблицы стилей (CSS);
основы языка JavaScript);
2)язык программирования Java и основные элементы его технологии: среды
разработки, компиляторы, основные библиотеки для обработки данных;
3)работу с СУБД, язык SQL создания таблиц и запросов к базам данных.
Необходимо иметь представление о технологии JDBC для доступа к базам данных из
программ на языке Java.
Кроме того, нужно иметь следующее программное обеспечение (желательно
последних версий): JDK — основу Java-технологии, среду разработки приложений на
языке Java (например, NetBeans 6.8 или Eclipse), СУБД для работы с базами данных, драйверы JDBC для выбранной СУБД, редактор HTML-кода и, наконец, сервер. Кроме того, для работы над материалом полезно воспользоваться примерами из руководства [1], которые частично использованы в данном учебном пособии.
7