VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA

Slides:



Advertisements
Podobné prezentace
VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt Část 3.
Advertisements

XML, (X)HTML, DHTML, CSS Pavel Tvrdík 2008, Oktáva.
Školení MS Word 2007 pro začátečníky RNDr. Milan Zmátlo MěÚ Třebíč, říjen 2011 Vzdělávání v eGON centru Třebíč Tento.
Projekt Informační a vzdělávací portál Libereckého kraje I CZ.1.07/1.1.00/ I Školení pro uživatele portálu.
Ověřené výstupy z ISKN elektronická značka Jiří Formánek
Spolupráce mezi výkresy bloky (s atributy) Design center externí reference.
Programování v jazyce C++ Dědičnost a polymorfismus.
IP adresace (IPv4) Velikost a určení IP adresy I. Epocha (dělení na třídy) II. Epocha (zavedení masky) Speciální adresy Příklady a řešení IP adres Souhrn.
Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Šablona 32 VY_32_INOVACE_031.ICT.34 Tvorba webových stránek – úvod do CSS.
Snímek 1 PowerPoint2OP381 Manažerská informatika 1 2OP381 Manažerská informatika 1 Microsoft PowerPoint 2016 – 2. část.
Autor:Ing. Pavel Brož Předmět/vzdělávací oblast:Informační a komunikační technologie Tematická oblast:Práce se standardním aplikačním programovým vybavením.
1 Obhajoba diplomové práce Sluneční záření a atmosféra Autor: Tomáš Miléř Vedoucí: Doc. RNDr. Petr Sládek, CSc. Oponent: RNDr. Jan Hollan BRNO 2007Katedra.
HTML HyperText Markup Language Je to značkovací jazyk používaný na tvorbu webových stránek, které jsou propojeny hypertextovými odkazy. Je hlavním z.
Elektronické učební materiály - II. stupeň Informatika – aplikace informačních technologií Autor: Bc. Pavel Šiktanc Internetové stránky Co se všechno naučíme???
Tabulkový procesor Odebrání skrytých dat a osobních informací kontrolou sešitů Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Růžena Hynková.
Tvorba WWW stránek. Obsah Princip fungování WWW Současné trendy Zásady tvorby WWW stránek Netiketa.
Řetězce v jazyce C ● řetězec je posloupnost znaků ● řetězcové konstanty se v C vkládají mezi uvozovky, např. "Ahoj Hugo!" ● v paměti je řetězec uložen.
VideoWeb: Webová aplikace pro správu domácí videotéky Adam Melkus, Radek Jirovský, Jakub Kutil, Hoa Quoc TranPB138
Univerzitní informační systém III., Lednice 2004 Vývoj a koncepce nového univerzitního webu Ondřej Kudlík
ŠKOLA: Gymnázium, Chomutov, Mostecká 3000, příspěvková organizace AUTOR:Mgr. Jiří Kolář NÁZEV:VY_32_INOVACE_08B_15_Sítě_internet2 TEMA:HARDWARE A SOFTWARE.
ZÁKLADY JAZYKA HTML Číslo projektu CZ.1.07/1.5.00/ Název školy
PŘIHLÁŠENÍ K ELEKTRONICKÉ EVIDENCI TRŽEB
Věcné autority v roce 2016
HTML a CSS Rostislav Miarka.
Základní škola a mateřská škola Lázně Kynžvart Autor: Mgr
Tutoriál ~ eKnihy Stahování
Pravidla přístupnosti
Výukový materiál zpracován v rámci projektu
NÁZEV ŠKOLY: Masarykova základní škola a mateřská škola Melč, okres Opava, příspěvková organizace ČÍSLO PROJEKTU: CZ.1.07/1.4.00/ AUTOR: Mgr. Vladimír.
Internet.
COM – Práce s objektovým modelem jiné aplikace
Evaluace předmětů studenty (Anketky)
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
Výukový materiál zpracován v rámci projektu
ORGANIZACE DAT V POČÍTAČI
Obrázky Ram Rom Nástupci ROM Počítačová pamět Obrázky Paměti Ram rom
Kurz algoritmizace a programování v jazyce C
Programování v jazyce C++
Financováno z ESF a státního rozpočtu ČR.
Struktury.
Inf Tabulkový procesor - formátování
Databáze MS ACCESS 2010.
Programovací jazyky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Algoritmizace a programování
Abstract Factory.
Oblast: Dobré životní podmínky zvířat
Vliv změn ve Studijním a zkušebním řádu na registrace a zápis studentů
Výukový materiál zpracován v rámci projektu
Cvičení 4 Dědičnost objektů.
Název: Pozvánka DUM:VY_32_INOVACE_VII_3_17
Informatika pro ekonomy přednáška 8
NÁZEV ŠKOLY: Základní škola Josefa Bublíka, Bánov
ŠABLONY PRO STŘEDNÍ ŠKOLY
Programovatelné automaty (Programmable logic controllers – PLC)
Základy práce s informačními zdroji ZUR163
MU002 Informatika II Základy algoritmizace 1/13
Dotazovací jazyk SQL I.
Remote login.
Název školy: Autor: Název: Číslo projektu: Název projektu:
Platforma pro personalizaci standardizovaných výukových materiálů
A5M33IZS – Informační a znalostní systémy
Přednášky z Distribuovaných systémů
Lomené výrazy (2) Podmínky řešitelnost
Přednáška 10 Uložené procedury.
Informatika pro ekonomy přednáška 8
Informační systém základních registrů
Aktivně a zdravě Marketingová akce podporovaná ČPP
Hromadné dokumenty opakující se pro kolekci osob
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
MU002 Informatika II Základy algoritmizace 1/13
Transkript prezentace:

