Aplikační rámce Jakarta Struts Framework

Podobné dokumenty
Aplikační rámce. Jakarta Struts Framework. Obsah přednášky. Aplikační rámce a knihovny. Co je to aplikační rámec? Enterprise Java Beans

Tvorba informačních systémů

Tvorba informačních systémů

Tvorba informačních systémů

Architektura aplikace

Tvorba informačních systémů

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Architektury informačních systémů

Architektury informačních systémů

KIV/PIA 2013 Jan Tichava

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno

(Enterprise) JavaBeans. Lekce 7

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

KIV/PIA Semestrální práce

Návrhové vzory pro J2EE

Databázové a informační systémy

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Návrhové vzory pro J2EE. Miroslav Beneš

Softwarové komponenty a Internet

Tvorba informačních systémů

Tvorba informačních systémů

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Elektronická podpora výuky předmětu Komprese dat

Technologie Java. Jaroslav Žáček

Michal Krátký, Miroslav Beneš

Spring framework 2.0. Roman Pichlík CZJUG

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

IS pro podporu BOZP na FIT ČVUT

Webové služby. Martin Sochor

Tvorba informačních systémů

Aleš Rybák, Jiří Kadlec. Pluginy budoucnosti

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Zranitelnosti webových aplikací. Vlastimil Pečínka, Seznam.cz Roman Kümmel, Soom.cz

<Insert Picture Here> Vývoj portálových řešení v Javě

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Stručný úvod pro programátory. Michal Kuchta

Design Patterns. Tomáš Herceg Microsoft MVP (ASP.NET)

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Úvod do Web Services

MBI - technologická realizace modelu

TÉMATICKÝ OKRUH Softwarové inženýrství

Java Server-side. Štěpán Kuchař. VŠB-TUO FEI Katedra informatiky

Databáze II. 1. přednáška. Helena Palovská

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

Vybrané partie z jazyka Java Spring a Enterprise JavaBeans (EJB)

PA165: Úvod do Java EE. Petr Adámek

Platformy / technologie. Jaroslav Žáček

Čipové karty Lekařská informatika

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Internet Information Services (IIS) 6.0

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition vývoj webových aplikací

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads

Komponentově orientované webové frameworky. Jiří Stránský twitter.com/jistr

PLATFORMY / TECHNOLOGIE JAROSLAV ŽÁČEK

RESTful API TAMZ 1. Cvičení 11

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Komponenta Human Task v Oracle SOA Suite

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

X33EJA Enterprise Java

Server-side technologie pro webové aplikace

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

JavaServer Faces Zdeněk Troníček

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Michal Augustýn Microsoft Most Valuable Professional

Databáze EMS podacích lístků

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

APS Administrator.ST

Web Services na SOAP

UJO Framework. revoluční architektura beans. verze

Common Object Request Broker Architecture

MVVM pro desktop i web

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Obsah přednášky. Technologie. Enterprise Java Beans. Enterprise Java Beans. EJB kontejner. Enterprise Java Beans (EJB)

1 Webový server, instalace PHP a MySQL 13

Lukáš Brodský Praha Osnova. Objektový přístup Verze 4, 5, 6 / 7 Developer7 -funkčnost, nové vlastnosti HW

Základy datových vazeb Silverlightu. Funkce Silverlightu 2. Podpora jazyků a technologie.net Framework

CAL (CAN Application Layer) a CANopen

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server

MODERNÍ WEB SNADNO A RYCHLE

Úvod do tvorby internetových aplikací

1. Webový server, instalace PHP a MySQL 13

Úvod do problematiky vývoje Vývoj informačních systémů

Transkript:

Aplikační rámce Jakarta Struts Framework Miroslav Beneš

Obsah přednášky Aplikační rámce Jakarta Struts Framework Architektura JSP Model 1 a 2 Návrhový vzor MVC Webové aplikace a jejich konfigurace Komponenty Jakarta Struts Framework Lokalizace Šablony Jakarta Struts Framework 2

Co je to aplikační rámec? sada spolupracujících tříd a rozhraní určených pro řešení specifického problému třídy a komponenty představují abstrakce určitých pojmů aplikační rámec definuje, jak se tyto abstrakce podílejí na řešení problému komponenty aplikačního rámce jsou opakovaně použitelné Jakarta Struts Framework 3

Aplikační rámce a knihovny Ext 1 Ext 2 Framework Ext 3 Knihovna 2 Knihovna 1 Aplikace Aplikační rámec + rozšíření pro konkrétní aplikace Aplikace + knihovny Jakarta Struts Framework 4

Aplikační rámce a Java Barracuda http://barracuda.enhydra.org Cocoon http://xml.apache.org/cocoon Expresso http://www.jcorporate.com Velocity http://jakarta.apache.org/velocity Java Server Faces http://java.sun.com/j2ee/javaserverfaces/ Jakarta Struts Framework 5

