}w!"#$%&'()+,-./012345<ya

Rozměr: px
Začít zobrazení ze stránky:

Download "}w!"#$%&'()+,-./012345<ya"

Transkript

1 MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY }w!"#$%&'()+,-./012345<ya Dynamické generovaní obsahu s Java Server Pages BAKALÁŘSKÁ PRÁCE Petr Lorenc Brno, podzim 2007

2 Prohlášení Prohlašuji, že tato bakalářská práce je mým původním autorským dílem, které jsem vypracoval samostatně. Všechny zdroje, prameny a literaturu, které jsem při vypracování používal nebo z nich čerpal, v práci řádně cituji s uvedením úplného odkazu na příslušný zdroj. Vedoucí práce: RNDr. Vlastislav Dohnal, Ph.D. ii

3 Shrnutí Tato bakalářská práce provádí čtenáře vznikem webové aplikace. Ta je vystavěna na platformě Java, konkrétně na technologiích JavaServlets a Java Server Pages. Umožňuje dynamické generování obsahu uloženého v databázi MySQL. Architektura aplikace ctí návrhový vzor Model-Pohled-Řídící část. Model aplikace reprezentují JavaBean komponenty, pohled tvoří JSP stránky a řídící část zastupují servlety. V prvních čtyřech kapitolách je probrána teorie užitá ve webové aplikaci spolu s vysvětlením pojmů souvisejících s danou problematikou. Pátá kapitola, spolu se zdrojovým kódem webové aplikace, tvoří návod, demonstrující použití výše popsaných teoretických poznatků,k vytvoření webové aplikace. Tato ukázková webová aplikace má čtyři verze. První je obdoba aplikace Ahoj Světe!, následující didakticky přidávají další funkční prvky s tím, že poslední verze je již principiálně plnohodnotnou webovou aplikací nabízející dynamické generování obsahu díky propojení s databází MySQL. Využívá se zde nástrojů technologie JSP nabízejících zefektivnění práce při vývoji webových stránek, jako např. JSTL, Expression Language, JSP direktivy a akce. Vyústěním tohoto návodu je pak webová aplikace LogoArena.cz. Tato je, co do množství zdrojového kódu, rozsáhlejší, nicméně s předešlou ukázkovou aplikací naprosto rovnocenná, bere-li se jako měřítko návrh architektury a použité technologie. Aplikace LogoArena.cz má již ambice reálného nasazení na web. Jedná se o internetový obchod s mobilním obsahem, jakým jsou například obrázky či animace. Spuštění těchto stránek se plánuje na druhou polovinu roku iii

4 Klíčová slova Webová aplikace, Java, JSP, JavaServlets, MySQL, Dynamické generování obsahu webových stránek iv

5 Obsah 1 Úvod JavaServlets Životní cyklus servletu Sdílení informací Rozsah platnosti application Rozsah platnosti session Rozsah platnosti request Volání dalších webových prostředků Vkládání webových prostředků Předání řízení dalšímu webovému prostředku Filtrování požadavků a odpovědí Java Server Pages Struktura JSP stránky Skriptovací elementy Deklarace Výrazy Scriptlety Direktivy JSP Direktiva page Direktiva include Direktiva taglib Uživatelské značky Akce JavaBeans Unified Expression Language Bezprostřední vyhodnocování výrazů Odložené vyhodnocování výrazů JSP Standard Tag Library knihovna značek Core knihovna značek XML knihovna značek Internationalization knihovna značek SQL knihovna značek Functions Webové aplikace Vlastnosti webové aplikace Architektura aplikace Model Model Internacionalizace Webové rámce v

6 4.4.1 Rámce orientované na zpracování HTTP požadavku Rámce orientované na vizuální komponenty Ukázková webová aplikace Návrh Model-View-Controller aplikace Model Pohled (View) Řídící část (Controller) JSTL a filtrování požadavků Internacionalizace v JSP Internacionalizace v servletech Dynamické generování obsahu pomocí JSTL Filtrování požadavků Práce s databází Vytvoření databáze Rozšíření modelu aplikace Řízení databázových požadavků Uživatelské značky Rozšíření modelu aplikace Webová aplikace LogoArena.cz Účel a charakteristika projektu Fáze realizace projektu Architektura aplikace Model Pohled (View) Řídící část (Controller) Propojení se SMS platebním systémem Závěr Literatura Rejstřík A Přiložené CD - obsah a zprovoznění aplikací vi

7 Kapitola 1 Úvod Cílem práce je seznámit čtenáře s technologií JSP, demonstrovat některé postupy při tvorbě webové aplikace a ukázat jejich použití. Není možné v rozsahu bakalářské práce komplexně popsat JSP technologii, tudíž je tato práce pojata tak, aby představila vybrané nástroje do té míry, do jaké je třeba jim rozumět, aby byl s nimi čtenář schopen vybudovat analogickou webovou aplikaci, jež tvoří praktickou část této bakalářské práce. Můžeme se setkat s řadou softwarových nástrojů (např. JSF, Struts, Stripes a další. ), které vývoj aplikcí v Javě usnadňují. Nicméně vývoj nových technologií jde vysokým tempem kupředu a objevují se nové nástroje překonávající ty minulé. Proto není cílem této práce určit tu pravou a nejlepší cestu jak tvořit webové aplikace v Javě, nýbrž popsat základní principy návrhu aplikace, jejichž znalost lze s úspěchem využít i pro pochopení a používání nadstavbových technologií. Praktickou část této bakalářské práce tvoří webová aplikace, která bude v praxi používána jako internetový obchod se software pro mobilní telefony. Aplikace respektuje návrhový vzor Model-Pohled-Řídící část (často se lze setkat s anglickým ekvivalentem Model- View-Controller). Skládá se z několika řídících servletů, JSP stránek zajišt ujících prezentaci dat a sloužících jako rozhraní mezi aplikací a uživatelem. Pro práci s daty je využita databáze MySQL. Webová aplikace bude umístěna na server dostupný pod URL Obsah, který má být předmětem obchodování, podléhá autorským právům různých právních subjektů. Internetový obchod může tedy být v plné míře spuštěn až po vyřešení těchto právních záležitostí. Samotné doručení softwaru na mobilní telefon zajistí firma zabývající se touto problematikou, tedy takzvanými mikroplatbami, kdy platba je zahrnuta v ceně textové zprávy, jíž je požadovaný objekt objednáván. Poslední krok pro zkompletování celé aplikace je provázání již funkčního informačního systému a této mikroplatební služby. Tato fáze nespadá do rozsahu zadání bakalářské práce. Některé z mikroplatebních společností však (za určitý příplatek) nabízí vlastní zajištění tohoto propojení. Více informací o této problematice nabízí kapitola

8 Kapitola 2 JavaServlets JavaServlets jsou platformově nezávislé moduly pro obsluhu protokolu HTTP na straně serveru. Z technického hlediska je servletem každá java třída, která implementuje rozhraní javax.servlet.servlet. Servlety tvoří základní stavební jednotky, na kterých jsou vystavěny další vrstvy webových java aplikací. Jedná se o nízkoúrovňový nástroj, s jehož pomocí lze obsloužit jakýkoliv HTTP požadavek a vygenerovat libovolnou odpověd. Pro přímé generování HTML stránek,tedy zajištění prezentační vrstvy aplikace, se však jedná o nástroj dosti těžkopádný. Proto jsou k dispozici nadstavby, především JSP. Servlety však své uplatnění nachází ve webových aplikacích v roli řídícího členu. 2.1 Životní cyklus servletu Životní cyklus servletu se dá popsat následujícími tezemi. 1. Web kontejner nahraje třídu sevletu. Web kontejnerem je míněn webový server, který podporuje vykonávání servletů (např. Tomcat, JBoss, GlassFish aj.). 2. Kontejner volá metodu init(). Tato metoda inicializuje servlet a je volána dříve, než může být obsloužen jakýkoliv příchozí požadavek. V životním cyklu servletu je metoda init() volána pouze jednou. 3. Po inicializaci může servlet obsluhovat klientské požadavky. Každý požadavek je obsluhován v odděleném vlákně. Pro každý požadavek volá kontejner metodu service(). 4. Pokud kontejner potřebuje odstranit servlet, zavolá metodu destroy(). Tato metoda je stejně jako init() volána během životního cyklu servletu pouze jednou. 2.2 Sdílení informací Webové komponenty, jakož i většina objektů, obvykle při plnění svých funkcí navzájem spolupracují. Pod výrazem webová komponenta či webový prostředek je, v tomto případě, myšlen bud servlet, html soubor nebo JSP soubor. Spolupracující webové komponenty sdílí informace prostřednictvím objektů, které mohou nabývat jednoho ze čtyř rozsahů platnosti. 2

