Лектор : Георги Денчев comsoft ltd

Post on 03-Jan-2016

50 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Разработка на Struts- базирани WEB приложения с Oracle JDeveloper 10g. Лектор : Георги Денчев ComSoft Ltd. Съдържание. Въведение в Struts Въведение в Oracle Application Development Framework (ADF) Изграждане на примерно Struts - базирано приложение Заключение. Съдържание. - PowerPoint PPT Presentation

TRANSCRIPT

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Лектор: Георги ДенчевComSoft Ltd.

Разработка на Struts-базирани WEB

приложения с Oracle JDeveloper 10g

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

1. Въведение в Struts

2. Въведение в Oracle Application Development Framework (ADF)

3. Изграждане на примерно Struts-базирано приложение

4. Заключение

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

1. Въведение в Struts Какво представлява Struts Ролята на Struts в приложението Основни градивни елементи и класове Основни похвати Поддръжка на Struts в JDeveloper 10g

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Какво представлява Struts

Платформа за разработка на WEB приложения

Базиран на стандартни технологии – JavaBeans, Java Servlets, JavaServer Pages (JSP), XML, …

Софтуер с отворен код Плод на усилията на разрастващо се

общество от разработчици

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Какво представлява Struts

Реализира MVC (Model-View-Controller) парадигма

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

1. Въведение в Struts Какво представлява Struts Ролята на Struts в приложението Основни градивни елементи и класове Основни похвати Поддръжка на Struts в JDeveloper 10g

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Ролята на Struts в приложението

Controller Всички заявки минават през логическия център

на приложението Лесно се конфигурира през XML файлове Реалната работа се извършва от Action класове,

извиквани от контролера Вграден механизъм за валидация на входните

данни Отлична архитектура и дизайн

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Ролята на Struts в приложението

View Няма конкретно обвързване с определена

технология Вградена поддръжка за интернационализация

View (JSP) Вградени библиотеки от тагове за визуализация

Избягва се употребата на скриптлети Улеснява се работата на дизайнерите на

страницата

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Ролята на Struts в приложението

Model Няма конкретно обвързване с определена

технология Логиката трябва да се реализира изцяло от

разработчика Съществуват помощни продукти, реализиращи

връзката с базата данни Oracle BC4J Enterprise Java Beans (EJB) Hibernate

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

1. Въведение в Struts Какво представлява Struts Ролята на Struts в приложението Основни градивни елементи и класове Основни похвати Поддръжка на Struts в JDeveloper 10g

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът ActionServlet

Представлява сървлет, който съпоставя определени класове на събития (обикновено HTTP POST заявки)

Предава управлението на подходящ RequestProcessor

Поддръжка на множество модули в рамките на едно приложение

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът RequestProcessor

Най-важен в Controller частта на приложението

Предоставя изключително много точки за разширение – гъвкав и мощен

Създава и използва инстанции на Action, ActionForm и ActionForward

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът RequestProcessor

Настройва се чрез конфигурационен файл (struts-config.xml) – лесно и бързо

По време на разработката на WEB приложението класовете Action и ActionForm се разширяват в зависимост от конкретната задача

Конфигурационният файл указва по какъв начин да се използват разширените класове

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът RequestProcessor

Предимства на подхода Цялата логика на управление на приложението е

в един йерархичен текстов файл улеснява процеса на усвояване, особено при

големи приложения Не е необходимо дизайнерът на страниците да е

запознат с Java код Не е необходима прекомпилация на

приложението

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът ActionMapping

ActionMapping съдържа информация за съответствие между събития (HTTP заявки) и определени Action класове

Controller частта на Struts извиква определен Action клас в зависимост от текущата HTTP заявка

RequestProcessor подава ActionMapping обекта на “execute” метода на извикания Action

Това осигурява на Action обекта достъп до логиката на управление на приложението (control flow)

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът ActionMapping

От конфигурационния файл “struts-config.xml” се извлича набор от ActionMapping класове

Те се обединяват в общ контейнер – АctionMappings

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът ActionForm