VÝVOJ PODNIKOVÝCH APLIKACÍ NA PLATFORMĚ JAVA - PŘEDNÁŠKA Zbyněk Šlajchrt http://java.vse.cz/4it447/HomePage Část 3.

Vyřizování dotazů - include Webový server odpověď Servletový kontejner Servlet1 Servlet2 include dotaz

Vyřizování dotazů - forward Webový server odpověď Servletový kontejner Servlet1 Servlet2 forward dotaz

RequestDispatcher Pro vložení výstupu jiného servletu include(request, response) Pro přenechání zpracování forward(request, response) Parametry těchto metod jsou objekty dotazu (ServletRequest) a odpovědi (ServletResponse) stejné, jako předané aktuálním servletu instance obalových tříd ServletRequestWrapper a ServletResponseWrapper

Získání RequestDispatcher Řeší objekt třídy RequestDispatcher (dispečer) ServletContext::getRequestDispatcher(cesta) cesta je relativní ke kořeni kontextu aplikace a začíná / ServletRequest::getRequestDispatcher(cesta) cesta je relativní k aktuálnímu dotazu, nezačíná / ServletContext::getNamedDispatcher(název) předává se název servletu z aplikačního kontextu

Metoda include Vkládá výstup volaného servletu do předaného objektu odpovědi (response) Může být v rámci dotazu volána vícekrát K objektu dotazu má plný přístup Na objektu odpovědi může používat výstupní stream nebo writer nesmí měnit návratový kód, obsah ani počet hlaviček změny jsou ignorovány

Příklad – vložení hlavičky a patičky

Příklad – vložení hlavičky a patičky

Příklad – vložení hlavičky a patičky

Metoda forward Přenechává dokončení zpracování jinému servletu Možno volat pouze pokud ještě žádná data nebyla odeslána na klienta Jinak se vyhazuje výjimka IllegalStateException (viz Spec. 9.4) Před návratem je výstup z cílového servletu kontejnerem odeslán na klienta (commit) a uzavřen volající servlet pak už neřeší potvrzování obsahu

Příklad – forward

Příklad – forward

Posluchači Možnost zaregistrovat posluchače událostí v různých konextech, tzv. „scopes“ ServletContext - kontext celé aplikace HttpSession - kontext uživatelské relace ServletRequest - kontext dotazu Usnadňuje rozdělení logiky do tříd podle účelu (Separation of Concerns) Zvyšuje flexibilitu a rozšiřitelnost Od verze Java EE 6 je možné registrovat posluchače za běhu aplikace. (Dříve jen ve web.xml)

Posluchači ServletContext Životní cyklus Servletový kontext byl nahrán, nebo je nachystán k ukončení rozhraní javax.servlet.ServletContextListener Změny v atributech Atributy v kontextu byly přidány, odebrány či vyměněny rozhraní javax.servlet.ServletContextAttributeListener

Příklad ServletContextListener

Příklad ServletContextListener