9 2.2. SDÍLENÍ INFORMACÍ Pro rozsah platnosti se obvykle používá anglický výraz scope. Doménu těchto hodnot popisuje tabulka 2.1. Scope Třída Dostupnost objektu z application javax.servlet.servletcontext webové komponenty uvnitř aplikace session javax.servlet.http.httpsession webové komponenty, které obsluhují požadavek patřící sezení (session) request javax.servlet.servletrequest webové komponenty obsluhující požadavek page javax.servlet.jsp.pagecontext JSP stránky, která objekt vytvoří Tabulka 2.1: Rozsah platnosti objektů Pro sdílení informací lze využít v podstatě jen první tři objekty z tabulky 2.1. Application session a request. Data uložená v application mají platnost po celou dobu běhu webové aplikace. Data v session jsou držena po dobu trvání sezení daného uživatele a request je zachovává jen po dobu svého trvání. Proměnná s rozsahem platnosti page je jednoduše implementována jako lokální proměnná v servletu a na rozdíl od ostatních tří objektů není přímo využitelná pro sdílení dat mezi jednotlivými webovými prostředky. Pro nastavování hodnot proměnných se využívá metoda setattribute. Komplementární metodou pro získání hodnoty proměnné z objektu je getattribute. Tyto metody jsou volány vždy na jednom z uvedených objektů z tabulky 2.1 v závislosti na požadovaném rozsahu platnosti proměnné Rozsah platnosti application Objekt s rozsahem platnosti application lze použít u proměnné, která má mít stejnou hodnotu pro všechny uživatele dané webové stránky. Např. on-line monitor návštěvníků. Kontext, ve kterém webové komponenty vykonávají svou činnost, je technicky vzato, objekt, který implementuje rozhraní ServletContext. Přístup k webovému kontextu (application scope) zajišt uje metoda getservletcontext. Ukázka části kódu servletu popisuje situaci, kdy je z požadavku (request) získáno sezení (session) a z něj application. Metoda setattribute předá proměnnou onlinemonitor k dispozici pod názvem online jiné webové komponentě. Předání řízení webové komponentěv rozsahu aplikace zajišt uje metoda forward objektu RequestDispatcher. Více informací o předávání řízení nabízí kapitola HttpSession session = request.getsession(true); session.getservletcontext().setattribute("online", onlinemonitor); session.getservletcontext().getrequestdispatcher("/index.jsp").forward(request, response); 3

10 2.2.2 Rozsah platnosti session 2.3. VOLÁNÍ DALŠÍCH WEBOVÝCH PROSTŘEDKŮ Mnoho aplikací vyžaduje vzájemné propojení skupiny požadavků od jednoho klienta. Jelikož http protokol patří do skupiny bezstavových, musí tento stav, nazývaný sezení (session), udržovat webová aplikace. Sezení jsou reprezentována objektem HttpSession. Přístup k session vede přes objekt třídy HttpRequest, voláním jeho metody getsession. Tato metoda vrací současnou session asociovanou s požadavkem. Pokud požadavek nemá žádnou session, vytvoří se nová. V následujícím výpisu kódu servletu je objekt username přiřazen do stejnojmenné proměnné, která bude přístupná po dobu trvání sezení daného uživatele. Poslední příkaz předá řízení stránce index.jsp včetně objektů request, response a username HttpSession session = request.getsession(); session.setattribute("username", username); session.getservletcontext().getrequestdispatcher("/index.jsp").forward(request, response); Rozsah platnosti request Data uložená s rozsahem platnosti request jsou dostupná po dobu existence požadavku. Ukázka části servletu předá řízení stránce index.jsp s atributem image a objekty request a response. request.setattribute("image", imageurl); request.getrequestdispatcher("/index.jsp").forward(request, response); 2.3 Volání dalších webových prostředků Webová komponenta může přímo vyvolat další webový prostředek během svého vykonávání dvěma způsoby: Obsah jiného prostředku může do sebe vložit (include) nebo může předat (forward) požadavek jinému prostředku. Aby bylo možné volat jiný prostředek, je nutné nejprve obdržet objekt RequestDispatcher voláním metody getrequestdispatcher("url"). Argument URL ukazuje na daný webový prostředek Vkládání webových prostředků Mnohdy je užitečné vložit do těla webové stránky další webový prostředek, např. reklamní banner, informaci o autorských právech apod. Toho lze dosáhnout voláním metody include patřící objektu RequestDispatcher. RequestDispatcher dispatcher = getservletcontext().getrequestdispatcher("/banner"); if (dispatcher!= null) dispatcher.include(request, response); Vložená komponenta má přístup k objektům request a response. 4

11 2.3.2 Předání řízení dalšímu webovému prostředku 2.4. FILTROVÁNÍ POŽADAVKŮ A ODPOVĚDÍ K předání řízení jiné webové komponentě je třeba volat metodu forward patřící objektu RequestDispatcher. Tato technika se používá typicky pro přesměrování na JSP stránku, které se předají i atributy request a response. Webová aplikace může tedy pracovat tak, že uživatel prostřednictvím webové stránky pošle požadavek servletu, ten jej obslouží a výsledek předá další webové stránce. S využitím znalostí o sdílení informací mezi webovými prostředky lze vytvořit praktickou konstrukci komunikace servletu s dalším webovým prostředkem. Ukázková část kódu servletu zjistí aktuální datum a předá řízení JSP stránce, na které se pak tato informace může uplatnit. Pozn.: Předaný atribut actualdate bude mít rozsah platnosti jen v rámci daného požadavku konkrétního uživatele. request.setattribute("actualdate", new Date()); RequestDispatcher dispatcher = request.getrequestdispatcher("/info.jsp"); if (dispatcher!= null) dispatcher.forward(request, response); 2.4 Filtrování požadavků a odpovědí Filtr je objekt, který může transformovat jak hlavičku, tak obsah požadavku (request) či odpovědi(response). Filtry se od webových komponent liší tím, že samy obvykle nevytváří odpověd (response). Na druhou stranu, filtr poskytuje funkcionalitu, která může být připojena k jakémukoliv webovému prostředku. Z tohoto důvodu by filtr neměl mít žádnou závislost na webovém prostředku, pro který plní funkci filtru, aby si zachoval vlastnost slučitelnosti s jinými druhy webových prostředků. Mezi hlavní úkoly filtru patří: předzpracovat požadavek blokovat zpracování požadavku a odpovědi modifikovat data hlavičky požadavku modifikovat data hlavičky odpovědi komunikovat s vnějšími zdroji Mezi typická využití filtrů patří např. autentizace, logování, konverze obrázků, komprese dat, šifrování či XML transformace. 5

12 Kapitola 3 Java Server Pages JSP stránka je textový dokument obsahující dva typy textu: statická data, jež mohou být vyjádřena jakýmkoliv textovým formátem (jako např. HTML, SVG, WML a XML) a JSP elementy tvořící dynamický obsah. Životní cyklus JSP má dvě důležité fáze. 1. překlad 2. zpracování požadavku V první fázi je JSP stránka přeložena na servlet a zkompilována. Ve druhé fázi již obsluhuje požadavky jakožto servlet stejně jako popisuje kapitola Struktura JSP stránky Z elementů na JSP stránce není žádný sám o sobě povinný. Obvykle má JSP stránka stejnou strukturu jako HTML stránka, obohacená o JSP elementy. JSP elementy použitelné na stránce shrnuje tabulka 3.1 JSP Syntaxe Popis element komentáře <%... %> Komentář je při překladu na servlet ignorován. deklarace <%!... %> Kód je vložen do těla třídy servletu mimo metodu service. direktivy <%@ taglib.. %> <%@ page.. %> <%@ include.. %> Zpřístupňuje vnější knihovny značek. Definuje globální nastavení JSP stránky. Určuje soubor vkládaný do JSP stránky. výrazy <%=... %> Výraz je vyhodnocen a vložen na výstup. skriptlety <%... %> Uvedený kód je vložen do metody service. akce <jsp:... > Různým způsobem ovlivňují chování výsledného servletu. Viz kapitola 3.4. Tabulka 3.1: JSP elementy 6

13 3.2. SKRIPTOVACÍ ELEMENTY 3.2 Skriptovací elementy Skriptovací elementy umožňují používat příkazy programovacího jazyka uvnitř JSP stránky. K jejich typickým užitím patří vytváření objektů, metod a přístup k nim. Většina případů vyžadujících použití skriptovacích elementů může být eliminována použitím uživatelských značek či JSP standard tag library. Jedním z cílů JSP je oddělit statická data od kódu potřebného pro generování dynamického obsahu. Proto je vysoce nedoporučované tyto elementy používat. Implicitní skriptovací jazyk v JSP je java, nicméně lze používat i jiné programovací jazyky. Stačí nastavit atribut language v direktivě page na začátku JSP stránky. <%@ page language="scripting-language" %> Deklarace JSP deklarace slouží k deklarování proměnných a metod. V případě použití skriptovacího jazyka java, se deklarace v JSP stanou deklaracemi v servletu, na nějž se JSP stránka překládá. Obecný tvar deklarace vypadá následovně: <%! deklarace %> Výrazy JSP výrazy pracují tak, že výraz ve skriptovacím jazyce je konvertován na string a vložen do datového toku vraceného klientovi. Používá-li se jako skriptovací jazyk java, potom výraz ve tvaru stringu je vložen do implicitního objektu out. Syntax JSP výrazu: <%= výraz %> Scriptlety Scriptlet může obsahovat libovolný platný fragment kódu. Při užití javy jako skriptovacího jazyka se příkazy obsažené ve scriptletu vloží do metody service příslušící servletu, na nějž je JSP stránka přeložena. Scriptlet má obecný tvar: <% kód ve skriptovacím jazyku %> 3.3 Direktivy JSP JSP direktivy definují globální nastavení stránky. K dispozici jsou 3 direktivy: page, include a taglib. 7