Общ модел за данни които се задават или модофицират от HTTP форма (реализира се като JavaBean клас)

Абстрактен клас, който се разширява за всяка различна входна точка за данни в приложението

Множество HTTP заявки могат да бъдат асоциирани с един и същ модел на предаваните данни (ActionForm)

Един и същ ActionForm може да се използва в няколко последователни страници (wizards)

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът ActionForm

За всеки параметър XXX който трябва да се извлече от HTTP заявката, ActionForm трябва да дефинира getXXX() и setXXX() методи

Ако искаме да валидираме входните данни, трябва да реализираме метода “validate”

Ако искаме да инициализираме стойности преди тяхното попълване, трябва да реализираме метода “reset”

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът ActionForm

Алтернативни ActionForm типове Map-backed ActionForm

Стойностите се съдържат в Map Динамично, гъвкаво представяне на данните

DynaActionForm ActionForm с декларативно зададени имена на

параметрите – улеснява реализацията и поддръжката

Методът “reset” възстановява стойностите на ВСИЧКИ параметри

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът Action

Играе главна роля в Struts Основни задачи/отговорности

Осъществяване на достъп до бизнес слоя на приложението

Подготовка на данните за използване от презентационния слой

Обработка на възникналите грешки по време на изпълнение на горните две задачи

Пренасочване към подходяща точка от View частта на приложението

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът Action

Отправна точка за изпълнимия код е методът “execute” (“perform”)

Данните от HTTP заявката са вече обработени и се предават на Action обекта посредством ActionForm обект

Action обектите имат достъп и до самата HTTP заявка, както и до HTTP отговора

Action класовете определят логиката на управление на приложението

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът Action

Връща към извикващия RequestProcessor ActionForward обект

ActionForward указва View частта от приложението, към която ще се предаде управлението

Възможно е да се изгражда верига от Action класове (Action chaining)

При възникване на грешки е възможно да ги обработи и върне в user-friendly вид към клиента

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът ActionForward

Указва следващата отправна точка за приложението чрез атрибута си “path”

Атрибутът “redirect” определя дали ще се извърши пренасочване на сървъра (forward) или HTTP пренасочване (redirect)

Два основни типа ActionForward глобални (могат да се използват в цялото

приложение) локални (дефинирани са в конкретен

ActionMapping)

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Класът ActionError

Съдържа описание на възникнала по време на работата на приложението грешка

Дава възможност за логическа интерпретация на грешките в достъпен за потребителя формат

Възможно е да се обединяват много грешки в един ActionErrors обект

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Да обединим всичко в едно – “struts-config.xml”

Точката на обединение на всички компоненти на Struts-базираното приложение

Съдържа ActionForms, ActionForwards (глобални + локални), ActionMappings

Съдържа обръщения към ресурси на приложението

Може да дефинира глобална обработка на грешки (exceptions)

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Примерен “struts-config.xml”

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Обобщение – Struts control flow

1) Клиентът извършва заявка

2) WEB контейнерът предава заявката към ActionServlet

3) Ако в приложението са дефинирани множество модули, ActionServlet избира подходящия модул и съответстващия му RequestProcessor

4) RequestProcessor намира mapping, съответстващ на клиентската заявка

5) Ако mapping указва form bean, RequestProcessor проверява дали вече съществува такъв form bean (ако не – създава такъв)

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Обобщение – Struts control flow

6) Ако mapping указва form bean, RequestProcessor попълва form bean от клиентската заявка

7) Ако параметърът на mapping “validate” е истина, ActionServlet извиква метода “validate” на form bean

8) Ако “validate” не успее, RequestProcessor пренасочва към пътя, указан от “input” параметъра на mapping и процесът завършва

9) Ако с mapping се асоциира тип Action, той се използва наново ако вече съществува

10) RequestProcessor извиква “execute” метода на Action, като му подава създадения form bean (или null)

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Обобщение – Struts control flow

11) Action може да попълва form bean, да извиква бизнес методи и т.н.