Posluchači HttpRequest Životní cyklus javax.servlet.ServletRequestListener requestInitialized, requestDestroyed Změny v atributech javax.servlet.ServletRequestAttributeListener Asynchronní zpracování požadavku javax.servlet.AsyncListener onComplete, onTimeout

Posluchači HttpSession Životní cyklus Http session byla vytvořena, zneplatněna nebo vypršela javax.servlet.http.HttpSessionListener Změny v atributech Atributy v session byly přidány, odebrány či vyměněny javax.servlet.http.HttpSessionAttributeListener

Posluchači HttpSession Připojení/odpojení objektu k session (binding) Objekt byl připojen nebo odpojen ze session javax.servlet.http.HttpSessionBindingListener Neregistruje se ve web.xml. Migrace session Session byla aktivována, nebo se chystá k pasivaci javax.servlet.http.HttpSessionActivationListener Neregistruje se ve web.xml. Stačí samotný fakt, že třída implementuje rozhraní posluchače.

Příklad HttpSessionBindingListener

Příklad HttpSessionBindingListener

Př. HttpSessionActivationListener

Distribuované prostředí Všechny dotazy patřící do jedné relace jsou obslouženy ve stejném JVM Kontejner se však může rozhodnout provést tzv. migraci relace na jiný uzel clusteru load-balancing – rozložení zátěže mezi uzly fail-over – předání zpracování na jiný uzel v případě potíží na původním cílovém uzlu

Migrace session Load Balancer S1 S1 Uzel 1 Klient 1 Uzel 2

Migrovatelnost atributů relace Kontejner akceptuje všechny objekty-atributy, které implementují java.io.Serializable Kontejner se může rozhodnout pro migraci objektů, které nejsou serializovatelné, specifickým způsobem. Způsob migrace není specifikován. Session A1 A3 A2

Java Server Pages (JSP) Technologie pro generování dynamických webových stránek a dokumentů Např. HTML, XHTML, XML, SVG, WML (WAP) Statický obsah tvoří základ šablony Dynamický obsah se získává Java kódem vpisovaným do JSP – tzv. skriptlety odkazem na vlastnosti objektů ve formě Java Beans (EL2 výrazy - ${...}) prostřednictvím tzv. custom tagů

JSP - ukázka

JSP - výsledek

Životní cyklus JSP stránky Fáze překladu (translation phase) Kontejner vyhledá stránku Validace a kontrola syntaxe JSP a tagů Vytvoření implementační třídy JSP stránky obvykle servlet Běhová fáze (execution phase) Předávání objektů požadavku a odpovědi instanci implementační třídy JSP stránky

Syntaktické prvky Direktivy Akce Skriptovací prvky Poskytují informace pro fázi překladu Nemají přímý vztah ke zpracování dotazu stránkou <%@directive...%> Akce Deklarují, jak se má zpracovat dotaz. XML syntaxe. Standardní akce jsou specifikované Custom akce pomocí rozšiřujících tagů (tag extensions) Např. JSTL – JSP Standard Tag Library Skriptovací prvky výrazy, skriptlety, deklarace

Direktivy Syntax: <%@ directive { attr=”value” }* %> page taglib Definují vlastnosti generované stránky <%@ page contentType="text/html" language="java" %> taglib Deklaruje, že stránka používá knihovnu tagů. <%@ taglib uri="http://java.sun.com/jsf/html/" prefix="h" %> include Používá se pro vkládání textu nebo kódu z jiného souboru v době překladu. <%@ include file=”copyright.html” %>

Standardní akce XML reprezentace, elementy mají prefix jsp <jsp:useBean> Deklaruje proměnnou, jejíž hodnota je javovský objekt Lze určit rozsah, kde se objekt nachází Atributy id – jednoznačné ID v rámci JSP, deklarace skript. proměnné scope – rozsah, ve kterém se hledá instance beanu page (default), request, session, application class – třída Java beanu. Pokud není nalezen v zadaném rozsahu, vytvoří se. type – typ proměnné deklarované touto akcí

Standardní akce <jsp:getProperty> Čte hodnotu vlastnosti beanu a zapisuje ji na výstup Atributy name – název beanu, obvykle odpovídá id v <jsp:useBean> property – název vlastnosti beanu

Standardní akce - příklad

Standardní akce - příklad

Standardní akce <jsp:setProperty> Nastavuje hodnotu vlastnosti beanu Atributy name – název beanu, obvykle odpovídá id v <jsp:useBean> property – název vlastnosti beanu param – parametr v dotazu, jehož hodnota se použije value – hodnota vlastnosti, nelze uvádět současně s param <jsp:include>, <jsp:forward> Analogie metodám třídy RequestDispatcher include forward