14 3.3. DIREKTIVY JSP Direktiva page Tato direktiva definuje nastavení stránky. Může obsahovat atributy, které uvádí tabulka 3.2: Atribut language extends import session buffer autoflush isthreadsafe info errorpage iserrorpage contenttype Popis Specifikuje jazyk, v jakém je JSP napsána. Výchozí hodnota je java a většina servlet kontejnerů ani jiné jazyky neumí. Má stejnou funkci jako u tříd, nastavuje předka. Opět stejná funkce jako u tříd, dovoluje používat třídy i bez názvu balíku. Definuje, jestli bude mít JSP přístup k objektu session. Výchozí hodnota je true. Definuje, jestli má JSP používat buffer. Velikost určuje číselná hodnota, která značí velikost v kilobytech. Pokud není žádoucí používat buffer, je třeba zvolit hodnotu none. Výchozí hodnota je 8 kb. Definuje, jestli se bude buffer odesílat sám (true) nebo jestli se bude provádět flush (false) podle určení programátora. Výchozí hodnota je true. Definuje, jestli může být stránka spuštěna více klienty najednou (true) nebo jestli mají stát ve frontě (false). Výchozí hodnota je true. Obdoba metody getservletinfo. Specifikuje URL, na které bude stránka přesměrována, pokud neodchytnete výjimku. Definuje, jestli je tato stránka cílem z definice errorpage. Pokud je true, pak má stránka další implicitní objekt exception, což je neodchycená výjimka. Definuje typ odpovědi (text/html) a její kódování. Je ve tvaru contenttype="text/html; charset=utf-8". Tabulka 3.2: Atributy direktivy page Direktiva include Tato direktiva je výjimečná tím, že se může objevovat kdekoli v souboru JSP. Atribut file definuje soubor, který se includuje ještě předtím, než se přeloží stránka. Direktiva include 8

15 3.3. DIREKTIVY JSP je analogická s metodou include používanou v servletu, jak popisuje kapitola Obecné použití této direktivy vypadá následovně: <%@ include file="relative url" %> Jelikož direktiva include vkládá soubor do stránky před jejím přeložením, tak v případě změny vloženého souboru, je třeba znovu přeložit všechny JSP stránky, které na tento soubor odkazují. Proto je efektivní tuto direktivu použít v případě, kdy se vkládaný soubor často nemění. Pokud se vkládaný soubor mění častěji, tak že není výhodné vždy překládat všechny odkazující JSP stránky, nabízí se alternativa použití akce: <jsp:include page="relative url" /> Tato akce vkládá soubor do JSP až v momentě, kdy je požadována Direktiva taglib Direktiva taglib umožňuje používat další značky (tagy), než jen ty, které nabízí HTML či základní sada JSP akcí. Tyto značky se obvykle označují výrazem uživatelské (custom tags). Jedná se o silný nástroj, pomocí něhož lze elegantně tvořit dynamicky generovaný obsah webových sránek Uživatelské značky Pomocí této technologie lze vytvořit vlastní značky, které mohou vykonávat stejnou práci jako scriptlety. Tag ale stačí nadefinovat jen jednou, a pak už se dá i opakovaně používat. Tyto značky může používat i někdo, kdo nemá ani ponětí, co je to java (autor html, grafik,...). Oproti scriptletům nemíchají uživatelské značky HTML s útržky Java kódu dohromady, čímž se lze vyhnout vysoce nepřehlednému a těžko udržovatelnému zdrojovému textu. V mnoha případech není třeba vytvářet vlastní značky, ale porozhlédnout se na internetu, zdali již potřebnou funkcionalitu někdo dříve do uživatelské značky nezapouzdřil. Tímto způsobem jsou dostupné spousty hotových značek s velmi širokou škálou funkcí. Na druhou stranu nutno dodat, že není vhodné webovou aplikaci vystavět způsobem, kdy řada JSP stránek bude protkána uživatelskými značkami, zajišt ujícími aplikační logiku. Existují lépe udržovatelnější a přehlednější návrhy webových aplikací. Více v kapitole 4. JSP uživatelské značky jsou v podstatě obyčejné javovské třídy, které mají za předka třídu javax.servlet.jsp.tagext.tagsupport nebo javax.servlet.jsp.tagext.bodytagsupport. První z nich nemají tělo, tzn. že značka vypadá obecně takto: <prefix:jméno atributy /> Ve druhém případě tělo mají: <prefix:jméno atributy >... tělo... </prefix:jméno > 9

16 3.3. DIREKTIVY JSP Pro vytvoření vlastní značky je nezbytné udělat 3 věci: 1. Napsat javovskou třídu provádějící požadovanou funkci značky. Např: javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; public SimpleExampleTag extends TagSupport { public int dostarttag() throws JspException { try { pagecontext.getout().print("hello."); } catch (Exception ex) { throw new JspTagException("SimpleExampleTag: " + ex.getmessage()); }return SKIP_BODY; } public int doendtag() { return EVAL_PAGE; } } 2. Napsat tag library descriptor, který popisuje značky, jejich parametry a vztahy mezi nimy. Je v XML formátu a má koncovku tld. <?xml version="1.0"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" " <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.1</jsp-version> <short-name>tag</short-name> <tag> <name>simpleexample</name> <tag-class>mypackage.simpleexampletag</tag-class> </tag> </taglib> 3. Informace o tag library descriptoru vložit do souboru web.xml, konkrétně do elementu web-app <taglib> <taglib-uri>tag</taglib-uri> <taglib-location>/web-inf/simpleexampltag.tld</taglib-location> </taglib> Použití takto definované uživatelské značky vypadá v JSP stránce následovně: 10

17 3.4. AKCE contenttype="text/html"%> uri="simpleexampltag.tld" prefix="mytag"%> <html> <head><title>jsp Page</title></head> <body> <mytag:simpleexample/> </body> </html> 3.4 Akce JSP akce využívají konstrukcí jazyka XML. Umožňují dynamicky vložit do stránky jiný soubor, používat JavaBeans komponenty, přesměrovat uživatele na jinou stránku či generovat HTML pro java pluginy. Obecný tvar použití akce vypadá: <jsp: jméno_akce atributy > JSP technologie nabízí k použití akce uvedené v tabulce JavaBeans JavaBeans jsou java třídy, které mají konkrétně definovanou strukturu. Za JavaBean komponentu se může prohlásit každá třída, která: Obsahuje konstruktor bez parametrů. Implementuje rozhraní java.io.serializable. Má své členské proměnné private a dovoluje k nim přistupovat pomocí get/set metod. JavaBeans komponenty jsou zajímavé tím, že jdou jednoduše připojit na JSP stránku pomocí akce usebean. Tato akce deklaruje, že stránka bude používat bean, jež je uložena ve specifikovaném scope (application, session, request nebo page).pokud uvedená JavaBean ještě neexistuje, vytvoří se nová a uloží se jako atribut scope objektu. JavaBeans lze používat ve více JSP najednou. Její kód stačí napsat pouze jednou, a ten pak dle potřeby využívat. Mimo to, oproti servletům jdou podstatně lépe debugovat. Ke každému atributu třídy beanu lze přistupovat přes get/set metody. Při použití v JSP stránce plní tuto práci akční značky getproperty/ setproperty. Jiný způsob, jak získat z JavaBean komponenty její vlastnost, je použít místo značky getproperty výraz Expression Language. Není pak potřeba deklarovat na stránce použití beanu pomocí značky usebean. Proto je tento způsob získávání vlastností z JavaBeans preferovaný. Přístup k vlastnosti JavaBeanu vypadá takto: ${packages.classname.property} 11

18 3.4. AKCE Akce jsp:attribute jsp:body jsp:element jsp:expression jsp:fallback jsp:forward jsp:include jsp:usebean jsp:getproperty jsp:setproperty jsp:param jsp:params jsp:plugin jsp:text Popis Dovoluje definovat hodotu značky attribute v těle XML elementu namísto jejího definování v atributu XML značky. Specifikuje tělo značky. Dynamicky generuje XML element. Obsahuje výraz, který je platný v použitém skriptovacím jazyku pro danou JSP stránku. Obdoba <%= výraz >. Textová zpráva, která se má zobrazit uživateli při neúspěšném zobrazení pluginu. Předá řízení určenému webovému prostředku. Vloží do stránky statický soubor nebo výsledek jiné webové komponenty. Instanciuje bean s určeným rozsahem platnosti. Vloží hodnotu vlastnosti daného beanu do výsledku. Nastaví hodnotu vlastnosti či hodnoty vlastností příslušného beanu. Parametr a hodnota, která má být předána appletu nebo beanu. Parametry a hodnoty, které mají být předány appletu nebo beanu. Vyvolá spuštění appletu nebo beanu. Pokud není plugin dostupný, vyvolá dialog pro stažení potřebného software. Používá se pro šablonová data. Tabulka 3.3: JSP akce Následující příklad popisuje realizaci počítadla přístupů na stránku pomocí JavaBean komponenty. package example; public class CounterBean { private long counter = 0; public CounterBean() { } public long getcounter() { return counter; } public void setcounter(long counter) { this.counter = counter; } 12

19 3.5. UNIFIED EXPRESSION LANGUAGE } public long increment() { return ++counter; } Použití JavaBeanu v JSP stránce znázorňuje ukázka následujícího kódu. <%@ page contenttype="text/html; charset=iso " %> <html> <head> <jsp:usebean id="counterbeanid" scope="application" class="example.counterbean" /> <title>javabean Test</title> </head> <body> <p>jsp with JavaBean</p> <p> Number of visits of this page: <jsp:getproperty name = "CounterBeanId" property = "increment" /%> </p> </body> </html> Za povšimnutí stojí, že JavaBean komponenta je uložena v rozsahu platnosti application, tudíž je společná pro všechny návštěvníky stránky. 3.5 Unified Expression Language Novinkou v JSP 2.1 je Unified Expression Language. Tento reprezentuje spojení Expression Language známý z JSP 2.0 a Expression Language vytvořený pro technologii Java Server Faces. Expression Language představený v JSP 2.0 dovoluje používání jednoduchých výrazů k dynamickému čtení dat z JavaBeans komponent. Expression Language používaný v Java Server Faces nabízí odkládání evaluace výrazů, data nejen číst, ale i měnit, a možnost volat metody. Unifikovaný Expression Language tedy nabízí: Dynamicky číst data uložená v JavaBeans komponentách, různých datových strukturách a implicitních objektech. Dynamicky zapisovat data (např. vstupní data ve formulářích, do JavaBeans komponent). Volat static a public metody. Dynamicky vykonávat aritmetické operace. 13