12) Action връща ActionForward към RequestProcessor 13) Ако ActionForward съдържа път към друг Action,

започваме цикъла отначало; в противен случай цикъла завършва, управлението се предава на JSP страница (или друга презентационна технология)

14) Ако JSP страницата съдържа Struts HTML тагове и те виждат правилната form bean в заявката, стойностите им се попълват автоматично. В противен случай тагът <html:form> създава form bean

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

1. Въведение в Struts Какво представлява Struts Ролята на Struts в приложението Основни градивни елементи и класове Основни похвати Поддръжка на Struts в JDeveloper 10g

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Разширяване на класа RequestProcessor

Множество extension points – под формата на методи от вида processXXX()

Всички такива методи се извикват в рамките на “process” метода на RequestProcessor

RequestProcessor осигурява имплементация по подразбиране на всички методи от този вид

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Разширяване на класа RequestProcessor

processRoles() – позволено ли е на потребителя да изпълни съответния Action

Бърза реализация на централизирана подсистема за проверка на права

Най-често предефинираният метод

processPopulate(), processValidate() – позволяват собствена имплементация на попълването и валидацията на ActionForm

processLocale(), processNoCache(), …

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Валидация на входни данни

Добра практика е да се извършва в рамките на “validate” метода на ActionForm

При невалидни/некоректни данни Struts автоматично връща съобщенията за

грешки към потребителя атрибутът “input” на ActionMapping указва

точното място от View частта на приложението

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Валидация на входни данни

Struts Validator Алтернатива на традиционния метод на

валидация на данни (Struts 1.0) Вградени типове данни Декларативна валидация (отделен

конфигурационен файл), промяна без рекомпилация

Поддръжка на локализация на съобщенията за грешки

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Интернационализация и локализация в Struts

Интернационализация – дизайнът на приложението позволява адаптация към различни езици и региони

Struts гради върху стандартните средства, заложени в Java платформата

Разработчиците не са обвързани с използването на Struts за интернационализация на приложението

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Интернационализация и локализация в Struts

Интернационализация (Java) Java.util.Locale – разграничаване между различни

местоположения Java.util.ResourceBundle – централен склад за

съобщения; може да се извлича съобщение за даден Locale; поддръжка за добавяне на нов Locale без да се налага рекомпилация

Java.util.MessageFormat – форматиране на елементи (дати, валута, ...) според езика и региона на определен Locale

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Интернационализация и локализация в Struts

Локализация – процесът на адаптация на приложението към различни езици и региони

Локализация Struts поддържа Locale обект в сесията на всеки

потребител ServletRequest.getLocale() връща локала, зададен

от WEB браузъра, но Struts няма директен контрол върху този локал

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Интернационализация и локализация в Struts

Локализация MessageResources – клас, който унифицира

процеса на извличане на съобщения MessageResources осигурява достъп до resource

bundle по подразбиране, който се зарежда от controller сървлета

ActionMessage – клас-обвивка на едно локализирано съобщение

Поддръжка на обикновени съобщения и съобщения за грешка (ActionError в Struts 1.0)

Генерираните съобщения се запазват чрез метода “saveMessages(<request>, <messages>)”

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Предотвратяване на double submissions

Проблем в WEB програмирането е липсата на контрол върху приложението от страна на клиента (най-често web browser)

Double submissions – проблем, който се среща във ВСИЧКИ WEB приложения

В Struts се решава чрез използване на т.нар. token

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Предотвратяване на double submissions

Опростен сценарий Преди предаване на управлението на

презентационната логика се генерира token (който е уникален в рамките на един HTTP request)

В “execute” метода на Action, преди същинската логика, се проверява валидността на token Ако не е валиден, връщаме подходящо

съобщение за грешка към потребителя Ако е валиден, премахваме текущата token

информация и продължаваме

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Интеграция на Struts с други технологии

Struts 1.x включва технологии, които в Struts 1.0 са били включвани допълнително към ядрото

JSTL (Java Standart Tags Library) Библиотека с JSP тагове Улеснява голяма част от стандартните