Knihovny tagů Umožňují rozšířit sadu standardních akcí Doporučeno jako náhrada za skriptlety Typická užití Prosté akce Podmíněné zpracování Iterace Registrace posluchačů (např. v JSF) Existují dva typy tzv. tag handlerů Klasický Zjednodušený

Simple Tag Handler Náhrada za klasické tag handlery Velmi zjednodušuje vývoj vlastních knihoven tagů Dva způsoby implementace Java Základem je třída javax.servlet.jsp.tagext.SimpleTag, resp. SimpleTagSupport Určeno programátorům JSP Tag soubory Určeno neprogramátorům, např. tvůrcům webových stránek

HelloTag - Handler <hello message="Bye"/>

HelloTag – TLD knihovna Uloženo v souboru WEB-INF/mytaglib.tld

HelloTag – Použití v JSP

Tagové soubory Jednoduchý způsob, jak vytvořit nový tag soubor WEB-INF/tags/welcome.tag Tagové soubory se obvykle umisťují do adresáře WEB-INF/tags Import v JSP <%@ taglib prefix="my" tagdir="/WEB-INF/tags" %> Použití: <my:welcome message="Vítejte!"/>

Skriptovací prvky - Scriptlety Skriptlety mohou obsahovat libovolný fragment skriptovacího jazyka Default Java Provádí se v čase dotazu Mohou a nemusí vytvářet výstupní data Kód skriptletu je uzavřen v bloku vymezeném <% scriptlet %>

Scriptlety - příklad

Scriptlety – implicitní objekty Objekty, které jsou deklarovány implicitně prostřednictvím proměnných na začátku stránky request, session, application, pageContext objekty rozsahů (scopes) pageContext je speciální kontext reprezentující JSP stránku response – objekt odpovědi page – objekt stránky out – výstupní proud (javax.servlet.jsp.JspWriter) config – konfigrace servletu generovaného ke stránce

Scriptlety – explicitní proměnné Deklarace beanu akcí <jsp:useBean id="bean"> zavádí proměnnou odpovídající hodnotě atributu id Viz příklad s výpisem čísel telefonů Deklarace pomocí speciální konstrukce <%! deklarace %> Deklarace globální proměnné (v podstatě atribut třídy) <%! int i = 0; %> Pozor v případě více souběžných dotazů! Synchronizovat! Deklarace metody <%! public String f(int i) { if (i<3) return(“...”); ... } %>

Výrazy Konstrukce <%= výraz > definuje výraz, který se po vyhodnocení v čase dotazu vypíše na výstup <%= "Dobrý den!" >

Expression Language – EL 2.1 Od uvedených skriptovacích technik se ustupuje Místo nich se doporučuje používat tagy a EL EL je navržen pro snadné sestavování výrazů nad aplikačními daty uloženými v Java beans Syntaxe: ${expression} ${1} ${"Welcome"} – vrací konstanty ${name} – vrací hodnotu proměnné name ${user.email} – vrací hodnotu vlastnosti email beanu v proměné user ${user.phone[0]} – vrací první prvek v seznamu telefonů

Expression Language – EL 2.1 Možno použít v těle stránky hodnota výrazu se vypíše na výstup v atributu tagu možno použít ve standardních i custom atribut musí povolovat runtime výrazy definuje se v popisovači knihovny tagů TLD prvkem <rtexprvalue>true/false<rtexprvalue>

EL - příklad

JSP dokumenty JSP dokumenty jsou JSP stránky psané v XML Tímto vyjádřením se získá řada výhod K editaci lze použít běžné XML editory Stránky lze validovat oproti schématu (DTD, XSD) Lze využít jmenných prostorů pro oddělení a vnoření různých obsahů Přehlednost

JSP dokument - příklad

JSP dokumenty – analogie s JSP Kořenový prvek je <jsp:root> Direktivy jsou vyjádřeny prvky <jsp:directive.XXX>, kde XXX je direktiva <jsp:directive.page contentType="text/html; utf-8"/> EL výrazy se používají obdobně Knihovny tagů se importují pomocí jmenných prostorů xmlns:c="http://java.sun.com/jsp/jstl/core" Skriptlety se píší do těla tagu <jsp:scriptlet>