20 3.6. JSP STANDARD TAG LIBRARY Okamžité vyhodnocení výrazu při překladu JSP stránky nebo odložené vyhodnocení výrazu později při požadavku na výraz. Pro přístup ke konkrétním proměnným využívají výrazy tečkovou notaci. Např. ${user.name} Syntaxe použití Unified Expression Language závisí na tom, zda požadujeme evaluaci výrazu bezprostřední, tedy při překladu JSP stránky na servlet, nebo odloženou Bezprostřední vyhodnocování výrazů Bezprostředně vyhodnocované výrazy používají syntaxi : ${ výraz } Tento výraz může být používán jako hodnota atributu značky použité v JSP. Vyhodnocované hodnoty jsou pouze pro čtení. Příklad použití v obecné značce: <prefix:sometag value="${expression}"/> Odložené vyhodnocování výrazů Syntaxe výrazů, jejichž vyhodnocení neprobíhá již v překladu JSP stránky, vypadá následovně: #{ výraz } Takto zapsaný výraz může být vyhodnocen až v dalších fázích životního cyklu stránky v závislosti na použité technologii. 3.6 JSP Standard Tag Library JSP Standard Tag Library (JSTL) je standardizovaná knihovna značek, která zapouzdřuje běžné funkce využívané v JSP aplikacích. Tato standardizace umožňuje umístění aplikace využívající JSTL na jakýkoliv JSP kontejner podporující JSTL. U takovéto aplikace je vyšší pravděpodobnost, že použité značky jsou implementovány optimálně. Lépe než značky se stejnou funkcionalitou od jiného dodavatele. JSTL nabízí pět knihoven značek zaměřujících se na různé oblasti užití. Tabulka 3.4 shrnuje jednotlivé knihovny. Přestože JSTL nabízí knihovnu značek pro práci s databází pomocí jazyka SQL, nedoporučuje se používat. Argumentem podkládajícím toto tvrzení je fakt, že aplikace přistupující k databázi z JSP stránky přes značky porušuje návrh aplikace Model-View-Controller. Možnosti JSP Standard Tag Library lze plně využít při spolupráci s Expression Language. 14

21 3.6. JSP STANDARD TAG LIBRARY Název URI Popis Core práce s proměnnými, větvení, cykly, URL management XML zabývá se XML a XSLT transformacemi Internationalization internacionalizace SQL funkce SQL Functions práce s řetězci a kolekcemi Tabulka 3.4: JSP Standard Tag Library knihovna značek Core Inicializace knihovny Core vypadá následovně: <%@ taglib uri=" prefix="c" %> K práci s proměnnými slouží značky set a remove. První z nich nastavuje hodnotu proměnné EL nebo vlastnost proměnné EL v jednom z rozsahu platnosti (page, request, session nebo application). Pokud proměnná ještě neexistuje, je vytvořena. Např. <c:set var="somevariable" scope="session" value="..."/> Pro odstranění proměnné EL lze využít značku remove. <c:remove var="somevariable" scope="session" /> Pro větvení programu slouží značky choose a if. Cykly obstarávají foreach a fortoken. Názorné použití ukazuje níže uvedený příklad: <c:choose > <c:when test="${(amount > 1) and (amount < 5)}" > <c:foreach var="i" begin="1" end="${amount}" step="1"> <c:out value="${list[i]}" /> </c:foreach > </c:when > <c:otherwise > <p>more than 5</p> </c:otherwise > </c:choose > Bezpečný způsob, jak vypsat hodnotu proměnné, je přistoupit na implicitní objekt JSP stránky out pomocí standardní značky. <c:out value="${ výraz }"/> 15

22 3.6. JSP STANDARD TAG LIBRARY knihovna značek XML Knihovna XML nabízí tři sady značek. XML Core, XML Flow Control a XML Transformation. JSTL XML značky používají pro přístup k obsahu XML dokumentu výrazy jazyka XPath. Rovněž nabízí XSLT transformace. Načtení značek do paměti zajistí volání direktivy taglib. <%@ taglib uri=" prefix="x" %> knihovna značek Internationalization Tato knihovna nabízí přizpůsobení stránky lokálnímu nastavení počítače. Vytváření zpráv zavislých na tomto nastavení, formátování a analyzování datových elementů, ke kterým patří čísla, měna, data, čas apod. Základem internacionalizace je lokalizační kontext obsahující proměnné locale a resource bundle. Nastavení locale specifikovaného klientem lze přepsat pomocí značky setlocale. Pomocí značek setbundle a bundle se nastavuje resource bundle, což je místo s uloženými texty v daném konkrétním jazyce. Pro výstup lokalizovaného řetězce na obrazovku prohlížeče slouží značka message. Následující příklad ukazuje, jakým způsobem zobrazit datum a čas v podobě odpovídající lokálnímu nastavení prostředí. <%@ taglib uri=" prefix="fmt" %>... <jsp:usebean id="nowtime" class="java.util.date" /> <jsp:setproperty name="nowtime" property="time" value="${now.time }" /> <fmt:message key="shipdate"/> <fmt:formatdate value="${nowtime}" type="date" datestyle="full"/> knihovna značek SQL Používání knihovny značek SQL porušuje návrhový vzor aplikace Model-View-Controller, tudíž není doporučeníhodné ji používat. Databázové operace jsou normálně zapouzdřeny v JavaBeans komponentách knihovna značek Functions Tato knihovna disponuje značkou length, která vrací délku libovolné kolekce podporované značkou c:foreach. Aplikovaná na String vrací počet znaků řetězce. Dalších patnáct značek nabízí nejrůznější manipulace s daty právě typu String. Inicializace knihovny Functions vypadá takto: <%@ taglib uri=" prefix="fn" %> 16

23 Kapitola 4 Webové aplikace Webová aplikace je aplikace, která využívá webový prohlížeč jako rozhraní pro komunikaci s uživatelem. Využívá schopnost prohlížeče zobrazovat HTML obsah. Takováto aplikace disponuje zásadní výhodou, že uživatel ji nemusí instalovat a v případě jejího umístění na internetu ji má dostupnou z libovolného počítače ( s připojením na internet a instalovaným webovým prohlížečem ). Díky podpoře CSS, JavaScriptu, XMLHttpRequestu, DOM či možnosti plug-inů současných webových prohlížečů lze budovat tzv. rich internet application (RIA). RIA se vyznačuje tím, že dokáže poskytnout podobné možnosti, jako tradiční desktopová aplikace. Obvykle přenáší procesní data pro uživatelské rozhraní k webovému klientovi, ale určitou část dat ponechává na aplikačním serveru. Stupnici mezi prostou webovou aplikací a RIA vyplňují aplikace s různými stupni komplexnosti a množstvím použitých technologií. 4.1 Vlastnosti webové aplikace Požadavky na vlastnosti webové aplikace se liší podle toho, jakému účelu má aplikace sloužit. Obecně lze tyto požadavky shrnout v následujících bodech: Výkonnost: Například vystavení určitého počtu stránek za časovou jednotku ve veřejné části aplikace. Robustnost: Provozuschopnost aplikace i při selhání některých služeb. Škálovatelnost: Možnost distribuovat služby, zvýšit výkon aplikace v případě potřeby. Udržovatelnost a rozšiřitelnost: Možnost nadále rozšiřovat aplikaci o další funkcionality a udržovat ji. Bezpečnost: Dostatečná bezpečnost aplikace vzhledem k účelu, ke kterému slouží. Uživatelská přívětivost: Spočívá obvykle v dobrém návrhu GUI. Podle účelu aplikace je třeba se zaměřit na odpovídající body. Neznamená to ovšem, že každá webová aplikace by měla v maximální míře všechny výše uvedené body splňovat. V praxi se vždy jedná o kompromis mezi náklady na její realizaci a požadovanou funkcionalitou. 17