Jakarta Struts Framework Výchozí principy návrhový vzor MVC (Model-View-Controller) architektura JSP Model 2 asi 250 tříd a rozhraní v 8 hlavních balících Autor Craig R. McClanahan člen expertních skupin pro servlety a JSP spoluautor implementace Tomcat 4.0 2000 Apache Software Foundation http://jakarta.apache.org/struts Jakarta Struts Framework 6

Architektura JSP Model 1 Zdroj: Struts Book Jakarta Struts Framework 7

Architektura JSP Model 2 Zdroj: Struts Book Jakarta Struts Framework 8

Architektura JSP Model 2 Klient zasílá požadavek řídicímu servletu žádné odkazy na JSP Možnost centralizace některých činností autentizace sledování činnosti (logging) podpora národních verzí (i18n) Po zpracování požadavku je řízení přesměrováno na JSP Jakarta Struts Framework 9

Návrhový vzor MVC Oddělení aplikační logiky, prezentace a zpracování požadavku Komponenty model reprezentace stavu zájmové domény aplikace view prezentace modelu controller řízení toku a stavu požadavků Proti obecnému návrhovému vzoru komplikovanější šíření událostí nutnost post back operace vyvolané uživatelem Jakarta Struts Framework 10

Návrhový vzor MVC Jakarta Struts Framework 11

MVC Model Reprezentace objektů z domény aplikace sada Java objektů SQL dotaz ORM (Object-Relational Mapping) Enterprise Java Beans Session Beans (remote) value objects Entity Beans (local) Jakarta Struts Framework 12

MVC View Prezentace modelu statický obsah HTML statický a dynamický obsah JSP Realizace převážně na straně serveru může být i na straně klienta (JavaScript) Jakarta Struts Framework 13

MVC Controller Obvykle Java servlet Úkoly: odchytává požadavky od uživatele překládá požadavek na konkrétní operaci vyvolá operaci nebo deleguje řízení pomáhá při výběru prezentace zasílá prezentaci klientovi návrhový vzor Front Controller Jakarta Struts Framework 14

Prvky webové aplikace Servlety Stránky JSP Standardní knihovny tříd Dokumenty HTML Multimediální soubory (obrázky, zvuk, video,...) Klientské aplety, styly a skripty Textové dokumenty Metainformace Jakarta Struts Framework 15

Struktura webové aplikace kontext aplikace kořenový adresář http://www.cs.vsb.cz/katis privátní adresáře (nedostupné přes web).../web-inf - konfigurace.../web-inf/classes - kód aplikace.../web-inf/lib - pomocné knihovny doporučení: umístit JSP pod.../web-inf/ Jakarta Struts Framework 16

Konfigurace webové aplikace.../web-inf/web.xml mapování řídicího servletu (ActionServlet) parametry řídicího servletu aplikační moduly (sub-aplikace) knihovny značek welcome-file-list ošetření chyb Jakarta Struts Framework 17

Konfigurace webové aplikace.../web-inf/struts-config.xml datové zdroje formuláře ošetření výjimek směrování mapování akcí lokalizace zpráv rozšiřující moduly (plug-in) Jakarta Struts Framework 18

Komponenty - Controller ActionServlet příjem všech požadavků nastavení národního prostředí zpracování parametrů požadavku - FormBean výběr vhodného modulu aplikace deleguje požadavek na RequestProcessor jediná instance pro celou aplikaci Jakarta Struts Framework 19

Komponenty - Controller RequestProcessor jedna instanci pro každý modul aplikace volá vhodné instance třídy Action po dokončení akce předá řízení nějaké prezentační komponentě (obvykle JSP) Action vlastní akce rozšiřuje org.apache.struts.action.action je třeba implementovat metodu execute() reprezentace návrhového vzoru Command vrací informaci o následujícím view Jakarta Struts Framework 20

Komponenty - Controller Jakarta Struts Framework 21

Komponenty - Model Podpora modelu není součástí Struts Typy modelů: konceptuální model pojmy, vztahy, atributy návrhový model třídní a interakční diagramy, stavové diagramy,... Implementace: JavaBeans, EJB, Corba, JDO,... Jakarta Struts Framework 22

Komponenty - View Java Server Pages HTML, CSS, JavaScript Multimediální objekty ActionForms JavaBeans části modelu použité pro prezentaci Lokalizační soubory (resource bundles) Uživatelské značky JSP Jakarta Struts Framework 23

Komponenty ActionForm Použití Zapouzdření parametrů z HTTP požadavku klienta (GET, POST) Dočasné uchování hodnot Význam Oddělení prezentační vrstvy od aplikace Možnost validace vstupu od uživatele ok chyba provede se akce řízení se vrátí zpět na formulář Jakarta Struts Framework 24

Komponenty ActionForm Implementace Rozšiřuje org.apache.struts.action.actionform Konvence JavaBeans Realizace návrhového vzoru Data Transfer Object (DTO) Lze generovat automaticky z konfigurace (Dynamic ActionForms Struts 1.1) Jakarta Struts Framework 25