операции, реализирани в една JSP страница Намалява употребата на скриптлети

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Интеграция на Struts с други технологии

Struts Validator Алтернативен начин за валидация на входни

данни (в Struts 1.0 можем да ползваме само метода “validate” на ActionForm)

Декларативна валидация на данни Бърза и гъвкава имплементация Вградени валидатори за наи-често използваните

типове данни – integer, float, date, regex, … При промяна не се налага рекомпилация

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Интеграция на Struts с други технологии

Tiles Осигурява консистентност на външния вид на

приложението Изпозва JSP includes – широко разпространена

техника, оптимизирана в повечето Java сървлет контейнери

Tile – синоним на шаблонна страница

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Интеграция на Struts с други технологии

Tiles В основата стои layout template – страница, която

определя позицията на основни елементи (tiles) като заглавна част, меню, съдържание

Основните елементи също са страници По-лесна промяна, code reuse на ниво JSP

страница

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

1. Въведение в Struts Какво представлява Struts Ролята на Struts в приложението Основни градивни елементи и класове Основни похвати Поддръжка на Struts в JDeveloper 10g

Microsoft .NET Framework OverviewBulgarian Oracle User Group

JDeveloper 10g

Интегрирана среда за разработка (IDE) Поддържа пълния цикъл на разработка на

приложения – моделиране, кодиране, тестване, оптимизиране, ...

Използва последните Java, XML и SQL стандарти Съдържа множество wizards за улеснение и

автоматизация на дейности Визуални дизайнери на всяко ниво Мощен редактор на код

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Поддръжка на Struts в JDeveloper 10g Визуален дизайнер на потока от страници (page flow)

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Поддръжка на Struts в JDeveloper 10g Визуализация на компоненти по време на дизайн

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Поддръжка на Struts в JDeveloper 10g Подробен визуален редактор на “struts-config.xml”

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

2. Въведение в Oracle Application Development Framework (ADF) Какво представлява ADF Oracle ADF Binding Context Жизнен цикъл на ADF Интеграция на ADF със Struts

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Какво представлява ADF

Цялостен слой за продуктивна разработка на J2EE приложения

Използва готови шаблони и компоненти Поведение, базирано на метаданни Интегрира голям брой технологии,

възможност за избор

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Какво представлява ADF

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

2. Въведение в Oracle Application Development Framework (ADF) Какво представлява ADF Oracle ADF Binding Context Жизнен цикъл на ADF Интеграция на ADF със Struts

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Oracle ADF Data Controls

Абстракция на модела за данни на даден business service

Позволява достъп до всички business services по унифициран начин

Достъп до различни източници на данни и операции с тях

ADF BC, TopLink, JavaBeans EJB Session Beans, Web Services

Намират се в Data Control Palette Ако използваната технология е ADF BC,

съответстват на application module

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Iterator Bindings and Control Bindings

Осигуряват разделение между back-end данните и front-end визуализацията им

Iterator Bindings Осигуряват унифицирани методи за работа с

колекции от данни, доставени от data controls

Control Bindings Осигуряват на графичните контроли стандартен

интерфейс за комуникация с iterator bindings Позволяват извикване на “action” методи за

подготвяне на данни и обработка на събития

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Binding Containers and Binding Context

Binding Containers Именована група от свързани Iterator Bindings и

Control Bindings Наричани “UI Model”, тъй като осигуряват

подходяща част от данните за специфичен потребителски интерфейс

Oracle ADF Binding Context Осигурява контекста на данните за цялото

приложение Съдържа data controls и binding containers

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Oracle ADF Binding Context

Базиран на .xml конфигурационни фалове Изгражда се в “design time” в JDeveloper

Автоматична синхронизация с конфигурационните файлове

Възможност за дефиниране на собствени data bindings

В Web приложения “controller” слоят е отговорен за попълването на ADF Binding Context преди насочване към “view”

“View” слоят извлича данните от модела за визуализация (pull model)

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Oracle ADF Binding Context

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

