Аудитория: Профессиональные Web разработчики, желающие переводить свои приложения на современную, динамическую Web платформу. В курсе особое внимание уделяется быстрой разработке Web приложений, поэтому используются технологии, которые действительно были разработаны для этой цели – в первую очередь Java Server Faces (JSF).
Начальная подготовка: основы Java, основы разработки Web приложений на уровне HTML страниц и технологии Servlets. Основы XML.
Цель: по окончанию курса, слушатели самостоятельно смогут создавать Web приложения с мощным пользовательским интерфейсом, в основе которого будут такие технологии и идеи, как AJAX и Oracle Application Development Framework (ADF). Слушатели самостоятельно смогут создавать доступ к любым базам данных через компоненты Enterprise Java Beans (EJB 3.0) и Oracle BC4J. Эти данные будут отображаться на Web страницах, будут редактироваться в транзакциях сервера приложений.
Основная задача курса – научить слушателей быстро создавать мощные, динамические страницы с использованием идеи AJAX и частичного изменения содержимого страницы (PPR) с помощью компонент Oracle ADF. Среда разработки Oracle Java Developer 11 позволит слушателю визуально создавать шаблоны страниц и страницы, управлять потоками навигации между страницами, создавать динамические, контекстные меню, выпадающие списки, диалоговые окна и многие другие элементы современного Web интерфейса, который стал в настоящее время особенно популярен в различных компаниях. Разработка приложений больше напоминает создание традиционных приложений GUI, чем Web-приложений. JSF-приложения, написанные на JSF, как правило короче, проще для понимания, и их легче поддерживать, чем их аналоги созданные в стиле Model 2
Вопросы
История развития Oracle ADF Faces
От технологии сервлетов, к технологии разработки приложений с мощным пользовательским интерфейсом, в основе которой JSF и AJAX. Технология JSF серьезно облегчает разработку Web приложений, сходство между JSF и такими технологиями , как AWT, SWING, Borland Delphi. Преимущества, предоставляемые технологией JSF. Введение в архитектуру Model-View-Controller (MVC ), применительно к технологии JSF. Компонентная архитектура JSF. Использование JSP страниц. Преимущества разработки страниц с помощью разметки XML. Организация JSF приложения для последующего разворачивания на сервере. Порядок создания многомодульного приложения масштаба предприятия. Дескрипторы развертывания приложения web.xml, ejb-jar.xml, xxxx-jdbc.xml, application.xml. Пример создания многомодульного приложения и его размещение на сервере. Настройка безопасного доступа пользователей к приложению. Конфигурирование Faces с помощью faces-config.xml. Подключение бинов управления к конфигурации приложения. Использование языка выражений (EL) на страницах, для доступа к свойствам и методам бинов. Создание собственных Преобразователей (Resolver) и подключение их к приложению. Подключение к странице библиотек тегов JSF. Внедрение в страницу языка JavaScript. Формирование на странице JSF сообщений. Использование аннотации @EJB для доступа к компонентам модели данных. Навигация между страницами - описание в файле faces-config.xml. Описание правил перехода по страницам с помощью специальных методов управляющего бина. Жизненный цикл запроса в JSF – 6 фаз. Управление жизненным циклом с помощью методов класса FacesContext. Конвертеры данных в JSF. Стандартные конвертеры. Специализированные конвертеры и реализация интерфейса Converter. Регистрация конвертеров в контексте. Стандартная проверка поступающих данных. Проверка в слое контроллера и модели данных. Класс ValidatorException для обработки ошибок. Создание и подключение к приложению специализированных автономных классов для проверки данных. Интерфейс Validateable и его реализация. Работа с обработчиками событий жизненного цикла. Интерфейс PhaseListener и его реализация в собственных классах, регистрация класса в контексте приложения.
ADF Faces rich client – это технология JSF с использованием идеи AJAX. Особенности архитектуры ADF компонент. Категории и типы компонент. Создание простого приложения ADF Faces с помощью Oracle JDeveloper. Конфигурация ADF компонент на сервере приложений Oracle WebLogic
Настройка файла web.xml, использование параметров Faces. Конфигурационный файл faces-config.xml, adf-config.xml, adf-settings.xml, trinidad-config.xml.
Связанные и не связанные потоки, их назначение и использование. Создание связанного рабочего потока. Определение точки входа в рабочий поток. Управление навигацией и правилами в потоке. Регистрация бинов управления в ADF потоках, определение свойств бинов. Добавление активных элементов и элементов управления в рабочие потоки. Динамическое управление навигацией в рабочем потоке. Связанные потоки, использование фрагментов страниц на связанных потоках, передача параметров и возврат результатов из связанных потоков. Встраивание связанного потока в страницу. Типы активных элементов на рабочих потоках. Использование компоненты Router в рабочем потоке. Вызов методов бизнес логики из потока. Спецификация параметров и возвращаемого результата для вызова методов. Вызов из одного потока другого потока. Return компонент в рабочем потоке. Параметры для связанного рабочего потока. Спецификация возвращаемого значения из рабочего потока. Использование рабочего потока в качестве региона на странице. Создание параметров для региона. Динамические регионы на страницах. Комплексные рабочие потоки. Обработка исключительных ситуаций в рабочем потоке.
Создание страниц на основе готовых шаблонов. Разработка собственного шаблона страницы и регистрация его в репозитории среды разработки. Определение в шаблоне границ (facet) и параметров. Начало разработки пользовательского интерфейса. Введение в технологию PPR – обновление части содержимого страницы, как реализации идеи AJAX в визуальных компонентах Oracle ADF. Триггеры для обновления части страницы и свойства визуальных компонент для реализации отправки запросов серверу приложений. Активное использование JavaScript на странице для отображения сообщений. Проверка и конвертация данных в ADF, реализованная на клиентском месте. Отображение сообщений с помощью JavaScript.
Организация содержимого на странице. Компоненты управления страницей и размещением компонент (Page Layout Containers). Пример создания простейшей ADF страницы – подключение библиотек. Управление геометрией страницы. Вложение компонент в другие компоненты. Типичное использование контейнеров на странице. Равномерное размещение информации на странице с помощью контейнеров. Компонент panelStretchLayout. Использование panelSplitter для создания панелей с возможностью изменения размеров пользователем в Web броузере. Предопределение границ для содержимого страницы с помощью компоненты panelBorderLayout . Выравнивание содержимого на пользовательских формах. showDetail и showDetailHeader компоненты для динамического отображения и скрытия содержимого части страницы. Перехват события разворачивания содержимого в управляющем бине (событие AdfDisclosureEvent). Компонента panelAccordion для размещения на странице большого объема информации, но отображения в определенный момент только одной ее части. panelTabbed компонент для создания одних из самых популярных страниц с закладками. panelHeader – многофункциональный заголовок страницы. Панели для отображения списков. Динамическое изменение количества элементов в списке, без перерисовки всей страницы. Группировка элементов на странице с компонентой panelGroupLayout. Горизонтальное и вертикальное разделение содержимого на странице с помощью компоненты spacer.
Компоненты для ввода данных и определения форм. Компонент af:form для создания пользовательского ввода данных. Использование на странице нескольких форм для организации многофункционального ввода данных – компонента subform. Компоненты для ввода данных. Свойство компонент autoSubmit для немедленной отправки информации на сервер приложений при внесении изменений пользователем. Компоненты для визуализации ввода числовой информации пользователем - inputNumberSlider, inputRangeSlider, inputNumberSpinbox. Компоненты для визуализации ввода даты и цвета в виде выпадающих, динамических окон – chooseColor и inputDate. Использование на страницах selectBooleanRadio, selectBooleanCheckbox, selectManyCheckbox, selectOneListbox, selectManyListbox и другие, организация динамического ввода данных с помощью вызова AJAX методов для отправки изменений на сервер и частичной перерисовки страницы в зависимости от введенных данных. Разработка форм для переноса данных из одного окна в другое на странице, с помощью компоненты Shuttle. Добавление JavaScript в компонент с помощью тега clientListener для вызова удаленного метода в управляющем бине сервера приложений. Компонент richTextEditor для предоставления пользователю возможности форматировать введенный текст. Предоставление пользователю возможности просматривать введенный текст в HTML формате – динамически, без перерисовки страницы. Компонента для загрузки файлов из Web браузера. Реализация метода загрузки и динамическое подтверждение факта загрузки файла на сервер приложений. Настройка файла web.xml для организации хранения загруженных файлов на сервере приложений.
Компоненты для отображения данных в таблицах и деревьях. Немедленное или отложенное извлечение данных для отрисовки в клиентском броузере, свойство fetchSize – для компонент отображения данных. Атрибут rowSelection и событии выбора строки таблицы для динамического создания AJAX запроса на сервер приложений. Пример создания отношения мастер-деталь с динамической перерисовкой детальной таблицы.Обеспечение редактирования данных в таблицах и деревьях. Получение доступа к выполнению транзакционных методов в EJB компонентах из управляющих бинов. Использование выпадающих диалогов, окон и меню в таблицах и деревьях. Класс CollectionModel для формирование данных для отображения в таблицах. Свойства колонок в таблицах и форматирование данных. Обеспечение сортировки данных в таблицах. Формирование транзакций для данных, выбранных в таблице. Использование компоненты detailStamp для скрытия или отображения детализации по записи. Реализация фильтрации в таблице: компонент filterModel и класс FilterableQueryDescriptor. Использование clientListener для создания вызова серверного метода из AJAX скрипта для фиксации факта выбора записи в таблице. Использование JavaScript для получения доступа к данным выбранной записи на клиентском месте. Работа с деревьями. Класс TreeModel. Перехват события RowDisclosureEvent для динамического управления содержимым дерева. Компонента treeTable для отображения дерева в таблицах. Отображение в таблице пользовательского меню, панели инструментов, панели статуса. Наполнение этих элементов динамическим содержимым. Экспортирование данных из таблиц в стандартные форматы (Excel, HTML). Использование XSLT-FO трансформации для расширения экспорта табличных данных в любой другой стандартный формат.
Использование компонент для отображения списков данных (LOV) в выпадающих диалогах. Компонент inputListOfValues. Разработка модели данных для выпадающего списка. Компонент InputComboboxListOfValues.
Использование на страницах компонент для поиска данных – QuickQuery компонента. Класс QueryModel и управление критериями поиска через поисковую модель. Использование поисковой компоненты без модели, событие QueryListener.
Разработка выпадающих меню, диалогов и окон. Компоненты dialog, noteWindow, panelWindow, popup. Скрытие и отображение выпадающих элементов. Динамическая доставка содержимого в выпадающий элемент на клиентское место. Использование диалогов для управления навигацией и вызовом серверных методов из броузера. Создание внешних окон в броузере. Использование данных из внешнего диалога в потоке страниц приложения.
Разработка меню, панелей инструментов. Компоненты menu, menuBar, commandMenuItem. Определение горячих клавиш для элементов меню. Файл конфигурации меню. Встраивание меню в шаблон страниц для последующего использования на JSP странице. Компонент toolbar для отображения панели инструментов.
Отображение данных с помощью визуальных компонент. Отображение простых и форматированных текстов – outputText, outputFormatted; графические данные – компоненты image, commandImageLink, media.
Работа с сообщениями и подсказками. Глобальные и inline сообщения. Группировка сообщений с элементами пользовательского ввода – компонент panelLabelAndMessage. Формирование и отображение помощи для компонент. Динамическая доставка содержимого помощи на клиентское место, по мере необходимости.
Работа с компонентами навигации. Кнопки и линки для осуществления навигации. Регистрация навигации в конфигурационном файле. Визуальная разработка навигационных потоков между страницами. Компоненты navigationPanes, commandNavigationItem, breadCrumbs, для реализации навигации между страницами и отображения иерархии. Создание меню навигации, файл XMLMenuModel.xml. Узлы элементов (itemNode), группы и разделяемые (Shared) узлы в описании меню. Связывание описания метаданных меню с JSF страницей. Train компонента для реализации навигации между страницами.
Создание шаблонов, фрагментов и компонент для повторного использования.
Использование стилей и skins для определения внешнего вида приложения. Создание собственных skin. Динамическое формирование выбора skin пользователем.