Page 1 Jsp 1 Jsp 2 Jsp 3 Web Browser Web Server Jsp Engine Form Bean 1 request/session Form Bean 2 Other Bean 1 View Layer Controller Strutsconfig. xml Mappings path action [form bean] [forwards] Action1.java Action2.java Action3.java Action4.java Business Bean 1 Business Bean 2 Business Bean 3 Business Logic Layer Db Server Data Layer

Web Server index.htm Web Browser Request: ShowLogging.do Mappings Controller looks up <!-- Show logging --> <action path="/showlogging" type="beans.showloggingaction" name="loggingform"> <forward name="success path="/logging.jsp" /> </action> logging.jsp response sent to browser pure html Jsp Engine <form name="loggingform" > <logic:iterate id="category name="loggingform" property="categorylist"> <bean:write name="category" property="key"/> <bean:write name="category" property="desc"/>. </logic:iterate> </form> displays populates expands internationalized custom form values tags messages forwards logging.jsp creates form bean in correct scope perform(mapping, returns creates / reusesform, forward(success) request, response) Messages Resources Show Logging mainpulates data Action.java calls business logic rule to get logging info LoggingBean.java ServerBean.java request/session Logging Form setcategorylist(list) View Layer Business Logic Layer Db Server Data Layer

Web Server logging.jsp browser adds form variables to request Web Browser form submit action= SaveLogging.do Mappings Controller looks up <!-- Save logging --> <action path="/savelogging" type="beans.saveloggingaction" name="loggingform"> <forward name="success path="/result.jsp" /> </action> results.jsp response sent to browser pure html Displays internationalized expands custom tags Jsp Engine messages from bean forwards result.jsp reuses auto populates form bean using correct bean getters/setters scope getcategorylist() returns calls creates perform(mapping, / reuses form, mapping.findforward("success") action instance request, response) Show Logging Action.java LoggingBean.java ServerBean.java <form name="loggingform" > <select name="category[0].value" > </form> becomes request parameter category[0].value added to form using LoggingForm.getCategory(0).setValue(value) request/session Logging Form Messages Bean add result messages For each one that user has changed call business logic to change on server View Layer Business Logic Layer Db Server Data Layer

Page 1 Jsp 1 Jsp 2 Jsp 3 Web Browser pure HTML sent to browser Web Server incoming requests reads on start-up Strutsconfig. xml relevant page called Controller creates looks up path to determine action/ form bean Mappings Jsp Engine processes custom tags fill form elements from beans, display internationalized messages request/session if creates/reuses submit, auto any populates associated form bean from request params returns passes control appropriate to forward relevant action to handle Form Bean 1 Form Bean 2 Other Bean 1 View Layer path action [form bean] [forwards] Action1.java Action2.java Action3.java gets interacts data with to display lower (adds layers to -beans in request/session) or acts as adaptor between saves data from beans HTTP via and business layers below rules Business Business Bean 1 Bean 2 Business Bean 3 Action4.java Business Logic Layer Business Data Data Layer

Lokalizační soubory Lokalizace zobrazovaných textů chybové zprávy texty v uživatelském rozhraní Automatický výběr podle nastavení klienta application.properties application_en_us.properties application_de_de.properties JSP značky <h1><bean:message key= app.title /></h1> Jakarta Struts Framework 30

Šablony - knihovna Tiles Sada značek JSP Oddělení formátu stránky od obsahu Možnost změny formátu nastavení vzhledu uživatelem Opakovaně použitelné definice šablona parametrizovaná stránka instance šablony konkrétní obsah Jakarta Struts Framework 31

Šablony knihovna Tiles <%@taglib uri="/web-inf/struts-html.tld" prefix="html"%> <%@taglib uri="/web-inf/struts-bean.tld" prefix="bean"%> <%@taglib uri="/web-inf/tiles.tld" prefix="tiles"%> <html:html> <head> <title><bean:message key="global.title"/></title> </head> <body topmargin="0" leftmargin="0" bgcolor="#ffffff"> <tiles:insert attribute="header" /> <tiles:insert attribute= menubar"/> <tiles:insert attribute="body-content"/> <tiles:insert attribute="copyright"/> </body> </html:html> Jakarta Struts Framework 32

Šablony knihovna Tiles <%@taglib uri="/web-inf/tiles.tld" prefix="tiles" %> <tiles:insert page="/layouts/beer4alldefaultlayout.jsp" flush="true"> <tiles:put name="header value="/common/header.jsp" /> <tiles:put name= menubar value="/common/menu.jsp" /> <tiles:put name="body-content" value="/main.jsp" /> <tiles:put name="copyright value="/common/copyright.jsp" /> </tiles:insert> Jakarta Struts Framework 33

Další zdroje informací jakarta.apache.org/struts www.husted.com/struts www.interval.cz www.theserverside.com Jakarta Struts Framework 34