750 likes | 858 Views
Разработка на Struts- базирани WEB приложения с Oracle JDeveloper 10g. Лектор : Георги Денчев ComSoft Ltd. Съдържание. Въведение в Struts Въведение в Oracle Application Development Framework (ADF) Изграждане на примерно Struts - базирано приложение Заключение. Съдържание.
E N D
Разработка на Struts-базирани WEB приложения с Oracle JDeveloper 10g Лектор: Георги Денчев ComSoft Ltd. Microsoft .NET Framework Overview
Съдържание • Въведение в Struts • Въведение в Oracle Application Development Framework (ADF) • Изграждане на примерно Struts-базирано приложение • Заключение Microsoft .NET Framework Overview
Съдържание • Въведение в Struts • Какво представлява Struts • Ролята на Struts в приложението • Основниградивни елементии класове • Основни похвати • Поддръжка на Struts в JDeveloper 10g Microsoft .NET Framework Overview
Какво представлява Struts • Платформа за разработка на WEB приложения • Базиран на стандартни технологии – JavaBeans, Java Servlets, JavaServer Pages (JSP), XML, … • Софтуер с отворен код • Плод на усилията на разрастващо се общество от разработчици Microsoft .NET Framework Overview
Какво представлява Struts • Реализира MVC (Model-View-Controller) парадигма Microsoft .NET Framework Overview
Съдържание • Въведение в Struts • Какво представлява Struts • Ролята на Struts в приложението • Основниградивни елементии класове • Основни похвати • Поддръжка на Struts в JDeveloper 10g Microsoft .NET Framework Overview
Ролята на Struts в приложението • Controller • Всички заявки минават през логическия център на приложението • Лесно се конфигурира през XML файлове • Реалната работа се извършва от Action класове, извиквани от контролера • Вграден механизъм за валидация на входните данни • Отлична архитектура и дизайн Microsoft .NET Framework Overview
Ролята на Struts в приложението • View • Няма конкретно обвързване с определена технология • Вградена поддръжка за интернационализация • View (JSP) • Вградени библиотеки от тагове за визуализация • Избягва се употребата на скриптлети • Улеснява се работата на дизайнерите на страницата Microsoft .NET Framework Overview
Ролята на Struts в приложението • Model • Няма конкретно обвързване с определена технология • Логиката трябва да се реализира изцяло от разработчика • Съществуват помощни продукти, реализиращи връзката с базата данни • Oracle BC4J • Enterprise Java Beans (EJB) • Hibernate Microsoft .NET Framework Overview
Съдържание • Въведение в Struts • Какво представлява Struts • Ролята на Struts в приложението • Основниградивни елементии класове • Основни похвати • Поддръжка на Struts в JDeveloper 10g Microsoft .NET Framework Overview
Класът ActionServlet • Представлява сървлет, който съпоставя определени класове на събития (обикновено HTTP POST заявки) • Предава управлението на подходящ RequestProcessor • Поддръжка на множество модули в рамките на едно приложение Microsoft .NET Framework Overview
Класът RequestProcessor • Най-важен в Controller частта на приложението • Предоставя изключително много точки за разширение – гъвкав и мощен • Създава и използва инстанции на Action, ActionForm и ActionForward Microsoft .NET Framework Overview
Класът RequestProcessor • Настройва се чрез конфигурационен файл (struts-config.xml) – лесно и бързо • По време на разработката на WEB приложението класовете Action и ActionForm се разширяват в зависимост от конкретната задача • Конфигурационният файл указва по какъв начин да се използват разширените класове Microsoft .NET Framework Overview
Класът RequestProcessor • Предимства на подхода • Цялата логика на управление на приложението е в един йерархичен текстов файл • улеснява процеса на усвояване, особено при големи приложения • Не е необходимо дизайнерът на страниците да е запознат с Java код • Не е необходима прекомпилация на приложението Microsoft .NET Framework Overview
Класът ActionMapping • ActionMapping съдържа информация за съответствие между събития (HTTP заявки) и определени Action класове • Controller частта на Struts извиква определен Action клас в зависимост от текущата HTTP заявка • RequestProcessor подава ActionMapping обекта на “execute” метода на извикания Action • Това осигурява на Action обекта достъп до логиката на управление на приложението (control flow) Microsoft .NET Framework Overview
Класът ActionMapping • От конфигурационния файл “struts-config.xml” се извлича набор от ActionMapping класове • Те се обединяват в общ контейнер – АctionMappings Microsoft .NET Framework Overview
Класът ActionForm • Общ модел за данни които се задават или модофицират от HTTP форма (реализира се като JavaBean клас) • Абстрактен клас, който се разширява за всяка различна входна точка за данни в приложението • Множество HTTP заявки могат да бъдат асоциирани с един и същ модел на предаваните данни (ActionForm) • Един и същ ActionForm може да се използва в няколко последователни страници (wizards) Microsoft .NET Framework Overview
Класът ActionForm • За всеки параметър XXX който трябва да се извлече от HTTP заявката, ActionForm трябва да дефинира getXXX() и setXXX() методи • Ако искаме да валидираме входните данни, трябва да реализираме метода “validate” • Ако искаме да инициализираме стойности преди тяхното попълване, трябва да реализираме метода “reset” Microsoft .NET Framework Overview
Класът ActionForm • Алтернативни ActionForm типове • Map-backed ActionForm • Стойностите се съдържат в Map • Динамично, гъвкаво представяне на данните • DynaActionForm • ActionForm с декларативно зададени имена на параметрите – улеснява реализацията и поддръжката • Методът “reset” възстановява стойностите на ВСИЧКИ параметри Microsoft .NET Framework Overview
Класът Action • Играе главна роля в Struts • Основни задачи/отговорности • Осъществяване на достъп до бизнес слоя на приложението • Подготовка на данните за използване от презентационния слой • Обработка на възникналите грешки по време на изпълнение на горните две задачи • Пренасочване към подходяща точка от View частта на приложението Microsoft .NET Framework Overview
Класът Action • Отправна точка за изпълнимия код е методът “execute” (“perform”) • Данните от HTTP заявката са вече обработени и се предават на Action обекта посредством ActionForm обект • Action обектите имат достъп и до самата HTTP заявка, както и до HTTP отговора • Action класовете определят логиката на управление на приложението Microsoft .NET Framework Overview
Класът Action • Връща към извикващия RequestProcessor ActionForward обект • ActionForward указва View частта от приложението, към която ще се предаде управлението • Възможно е да се изгражда верига от Action класове (Action chaining) • При възникване на грешки е възможно да ги обработи и върне в user-friendly вид към клиента Microsoft .NET Framework Overview
Класът ActionForward • Указва следващата отправна точка за приложението чрез атрибута си “path” • Атрибутът “redirect”определя дали ще се извърши пренасочване на сървъра (forward) или HTTP пренасочване (redirect) • Два основни типа ActionForward • глобални (могат да се използват в цялото приложение) • локални (дефинирани са в конкретен ActionMapping) Microsoft .NET Framework Overview
Класът ActionError • Съдържа описание на възникнала по време на работата на приложението грешка • Дава възможност за логическа интерпретация на грешките в достъпен за потребителя формат • Възможно е да се обединяват много грешки в един ActionErrors обект Microsoft .NET Framework Overview
Да обединим всичко в едно – “struts-config.xml” • Точката на обединение на всички компоненти на Struts-базираното приложение • Съдържа ActionForms, ActionForwards (глобални + локални), ActionMappings • Съдържа обръщения към ресурси на приложението • Може да дефинира глобална обработка на грешки (exceptions) Microsoft .NET Framework Overview
Примерен “struts-config.xml” Microsoft .NET Framework Overview
Обобщение – Struts control flow • Клиентът извършва заявка • WEB контейнерът предава заявката към ActionServlet • Ако в приложението са дефинирани множество модули, ActionServlet избира подходящия модул и съответстващия му RequestProcessor • RequestProcessorнамира mapping, съответстващ на клиентската заявка • Ако mappingуказва form bean, RequestProcessorпроверява дали вече съществува такъв form bean (ако не – създава такъв) Microsoft .NET Framework Overview
Обобщение – Struts control flow • Ако mappingуказва form bean, RequestProcessorпопълва form bean от клиентската заявка • Ако параметърът на mapping“validate” е истина, ActionServletизвиква метода “validate” на form bean • Ако “validate” не успее, RequestProcessorпренасочва към пътя, указан от “input” параметъра на mappingи процесът завършва • Ако с mappingсе асоциира тип Action, той се използва наново ако вече съществува • RequestProcessorизвиква “execute” метода на Action, като му подава създадения form bean (или null) Microsoft .NET Framework Overview
Обобщение – Struts control flow • Actionможе да попълва form bean, да извиква бизнес методи и т.н. • Actionвръща ActionForward към RequestProcessor • Ако ActionForward съдържа път към друг Action, започваме цикъла отначало; в противен случай цикъла завършва, управлението се предава на JSP страница (или друга презентационна технология) • Ако JSP страницата съдържа Struts HTML тагове и те виждат правилната form bean в заявката, стойностите им се попълват автоматично. В противен случай тагът <html:form>създава form bean Microsoft .NET Framework Overview
Съдържание • Въведение в Struts • Какво представлява Struts • Ролята на Struts в приложението • Основниградивни елементии класове • Основни похвати • Поддръжка на Struts в JDeveloper 10g Microsoft .NET Framework Overview
Разширяване на класа RequestProcessor • Множество extension points – под формата на методи от вида processXXX() • Всички такива методи се извикват в рамките на “process” метода на RequestProcessor • RequestProcessor осигурява имплементация по подразбиране на всички методи от този вид Microsoft .NET Framework Overview
Разширяване на класа RequestProcessor • processRoles() – позволено ли е на потребителя да изпълни съответния Action • Бърза реализация на централизирана подсистема за проверка на права • Най-често предефинираният метод • processPopulate(), processValidate() – позволяват собствена имплементация на попълването и валидацията на ActionForm • processLocale(), processNoCache(), … Microsoft .NET Framework Overview
Валидация на входни данни • Добра практика е да се извършва в рамките на “validate”метода на ActionForm • При невалидни/некоректни данни • Struts автоматично връща съобщенията за грешки към потребителя • атрибутът “input”на ActionMapping указва точното място от View частта на приложението Microsoft .NET Framework Overview
Валидация на входни данни • Struts Validator • Алтернатива на традиционния метод на валидация на данни (Struts 1.0) • Вградени типове данни • Декларативна валидация (отделен конфигурационен файл), промяна без рекомпилация • Поддръжка на локализация на съобщенията за грешки Microsoft .NET Framework Overview
Интернационализация илокализация в Struts • Интернационализация – дизайнът на приложението позволява адаптация към различни езици и региони • Struts гради върху стандартните средства, заложени в Java платформата • Разработчиците не са обвързани с използването на Struts за интернационализация на приложението Microsoft .NET Framework Overview
Интернационализация илокализация в Struts • Интернационализация (Java) • Java.util.Locale – разграничаване между различни местоположения • Java.util.ResourceBundle – централен склад за съобщения; може да се извлича съобщение за даден Locale; поддръжка за добавяне на нов Locale без да се налага рекомпилация • Java.util.MessageFormat – форматиране на елементи (дати, валута, ...) според езика и региона на определен Locale Microsoft .NET Framework Overview
Интернационализация илокализация в Struts • Локализация – процесът на адаптация на приложението към различни езици и региони • Локализация • Struts поддържа Locale обект в сесията на всеки потребител • ServletRequest.getLocale() връща локала, зададен от WEB браузъра, но Struts няма директен контрол върху този локал Microsoft .NET Framework Overview
Интернационализация илокализация в Struts • Локализация • MessageResources – клас, който унифицира процеса на извличане на съобщения • MessageResources осигурява достъп до resource bundle по подразбиране, който се зарежда от controller сървлета • ActionMessage – клас-обвивка на едно локализирано съобщение • Поддръжка на обикновени съобщения и съобщения за грешка (ActionError в Struts 1.0) • Генерираните съобщения се запазват чрез метода “saveMessages(<request>, <messages>)” Microsoft .NET Framework Overview
Предотвратяване на double submissions • Проблем в WEB програмирането е липсата на контрол върху приложението от страна на клиента (най-често web browser) • Double submissions – проблем, който се среща във ВСИЧКИ WEB приложения • В Struts се решава чрез използване на т.нар. token Microsoft .NET Framework Overview
Предотвратяване на double submissions • Опростен сценарий • Преди предаване на управлението на презентационната логика се генерира token (който е уникален в рамките на един HTTP request) • В “execute” метода на Action, преди същинската логика, се проверява валидността на token • Ако не е валиден, връщаме подходящо съобщение за грешка към потребителя • Ако е валиден, премахваме текущата token информация и продължаваме Microsoft .NET Framework Overview
Интеграция на Struts с другитехнологии • Struts 1.x включва технологии, които в Struts 1.0 са били включвани допълнително към ядрото • JSTL (Java Standart Tags Library) • Библиотека с JSP тагове • Улеснява голяма част от стандартните операции, реализирани в една JSP страница • Намалява употребата на скриптлети Microsoft .NET Framework Overview
Интеграция на Struts с другитехнологии • Struts Validator • Алтернативен начин за валидация на входни данни (в Struts 1.0 можем да ползваме само метода “validate” на ActionForm) • Декларативна валидация на данни • Бърза и гъвкава имплементация • Вградени валидатори за наи-често използваните типове данни – integer, float, date, regex, … • При промяна не се налага рекомпилация Microsoft .NET Framework Overview
Интеграция на Struts с други технологии • Tiles • Осигурява консистентност на външния вид на приложението • Изпозва JSP includes – широко разпространена техника, оптимизирана в повечето Java сървлетконтейнери • Tile – синоним на шаблонна страница Microsoft .NET Framework Overview
Интеграция на Struts с други технологии • Tiles • В основата стои layout template – страница, която определя позицията на основни елементи (tiles) като заглавна част, меню, съдържание • Основните елементи също са страници • По-лесна промяна, code reuse на ниво JSP страница Microsoft .NET Framework Overview
Съдържание • Въведение в Struts • Какво представлява Struts • Ролята на Struts в приложението • Основниградивни елементии класове • Основни похвати • Поддръжка на Struts в JDeveloper 10g Microsoft .NET Framework Overview
JDeveloper 10g • Интегрирана среда за разработка (IDE) • Поддържа пълния цикъл на разработка на приложения – моделиране, кодиране, тестване, оптимизиране, ... • Използва последните Java, XML и SQL стандарти • Съдържа множество wizards за улеснение и автоматизация на дейности • Визуални дизайнери на всяко ниво • Мощен редактор на код Microsoft .NET Framework Overview
Поддръжка на Struts в JDeveloper 10g • Визуален дизайнер на потока от страници (page flow) Microsoft .NET Framework Overview
Поддръжка на Struts в JDeveloper 10g • Визуализация на компоненти по време на дизайн Microsoft .NET Framework Overview
Поддръжка на Struts в JDeveloper 10g • Подробен визуален редактор на “struts-config.xml” Microsoft .NET Framework Overview
Съдържание • Въведение в Oracle Application Development Framework (ADF) • Какво представлява ADF • Oracle ADF Binding Context • Жизнен цикъл на ADF • Интеграция на ADF със Struts Microsoft .NET Framework Overview