24 4.2. ARCHITEKTURA APLIKACE 4.2 Architektura aplikace Architektura znamená podle [9] a [7] všeobecné označení určující celkovou strukturu a základní konstrukci částí nebo kompletního počítačového systému. V případě architektury webové aplikace se dá mluvit o způsobu rozdělení aplikace (jako jsou aplikační data, procesy, datové toky) do logických celků, stanovení vzájemných vztahů a interakcí mezi nimi. To vše s rozumnou mírou obecnosti. K návrhu aplikace se vyplatí přistupovat s rozmyslem a věnovat mu dostatek času. Jedná se o prvotní fázi vzniku aplikace, jejíž pozdější modifikace stojí neúměrně velké množství prostředků. At už ve formě pracovní energie či finančních prostředků. Při budování JSP aplikací jsou nejznámější dva způsoby, kterými lze k návrhu přistoupit. Obvykle jsou uváděny pod názvy Model 1 a Model Model 1 V architektuře Model 1 jsou samotné JSP stránky zodpovědné za obsluhování požadavků od klienta. Existuje zde oddělení prezentační vrstvy od obsahu, nebot přístup k datům zajišt ují JavaBeans. Řízení založené na této architektuře je decentralizované, nebot aktuální zobrazovaná JSP stránka určuje, jaká ze stránek bude zobrazena následně. Model 1 může být vhodný pro jednoduché aplikace, nicméně nedostatečný pro většinu aplikací, jež chtějí dostát požadavkům jako jsou např. dobrá udržovatelnost či rozšiřitelnost. Schéma funkce nastiňuje obrázek 4.1 Obrázek 4.1: Model Model 2 Architektura Model 2, často nazývaný jako Model-View-Controller (MVC), spojuje výhody servletů a JSP stránek. Jedná se o návrh aplikace respektující oddělení řídící logiky, dato- 18

25 4.2. ARCHITEKTURA APLIKACE vého modelu a uživatelského rozhraní. Servlet se chová jako řídící část odpovídající za obsluhu požadavků a vytváření beanů užívaných v JSP. V JSP samotné není žádná řídící logika. Úloha JSP stránek spočívá pouze v zobrazování informací z objektů a beanů vytvářených servletem, či jejich zakomponování do statického obsahu stránky. Model by měl tzv. odrážet obraz reálného světa. Tvoří jej tedy třídy modelující objekty používané v aplikaci, tak aby byly nezávislé na ostatních vrstvách aplikace. Důvody proč použít MVC lze shrnout do dvou hlavních bodů: Znovupoužitelnost: pro opakující se problém není třeba vyvíjet nové řešení, ale přizpůsobit příslušnou část aplikace novým potřebám. Přehlednost: separování jednotlivých vrstev aplikace umožňuje snadnější orientaci v kódu a její udržovatelnost. Obrázek 4.2: Model 2 Aplikaci, navrženou podle MVC, znázorňuje obrázek 4.2. Aplikace běžící na aplikačním serveru tvoří tedy tři principiální části: Model (Model) reprezentuje informace a data, se kterými aplikace pracuje, včetně aplikační logiky pracující s těmito daty. V contextu J2EE aplikace se jedná o třídy s aplikační logikou, jako jsou např. javabeans apod. Pohled (View) tvoří uživatelské rozhraní, které zpřístupňuje informace a data modelu. Tuto roli přebírají JSP stránky. Řídící část (Controller) představuje řídící logiku aplikace. Reaguje na vzniklé požadavky (obvykle od uživatele) voláním příslušných metod modelu. Tuto úlohu přebírají servlety, někdy se jedná o jediný řídící servlet. 19

26 4.3. INTERNACIONALIZACE 4.3 Internacionalizace U mnohých webových aplikací by se mělo počítat s tím, že jejich uživatelé jsou příslušníky různých národů, z čehož vyplývá, že mluví různými jazyky, používají různé abecedy, zapisují určité údaje ve formátu odpovídajícímu jejich národním zvyklostem apod. Schopnost aplikace podporovat různé národní zvyklosti se nazývá internacionalizace. Výrazem lokalizace se pak rozumí podpora daného konkrétního národního prostředí. Všechny tyto třídy používají třídu Locale pro specifikaci jazyka či národních zvyklostí. Pro tyto účely nabízí java velmi kvalitní nástroje. Správné zobrazování časových údajů a čísel má na starosti třída DateFormat a NumberFormat. Třída TimeZone se stará o to, aby byl čas zobrazen správně, v závislosti na časové zóně, ve které se uživatel nachází. Třída ResourceBundle řeší nalézání a používání textů ve správném jazyce. Každá z těchto tříd se řídí třídou Locale určující aktuální jazyk či národní zvyklosti. Základním principem u lokalizovatelné aplikace je, aby texty nebyly přímo v kódu, ale uloženy externě v souborech typu.properties. Na ně se pak odkazuje pomocí klíčů. Výsledný zobrazený text se dohledá v závislosti na hodnotě objektu Locale. Tento přístup lze realizovat používáním třídy ResourceBundle. Aplikace LogoArena.cz je určena výhradně pro české prostředí a proto nepodporuje lokalizaci do jiných jazyků. Nicméně ukázková aplikace, která je součástí této práce, podporuje český a anglický jazyk. Konkrétní návod, jak aplikaci internacionalizovat, podává kapitola 5.2. Podrobný popis veškerých funkcí souvisejících s internacionalizací lze najítv dokumentaci jazyka java [10]. 4.4 Webové rámce Účelem webových rámců ( anglicky web frameworks ) je zjednodušit a zproduktivnit vývoj aplikací. Při psaní různých webových aplikací vývojář zjistí, že určité části aplikce jsou víceméně stále stejné. Z tohoto faktu vychází smysl webových rámců. Vytvořit určitou šablonu aplikace, která se pak nakonfiguruje k obrazu vývojářových představ. Další výhodou webových rámců je, že využívají do značné míry osvědčené postupy, což je dobrým předpokladem k tomu, aby aplikace byla z hlediska architektury a rozvrstvení v pořádku. Mnoho webových rámců nabízí knihovny poskytující přístup k databázi, řeší problém autentifikace a autorizace, nabízí mapování URL na lidsky zapamatovatelné adresy, posytuje recyklovatelné šablony webových stránek a podobně. Většina webových rámců je založena na osvědčeném návrhovém vzoru Model-Vew-Controller, viz kapitola Obecně lze webové rámce rozdělit na dvě skupiny: rámce orientované na zpracování HTTP požadavku rámce orientované na vizuální komponenty V následující části budou zmíněny jen ty nejznámější webové rámce. Pro javu jich totiž existuje poměrně velké množství. Jejich seznam lze nalézt na webových stránkách [12]. 20

27 4.4. WEBOVÉ RÁMCE Rámce orientované na zpracování HTTP požadavku Mezi první skupinu patří zatím asi nejpoužívaňejší framework Apache Struts [1], který má i širokou podporu v mnoha vývojových prostředích. Dnes již je Struts překonán. K nevýhodám tohoto frameworku patří závislost na velkém množství konfiguračních souborů. Spring MVC [4] je dalším velmi populárním webovým rámcem.k jeho charakteristice patří, že je založen na Inversion of Control, tzn, že závislosti mezi třídami se zabývá webový kontejner, nikoliv samotné třídy. Umožňuje rovněž kombinovat další frameworky. Stripes [5] je nový webový rámec, jehož tvůrci si vzali poučení z negativních vlastností Struts i Spring. Jeho přednosti spočívají v možnosti držet pohromadě všechen kód obsluhující jednu stránku, a přitom nepotřebuje žádné konfigurační soubory, nebot využívá systém anotací zavedený v javě Rámce orientované na vizuální komponenty Tapestry [6] je framework z dílny Apache. Zajímavostí je, že nevyužívá JSP, ale je sám nádstavbou nad JavaServlet API. Disponuje vlastní soustavou šablon, úzce provázanou s řídící částí aplikace. Java Server Faces [?] je webový rámec, jejž prosazuje tvůrce Javy, firma Sun. Významnou devizou je jeho přímé začlenění do standardu J2EE 5. Tímto má zaručenou kvalitní podporu v mnohých vývojových nástrojích. JSF je rovněž postaven přímo na JavaServlet API. Může, ale nemusí, používat JSP. 21