2. Въведение в Oracle Application Development Framework (ADF) Какво представлява ADF Oracle ADF Binding Context Жизнен цикъл на ADF Интеграция на ADF със Struts

Microsoft .NET Framework OverviewBulgarian Oracle User Group

LifeCycle (interface)

Дефинира методите (етапите) от жизнения цикъл

Отговорности на LifeCycle Позволява на Web страниците да

взаимодействат с ADF модела Инициализира подходящия binding container за

всяка страница Обновява bindings стойностите в контейнера Подготвя данните за визуализация

Набор от класове, реализиращи LifeCycle PageLifeCycle, StrutsPageLifecycle StrutsJspLifecycle, StrutsUIXLifecycle

Microsoft .NET Framework OverviewBulgarian Oracle User Group

LifecycleContext

Съдържа информация за състоянието по време на жизнения цикъл

HTTP request/response Binding context Binding container (“UI Model”) Спсък със “събития”

Подава се като параметър на всички методи на LifeCycle

Разширява HashMap, така че могат да се съхраняват допълнителни данни

DataActionContext го разширява и поддържа работа с ADF Action класове

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Жизнен цикъл на ADF

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

2. Въведение в Oracle Application Development Framework (ADF) Какво представлява ADF Oracle ADF Binding Context Жизнен цикъл на ADF Интеграция на ADF със Struts

Microsoft .NET Framework OverviewBulgarian Oracle User Group

DataAction и DataForwardAction

Разширяват стандартния Action Осигуряват достъп до модела и жизнения

цикъл на ADF през ADF Binding Context (DataActionContext)

Осигуряват механизъм за обработка на т.нар. “събития” (events)

Задействат се от “view” частта на приложението Няма нужда от отделен Action за всяко събитие

Microsoft .NET Framework OverviewBulgarian Oracle User Group

BindingContainerActionForm

Разширява ActionForm, реализира DynaBean Автоматично прави достъпни атрибутите на

даден binding container Създава се автоматично от JDeveloper при

нужда в “struts-config.xml” По време на изпълнение на приложението

DataAction(DataForwardAction) автоматично попълват и запазват промени в модела

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

3. Изграждане на примерно Struts-базирано приложение Представяне на Simple Polling System

(SPS) Изграждане на бизнес модела на

приложението

Изграждане на ViewController частта на приложението

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Представяне на Simple Polling System (SPS)

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Представяне на Simple Polling System (SPS)

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

3. Изграждане на примерно Struts-базирано приложение Представяне на Simple Polling System

(SPS) Изграждане на бизнес модела на

приложението

Изграждане на ViewController частта на приложението

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Изграждане на бизнес модела на приложението

Live Demo Бизнес обекти (business objects) Достъп до данните (data access) Бизнес услуги (business services)

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

3. Изграждане на примерно Struts-базирано приложение Представяне на Simple Polling System

(SPS) Изграждане на бизнес модела на

приложението

Изграждане на ViewController частта на приложението

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Изграждане на ViewController частта на приложението

Live Demo Предварително разширяване на Struts/ADF

framework Дизайн на приложението през диаграмата на

страниците Визуален стил на изграждане на JSP страници Разширяване на поведението на

DataForwardAction

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Съдържание

1. Въведение в Struts

2. Въведение в Oracle Application Development Framework (ADF)

3. Изграждане на примерно Struts-базирано приложение

4. Заключение

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Допълнителна информация

Strutsstruts.apache.org/

struts.apache.org/userGuide/

Oracle JDeveloperwww.oracle.com/technology/products/jdev/index.html

www.oracle.com/technology/software/products/jdev/htdocs/soft9051.html

Oracle ADFwww.oracle.com/technology/products/jdev/collateral/papers/10g/ADFFAQ/index.html

www.oracle.com/technology/products/jdev/collateral/papers/10g/ADF_overview.pdf

www.oracle.com/technology/documentation/jdev/adf_guidelines_manual.pdf

Microsoft .NET Framework OverviewBulgarian Oracle User Group

Q&A

top related