Вступительное слово
Предисловие

Часть I. Введение в Grails

Глава 1. Коротко о Grails
1.1. Как появилась платформа Grails?
1.2. Установка
1.3. Пример программы Web 2.0 QOTD
1.4. Создание модели предметной области
1.5. Добавление действий в пользовательский интерфейс
1.6. Улучшение архитектуры
1.7. В заключение

Глава 2. Основы Grails
2.1. Введение
2.2. Исследование системы типов данных
2.3. Особенности, позволяющие экономить время
2.4. Специальные возможности Groovy
2.5. В заключение

Часть II. Основы Grails

Глава 3. Моделирование предметной области
3.1. Hubbub: приступаем к созданию приложения
3.2. Первый объект класса предметной области
3.3. Проверка: барьер на пути мусора
3.4. Определение модели данных - 1:1, 1:m, m:n
3.5. В заключение

Глава 4. Включение модели в работу
4.1. Создание пользовательского интерфейса с помощью механизма скаффолдинга
4.2. Извлечение данных динамическими методами и механизм Query by Example
4.3. Более сложные способы выполнения запросов
4.4. Начальная загрузка исходных данных
4.5. В заключение

Глава 5. Управление потоком выполнения приложения
5.1. Основы контроллеров
5.2. Службы: повышаем надежность и удобство сопровождения приложения
5.3. Привязка данных
5.4. Управляющие объекты
5.5. Работа с изображениями
5.6. Обработка запросов фильтрами
5.7. Создание собственных отображений URL
5.8. В заключение
Глава 6. Разработка привлекательных представлений, форм и макетов
6.1. Основные теги форм
6.2. Расширение представлений
собственными тегами
6.3. Добавление привлекательных макетов
6.4. Применение тегов Ajax
6.5. В заключение

Глава 7. Создание надежных приложений
7.1. Зачем необходимо тестировать
программное обеспечение?
7.2. Модульное тестирование
7.3. Интеграционное тестирование
7.4. Функциональное тестирование
7.5. В заключение
Часть III. Grails на каждый день

Глава 8. Расширения: добавляем поддержку Web 2.0 за 60 минут
8.1. Использование чужого труда в своих интересах
8.2. Добавление графиков и диаграмм
8.3. Добавление поддержки электронной почты
8.4. Полнотекстовый поиск: реализуем свою процедуру поиска
8.5. Улучшение интерфейса с помощью GrailsUI
8.6. В заключение

Глава 9. Реализация мастеров и последовательностей
с помощью веб­потоков
9.1. Что такое веб­поток?
9.2. Работа с веб­потоками
9.3. Дополнительные особенности веб­потоков
9.4. Тестирование веб­потоков
9.5. В заключение

Глава 10. Не впускайте незнакомцев,
или к вопросу о безопасности
10.1. Почему безопасность имеет такое значение
10.2. Защита от злоумышленников
10.3. Управление доступом
10.4. Дальнейшее исследование Spring Security
10.5. В заключение

Глава 11. Удаленный доступ
11.1. Решение на базе REST
11.2. Согласование формата представления
11.3. Практика реализации интерфейса REST
11.4. Командно­ориентированные удаленные взаимодейст­вия
11.5. В заключение

Глава 12. Обмен сообщениями и планирование заданий
12.1. Автостопом по работе с сообщениями
12.2. Использование расширения JMS для платформы Grails
12.3. Механизм планирования заданий платформы Grails
12.4. Дополнительные возможности планирования
12.5. В заключение
Часть IV. Расширенные возможности Grails

Глава 13. Тонкое искусство владения механизмом GORM
13.1. Искусство моделирования предметной области
13.2. Искусство кэширования: переходим от 2 пользователей к 210
13.3. Интеграция с имеющимся ПО: работа с несколькими источниками данных
13.4. Сложности взаимодействий с существующими базами данных
13.5. В заключение

Глава 14. Платформа Spring и транзакции
14.1. Spring и Grails
14.2. Использование транзакций в механизме GORM
14.3. В заключение

Глава 15. После компиляции, тестирования и запуска
15.1. Система сборки платформы Grails
15.2. Автоматизированная сборка - не для любителей
15.3. Обслуживание изменений в модели данных
15.4. В заключение

Глава 16. Разработка расширений
16.1. Создание нашего первого расширения
16.2. Публикация расширений
16.3. Интеграция с платформой Grails
16.4. В заключение
Алфавитный указатель