28 Kapitola 5 Ukázková webová aplikace V následujících podkapitolách bude vystavěna webová aplikace, která představuje jednoduchý informační systém. Aplikace bude vybudována pomocí JSP a JavaServlets technologií. K práci s daty se využije databáze MySQL. Účelem této webové aplikace je demonstrovat na přehledném příkaldu, jak lze přes webové rozhraní přistoupit k databázi, inteligentně zobrazit načtená data na obrazovku a jakým způsobem lze využívat proměnné napříč JSP stránkami a servlety aplikace. 5.1 Návrh Model-View-Controller aplikace První verze aplikace nabízí sice jen obdobu obligátního "Ahoj světe!" vylepšenou o možnost přidání vlastního jména k pozdravu, nicméně i tak lze na ní dobře demonstrovat rozvrstvení podle návrhového vzoru Model-View-Controller. V této kapitole bude ukázáno, jak využít direktivy include pro vkládání opakujících se prvků na stránkách, jakým je například navigační menu. Jak vytvořit JavaBean komponentu a jak je možné pomocí EL přistupovat, k datům, které nese. Bude rovněž vysvětleno použití servletu zajišt ujícího řízení celé aplikace Model Model je zastoupen třídou, která splňuje parametry JavaBean komponenty. Jedná se o třídu, která pomocí svých privátních proměnných (tzv. vlastností) popisuje model osoby, jakožto objekt se kterým tato aplikace pracuje. Pro přehlednost, je model zjednodušen na maximální možnou míru, takže ona osoba je popsána pouze jedinou vlastností, a to svým jménem. Rovněž práce s tímto objektem spočívá v zapamatování zadaného jména a následném poskytnutí této informace, když je vyžadována. K tomuto účelu slouží get/set metody pro danou vlastnost, jimiž JavaBean komponenta disponuje. Nejlépe podpoří pochopení předešlého odstavce ukázka kódu JavaBean komponenty, tedy souboru PersonBean.java. package model; public class PersonBean implements java.io.serializable { private String name; public PersonBean() { } public String getname() { 22

29 5.1. NÁVRH MODEL-VIEW-CONTROLLER APLIKACE } return name; } public void setname(string name) { this.name = name; } Jak je vidět, jediná vlastnost této JavaBean komponenty se jmenuje name. Konstruktor je bez parametrů a přístup k vlastnosti name zajišt ují metody getname a setname Pohled (View) Pohled zajišt ují JSP stránky. Stránka index.jsp nabízí formulář, který vyzývá návštěvníka ke vložení svého jména. Druhá JSP stránka hellooutput.jsp zobrazuje pozdrav, ke kterému je připojeno jméno zadané do formuláře na úvodní stránce. Pro celou aplikaci je společné navigační menu. Aby se, v případě změny v menu, nemusely dělat opravy ve všech stránkách, je zde využita direktiva include, která vloží menu na konkrétní místo ve stránce. Samotné menu je tedy obsaženo v souboru menu.jsp, který je includován do zbylých dvou JSP stránek. Následující výpis kódu je součástí JSP stránky index.jsp. <%@page contenttype="text/html" pageencoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>ukazkova aplikace</title> <link href="ukazkovaaplikace1.css" rel="stylesheet" type="text/css" /> </head> <body> <%@ include file="menu.jsp" %> <div id="content"> <h2>welcome in example application!</h2> <p> <form method="post" action="mainservlet"> Enter your name: <input type="text" name="username" value="" /> <input type="submit" value="ok" /> </form> </p> <p> After submiting your name... </p> </div> </body> </html> 23

30 5.1. NÁVRH MODEL-VIEW-CONTROLLER APLIKACE Oproti klasické HTML stránce se tato JSP stránka liší na třech místech: Direktiva na prvním řádku contenttype="text/html" pageencoding="utf-8"%> definuje nastavení JSP stránky. Následující řádek s direktivou <%@ include file="menu.jsp" %> bude při překladu nahrazen kódem, který obsahuje soubor menu.jsp. Poslední zajímavost se nachází ve značce s formulářem. <form method="post" action="helloservlet"> Enter your name: <input type="text" name="username" value="" /> <input type="submit" value="ok" /> </form> Poté, co uživatel stiskne tlačítko OK, odešle se požadavek servletu HelloServlet.jsp. Zaslaný požadavek v sobě ponese parametr username. Po zpracování požadavku předá servlet řízení stránce hellooutput.jsp: <%@page contenttype="text/html" pageencoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>ukazkova aplikace</title> <link href="ukazkovaaplikace1.css" rel="stylesheet" type="text/css" /> </head> <body> <%@ include file="menu.jsp" %> <div id="content"> <h2>hello ${person.name}!</h2> </div> </body> </html> Řádek <h2>hello ${person.name}!</h2> ukazuje, jak je možné pomocí Expression Language získat hodnotu vlastnosti z JavaBean komponenty, do níž servlet uložil hodnotu jména získanou z formuláře. Na první pohled by se mohlo zdát,že přece není možné, aby se pomocí tečkové notace přistupovalo na proměnnou name, která má zabezpečení typu private. Nicméně zápisem ${person.name} se ve skutečnosti volá get metoda od proměnné name. Tímto způsobem se tedy praktikuje získávání dat z JavaBean komponent. Existuje ještě druhý způsob pomocí jsp akcí, ale využívání EL je více používané. 24

31 5.2. JSTL A FILTROVÁNÍ POŽADAVKŮ Řídící část (Controller) Jako řídící jednotka této aplikace slouží servlet, konkrétně HelloServlet.java. Nejdůležitější metoda třídy servletu vypadá takto: protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { PersonBean person = new PersonBean(); person.setname((string)request.getparameter("username")); request.getsession().setattribute("person", person); request.getrequestdispatcher("/hellooutput.jsp").forward(request, response); } V aplikaci se po zadání jména do formuláře a odeslání požadavku na servlet zavolá zmíněná metoda. Jak je vidět, vytvoří se nová instance JavaBean komponenty se jménem person. Z objektu požadavku se získá parametr username a tato hodnota se uloží do JavaBeanu. Celá tato komponenta je pak vložena do objektu session, tedy do objektu, který je dostupný na všech stránkách aplikace pro jednoho konkrétního uživatele. Po té je předáno řízení na stránku hellooutput.jsp. Tam se pomocí EL zobrazí hodnota jména z JavaBean komponenty person, kterou servlet instancioval. 5.2 JSTL a filtrování požadavků Ukázková aplikace 2 přidává k první verzi jazykové přizpůsobení aplikace pomocí knihovny JSTL. Princip spočívá v umístění textů mimo samotné stránky a JSP obsahuje pouze odkazy na daný text. Do jakého jazykového souboru je odkaz namířen závisí na nastavení systémové proměnné locale. Dále se v této kapitole předvede, jak je možné využívat knihovny JSTL a jak zapojit filtry na předzpracování uživatelských požadavků Internacionalizace v JSP Tato ukázková aplikace nabízí lokalizaci do dvou jazyků, a to češtiny a angličtiny. Po prvotním spuštění se aplikce přizpůsobí místnímu jazykovému nastavení klienta a mimo to je nabídnuta možnost ručního přepínání mezi těmito jazyky. Pro internacionalizaci v JSP je výhodné použít, k tomuto účelu navrženou, JSTL knihovnu. Následující ukázka souboru index.jsp ukazuje jak na to. <%@page contenttype="text/html" pageencoding="utf-8"%> <%@taglib uri=" prefix="c"%> <%@taglib uri=" prefix="f" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> 25

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

Java Server-side. Štěpán Kuchař. stepan.kuchar@vsb.cz. VŠB-TUO FEI Katedra informatiky

Java Server-side. Štěpán Kuchař. stepan.kuchar@vsb.cz. VŠB-TUO FEI Katedra informatiky Java Server-side Štěpán Kuchař stepan.kuchar@vsb.cz VŠB-TUO FEI Katedra informatiky Trocha historie 500 před n. l. Pythagoras založil bratrstvo vyznávající reinkarnaci, vegetariánství, mystický význam

Více

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

Platforma J2EE. Lukáš Zapletal liberix.cz. Platforma Java 2 Enterprise Edition vývoj webových aplikací Platforma J2EE Lukáš Zapletal liberix.cz Platforma Java 2 Enterprise Edition vývoj webových aplikací Pictures (c) Sun Microsystems from J2EE 5 Tutorial J2EE - webové aplikace hlavní komponentou u webového

Více

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

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu Servlety a JSP Petr Adámek, petr.adamek@ibacz.eu Úvod Rekapitulace vstupních znalostí Standardy Nástroje (Běhové prostředí, nástroje pro vývoj) Servlety JSP JSP značky EL (Expression Language) Internacionalizace

Více

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

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití: Architektura webové aplikace, funkce jednotlivých vrstev, životní cyklus standardizovaných komponent Java EE, Servlety, JSP, frameworky, návrhové vzory 1. Distribuce Javy Distribuce Javy se liší podle

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký, Miroslav Beneš 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2006/2007 c 2006-2007 Michal Krátký, Miroslav Beneš Tvorba

Více

(Enterprise) JavaBeans. Lekce 7

(Enterprise) JavaBeans. Lekce 7 (Enterprise) JavaBeans Lekce 7 JavaBeans vs. Enterprise JavaBeans (EJB) JavaBeans technologie: jedná se o tzv. komponentní architekturu určenou pro JSE platformu určená pro tvorbu JSE GUI programů pomocí

Více

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

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011 Technologie Java Enterprise Edition Přemek Brada, KIV ZČU 8.6.2011 Přehled tématu Motivace a úvod Infrastruktura pro velké Java aplikace (Java základní přehled) Části třívrstvé struktury servlety, JSP

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2006 2008 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

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

Elektronická podpora výuky předmětu Komprese dat Elektronická podpora výuky předmětu Komprese dat Vojtěch Ouška ouskav1@fel.cvut.cz 19. června 2006 Vojtěch Ouška Elektronická podpora výuky předmětu Komprese dat - 1 /15 Co je to SyVyKod? SyVyKod = Systém

Více

Tvorba informačních systémů

Tvorba informačních systémů Java2 Enterprise Edition Tvorba informačních systémů Michal Krátký 1, Miroslav Beneš 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006 Michal Krátký,

Více

Michal Krátký, Miroslav Beneš

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

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2005-2008 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2005/2006 c 2006-2007 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

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

Semináˇr Java X J2EE Semináˇr Java X p.1/23 Seminář Java X J2EE Seminář Java X p.1/23 J2EE Složitost obchodních aplikací robusní, distribuované, spolehlivé aplikace s transakcemi na straně serveru, klientské aplikace co nejjednodušší Snaha : Návrh,

Více

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);

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); Programovací jazyk PHP doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Třídy a objekty Výjimky Webové aplikace

Více

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

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni Webové aplikace Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni Harmonogram Dopolední blok 9:00 12:30 Ing. Dostal Úvod, XHTML + CSS Ing. Brada,

Více

X33EJA Enterprise Java

X33EJA Enterprise Java X33EJA Enterprise Java Petr Šlechta Sun Microsystems petr.slechta@sun.com Petr Aubrecht CA (Computer Associates) petr.aubrecht@ca.com X33EJA (2+2) Cvičení Formou samostatné práce na projektu témata budou

Více

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

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 25. Otázka : Komponentní technologie - základní pojmy a principy, metody specifikace komponent. Obsah : 1. Základní pojmy 1.1 Komponenta Komponenta

Více

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě PHP PHP původně znamenalo Personal Home Page a vzniklo v roce 1996, od té doby prošlo velkými změnami a nyní tato zkratka znamená Hypertext Preprocessor. PHP je skriptovací programovací jazyk, určený především

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

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

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 18.4.2017 Webové technologie RIA, SPA, AngularJS - šablony a controllery, služby $scope a $http strana 2 RIA - Rich Internet Application Chová se podobně jako desktopová

Více

1 Webový server, instalace PHP a MySQL 13

1 Webový server, instalace PHP a MySQL 13 Úvod 11 1 Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

JAVA. Webové aplikace Servlety, JSP

JAVA. Webové aplikace Servlety, JSP JAVA Webové aplikace Servlety, JSP Přehled většina dnešních webových stránek je dynamická technologie a jazyky CGI, PHP, ASP,... zatím neřešíme dyn. chování na straně klienta (AJAX,...) základní Java technologie

Více

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/ UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok

Více

Vstupní požadavky, doporučení a metodické pokyny

Vstupní požadavky, doporučení a metodické pokyny Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem

Více

Tvorba informačních systémů

Tvorba informačních systémů Tvorba informačních systémů Michal Krátký, Miroslav Beneš Katedra informatiky VŠB Technická univerzita Ostrava Tvorba informačních systémů, 2007/2008 c 2006-2008 Michal Krátký, Miroslav Beneš Tvorba informačních

Více

MBI - technologická realizace modelu

MBI - technologická realizace modelu MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,

Více

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

PA165: Úvod do Java EE. Petr Adámek PA165: Úvod do Java EE Petr Adámek Obsah přednášky Organizace předmětu Formy výuky Hodnocení Osnova Java EE aplikace Architektury Java EE aplikací Technologie Java EE Základní koncepty PA165: Úvod do Java

Více

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

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU Tvorba podnikových aplikací v jazyce JAVA Josef Pavlíček KII PEF CZU J2EE Jedná se o přístup: sadu pravidel, technologií, metod, doporučení jak provádět design, vývoj, nasazení a provozování vícevrstvých

Více

Olga Rudikova 2. ročník APIN

Olga Rudikova 2. ročník APIN Olga Rudikova 2. ročník APIN Redakční (publikační) systém neboli CMS - content management system (systém pro správu obsahu) je software zajišťující správu dokumentů, nejčastěji webového obsahu. (webová

Více

KIV/PIA 2013 Jan Tichava

KIV/PIA 2013 Jan Tichava KIV/PIA 2013 Jan Tichava Java EE JSF, PrimeFaces Spring JPA, EclipseLink Java Platform, Enterprise Edition Persistence Zobrazovací vrstva Interakce aplikací Deployment Java Persistence API Enterprise

Více

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

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 24. Otázka : Implementační fáze. Postupy při specifikaci organizace softwarových komponent pomocí UML. Mapování modelů na struktury programovacího

Více

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

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER váš partner na cestě od dat k informacím globtech spol. s r.o. karlovo náměstí 17 c, praha 2 tel.: +420 221 986 390 info@globtech.cz

Více

INFORMAČNÍ SYSTÉMY NA WEBU

INFORMAČNÍ SYSTÉMY NA WEBU INFORMAČNÍ SYSTÉMY NA WEBU Webový informační systém je systém navržený pro provoz v podmínkách Internetu/intranetu, tzn. přístup na takový systém je realizován přes internetový prohlížeč. Použití internetového

Více

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

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Web Jaroslav Nečas Obsah přednášky Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework Co to je web HTTP protokol bezstavový GET POST HEAD Cookies Session HTTPS

Více

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

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads Postup Úvodem Můj úkol při tomto projektu byl vytvořit model pro data, dle návrhového vzoru MVC. Jelikož v poslední době pracuji spíše s návrhovým vzorem HMVC (http://en.wikipedia.org/wiki/hmvc) ve frameworku

Více

IS pro podporu BOZP na FIT ČVUT

IS pro podporu BOZP na FIT ČVUT IS pro podporu BOZP na FIT ČVUT Závěrečná zpráva pro 2. iteraci 21. dubna 2011 Zadavatel: Ing. Jiří Chludil Řešitelský tým: Jiří Kopecký Jan Kratochvíl Milan Matějček Štefan Pinďák Kristýna Streitová Úvod

Více

1. Webový server, instalace PHP a MySQL 13

1. Webový server, instalace PHP a MySQL 13 Úvod 11 1. Webový server, instalace PHP a MySQL 13 Princip funkce webové aplikace 13 PHP 14 Principy tvorby a správy webového serveru a vývojářského počítače 14 Co je nezbytné k instalaci místního vývojářského

Více

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

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV) Příprava studijního programu Informatika je podporována projektem financovaným z Evropského sociálního fondu a rozpočtu hlavního města Prahy. Praha & EU: Investujeme do vaší budoucnosti Enterprise Java

Více

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita Aktivní webové stránky Úvod: - statické webové stránky: pevně vytvořený kód HTML uložený na serveru, ke kterému se přistupuje obvykle pomocí protokolu HTTP (HTTPS - zabezpečený). Je možno používat i různé

Více

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette

PHP framework Nette. Kapitola 1. 1.1 Úvod. 1.2 Architektura Nette Kapitola 1 PHP framework Nette 1.1 Úvod Zkratka PHP (z anglického PHP: Hypertext Preprocessor) označuje populární skriptovací jazyk primárně navržený pro vývoj webových aplikací. Jeho oblíbenost vyplývá

Více

Tvorba webu. Úvod a základní principy. Martin Urza

Tvorba webu. Úvod a základní principy. Martin Urza Tvorba webu Úvod a základní principy Martin Urza World Wide Web (WWW) World Wide Web (doslova celosvětová pavučina ) je označení pro mnoho dokumentů rozmístěných na různých serverech po celém světě. Tyto

Více

PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB

PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB ÚTVAR ROZVOJE HLAVNÍHO MĚSTA PRAHY PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB Ústav rozvoje hlavního města Prahy publikuje prostřednictvím ArcGIS Serveru mnohé webové mapové služby (v souřadnicovém

Více

Databázové aplikace pro internetové prostředí. 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Databázové aplikace pro internetové prostředí. 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku Databázové aplikace pro internetové prostředí 01 - PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku Projekt: Inovace výuky prostřednictvím ICT Registrační číslo: CZ.1.07/1.5.00/34.250

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

Software602 Form Designer

Software602 Form Designer Software602 Form Designer Javascriptový vyhodnocovací mechanismus výrazů Aktualizováno: 17. 3. 2017 Software602 a.s. Hornokrčská 15 140 00 Praha 4 tel: 222 011 602 web: www.602.cz e-mail: info@602.cz ID

Více

HTML Hypertext Markup Language

HTML Hypertext Markup Language HTML Hypertext Markup Language je jazyk určený na publikování a distribuci dokumentů na Webu velmi jednoduchý jazyk používá ho mnoho uživatelů má výkonné prostředky (příkazy) k formátování dokumentů (různé

Více

Přizpůsobení JSTL pro Google App Engine Datastore

Přizpůsobení JSTL pro Google App Engine Datastore Přizpůsobení JSTL pro Google App Engine Datastore Vítězslav Novák Katedra Aplikovaná informatika Ekonomická fakulta, VŠB-TU Ostrava 1 Google App Engine Google App Engine je zástupcem distribučního modelu

Více

Programátorská příručka

Programátorská příručka KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

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

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links links Apache Struts Article with examples JSTL a EL (into JSP) MVC, webové aplikace, JSP Bezpečnost ve webových

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

3 MOŽNÉ PŘÍSTUPY K TVORBĚ APLIKACÍ NAD SVG DOKUMENTY

3 MOŽNÉ PŘÍSTUPY K TVORBĚ APLIKACÍ NAD SVG DOKUMENTY 3 MOŽNÉ PŘÍSTUPY K TVORBĚ APLIKACÍ NAD SVG DOKUMENTY 3.1 Tenký a tlustý klient Klientské aplikace nad XML dokumenty v prostředí internetu se dají rozdělit na dvě skupiny: tenký klient a tlustý klient.

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

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

Stručný úvod pro programátory. Michal Kuchta Stručný úvod pro programátory Michal Kuchta Alespoň základní znalost PHP Základy klasického OOP a jeho implementaci v PHP Schopnost oprostit se od konvenčního tvoření stránek 2 Framework pro snazší vývoj

Více

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11 Obsah Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10 Kapitola 1 Než začneme 11 Dynamické vs. statické stránky 11 Co je a k čemu slouží PHP 12 Instalace potřebného softwarového

Více

PHP tutoriál (základy PHP snadno a rychle)

PHP tutoriál (základy PHP snadno a rychle) PHP tutoriál (základy PHP snadno a rychle) Druhá, vylepšená offline verze. Připravil Štěpán Mátl, http://khamos.wz.cz Chceš se naučit základy PHP? V tom případě si prostuduj tento rychlý průvodce. Nejdříve

Více

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13 Obsah Úvod 11 Platforma.NET 11.NET Framework 11 Visual Basic.NET 12 1 Základní principy a syntaxe 13 Typový systém 13 Hodnotové typy 13 Struktury 15 Výčtové typy 15 Referenční typy 15 Konstanty 16 Deklarace

Více

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

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 13.5.2015 Webové technologie Připravil: Ing. Jiří Lýsek, Ph.D. Verze: 13.5.2015 Webové technologie RIA, JSON, REST, AngularJS strana 2 RIA - rich internet application chová se podobně jako desktopová aplikace velké množství logiky

Více

M4 PDF rozšíření. Modul pro PrestaShop. http://www.presta-addons.com

M4 PDF rozšíření. Modul pro PrestaShop. http://www.presta-addons.com M4 PDF rozšíření Modul pro PrestaShop http://www.presta-addons.com Obsah Úvod... 2 Vlastnosti... 2 Jak modul funguje... 2 Zdroje dat... 3 Šablony... 4 A. Označení šablon... 4 B. Funkce Smarty... 5 C. Definice

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

NSWI096 - INTERNET JavaScript

NSWI096 - INTERNET JavaScript NSWI096 - INTERNET JavaScript Mgr. Petr Lasák JAVASCRIPT JAK SE DNES POUŽÍVÁ Skriptovací (interpretovaný) jazyk Umožňuje interaktivitu Použití: Dialogy Kontrola dat ve formulářích Změny v (X)HTML dokumentu

Více

Z. Kotala, P. Toman: Java ( Obsah )

Z. Kotala, P. Toman: Java ( Obsah ) Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například

Více

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE WEBOWÉ STRÁNKY TŘÍD KAMIL POPELKA ZÁVĚREČNÁ MATURITNÍ PRÁCE BRNO 2011 Prohlášení Prohlašuji, že maturitní práce je mým původním autorským dílem, které

Více

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01 Anotace sady: Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01 Autor: Blanka Sadovská Klíčová slova: Algoritmus, proměnná, diagram Stupeň a typ vzdělávání: gymnaziální vzdělávání, 3. ročník

Více

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

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services 13. Webové služby. K čemu slouží? Popis a vyhledávání služeb. Co je a k čemu slouží orchestrace a choreografie služeb. Technologie pro implementaci služeb 1. Webové služby. K čemu slouží? Definice WS -

Více

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

ŠKODA Portal Platform

ŠKODA Portal Platform ŠKODA Portal Platform Struktura LESS stylů Jan Obrátil Účel dokumentu Účelem tohoto dokumentu je vysvětlit strukturu stylů v Portálové Platformě tak, aby bylo možné je správně použít a rozšířit je pro

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

Obrázek 6.14: Prohlížec nápovedy

Obrázek 6.14: Prohlížec nápovedy JavaHelp Základní popis systému JavaHelp Soucástí vetšiny interaktivních aplikací je nápoveda (help) aplikace v Jave nejsou výjimkou. Systém JavaHelp je napsaný v Jave a je urcený pro aplikace vytvárené

Více

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA Common Object Request Broker Architecture FJFI ČVUT 9. 12. 2010 Osnova 1 2 3 4 5 Standard umožňující propojení aplikací psaných v různých jazycích a běžících na různých strojích a architekturách. Definuje

Více

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. 13 Rozhraní, výjimky Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny

Více

Použití inteligentních značek s informačními službami

Použití inteligentních značek s informačními službami Použití inteligentních značek s informačními službami Jan Fransen Podokno úloh Zdroje informací v aplikacích sady Microsoft Office 2003 umožňuje uživatelům snadno prohledávat množství integrovaných či

Více

Základy objektové orientace I. Únor 2010

Základy objektové orientace I. Únor 2010 Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných

Více

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty Pokročilé techniky tvorby sestav v Caché ZENové Reporty Úvodem Jednoduché sestavy Pokročilé sestavy Ladění Historie ZEN reporty sdílejí podobný princip definování obsahu jako ZENové stránky Byly uvedeny

Více

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti NetBeans platforma Aplikační programování v Javě (BI-APJ) - 7 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme

Více

Tvorba webových stránek

Tvorba webových stránek Tvorba webových stránek Kaskádové styly Úprava vzhledu webové stránky pomocí atributů má několik nevýhod a úskalí. Atributy nabízejí málo možností úprav. Obtížně se sjednocují změny na různých částech

Více

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

Tvorba informačních systémů na platformě J2EE Petr Hetmánek Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno Tvorba informačních systémů na platformě J2EE Petr Hetmánek (xhetman@fi.muni.cz) Masarykova Univerzita, Fakulta Informatiky, Botanická 68a, Brno Abstrakt Rostoucí dostupnost internetu vede ke vzniku stále

Více

Web Services na SOAP

Web Services na SOAP Web Services Používají HTTP Existují dvě varianty: Služby postavené na protokolu SOAP Java standard pro vytváření : JAX-WS RESTfull služby Java standard pro vytváření : JAX-RS Web Services na SOAP Žádost

Více

Úvod do tvorby internetových aplikací

Úvod do tvorby internetových aplikací CVT6 01a Úvod do tvorby internetových aplikací Osnova předmětu (X)HTML a tvorba webu pomocí přímého zápisu kódu Tvorba web designu a skládání stránek z kousků Skriptovací jazyky na webu Návrh software

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

Wonderware Information Server 4.0 Co je nového

Wonderware Information Server 4.0 Co je nového Wonderware Information Server 4.0 Co je nového Pavel Průša Pantek (CS) s.r.o. Strana 2 Úvod Wonderware Information Server je výrobní analytický a reportní informační portál pro publikaci výrobních dat

Více

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ ÚVOD Technologie elastické konformní transformace rastrových obrazů je realizována v rámci webové aplikace NKT. Tato webová aplikace provádí

Více

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

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek Snadný vývoj webových aplikací s Nette Lukáš Jelínek Proč framework? ušetří spoustu práce (implementace, úpravy) vývoj = co udělat, ne jak to udělat bezpečnost štábní kultura prostředky pro ladění podpora

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Webové rozhraní TELEFONNÍ STYK POD KONTROLOU NÁSTROJ PRO ŘÍZENÍ CHODU CALL CENTRA A ZPRACOVÁNÍ TELEFONNÍCH HOVORŮ. Funkcionalita

Webové rozhraní TELEFONNÍ STYK POD KONTROLOU NÁSTROJ PRO ŘÍZENÍ CHODU CALL CENTRA A ZPRACOVÁNÍ TELEFONNÍCH HOVORŮ. Funkcionalita TELEFONNÍ STYK POD KONTROLOU NÁSTROJ PRO ŘÍZENÍ CHODU CALL CENTRA A ZPRACOVÁNÍ TELEFONNÍCH HOVORŮ Webové rozhraní Webové rozhraní je určeno k ovládání a konfiguraci komponent SEVIO a k ovládání a konfiguraci

Více

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í

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í 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í HTML/XHTML kaskádové styly PHP spolupráce PHP s databázemi Technologie

Více

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc www.etnetera.cz 5.4.2012

2012 ET NETERA a.s. Wicket přehled technologie Martin Strejc www.etnetera.cz 5.4.2012 Wicket přehled technologie Martin Strejc www.etnetera.cz 5.4.2012 Osnova přednášky 1. Vznik Wicketu 2. Co Wicket umí a co neumí? 3. Účely užití výhody a nevýhody 4. Rozšiřitelnost Wicketu 5. Srovnání s

Více

KIV/PIA Semestrální práce

KIV/PIA Semestrální práce KIV/PIA Semestrální práce Diskuzní fórum Tomáš Časta(A10N0057P) casta@students.zcu.cz 1. Architektura aplikace 1.1 MVC Model-view-controller (MVC) je softwarová architektura, která rozděluje datový model

Více

KAPITOLA 10. Implementace mezinárodní podpory a lokalizace. V této kapitole:

KAPITOLA 10. Implementace mezinárodní podpory a lokalizace. V této kapitole: KAPITOLA 10 Implementace mezinárodní podpory a lokalizace V této kapitole: Řetězce ve zdrojovém kódu Internacionalizace nápovědy Internacionalizace ostatních zdrojů Administrace a příprava lokalizovaných

Více

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9.

Jazyk XSL XPath XPath XML. Jazyk XSL - rychlá transformace dokumentů. PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice. 9. Jazyk XSL - rychlá transformace dokumentů 9. prosince 2010 Osnova 1 Jazyk XSL Úvod Princip zpracování pomocí stylů Formátování dokumentu pomocí XSL FO Osnova 1 Jazyk XSL Úvod Princip zpracování pomocí

Více

Název Live prez Sear enta Maps

Název Live prez Sear enta Maps Vladimír Jarotek Název Live Search prezentace Maps Nadpis Obsah 1. Co je to Live Search Maps 2. API 3. Závěr 4. Literatura Nadpis 1 Co je to a co nabízí Live Search Maps Jedná se o projekt (službu) prohledávání

Více