Dynamické Generovaní Obsahu S Java Server Pages
Total Page:16
File Type:pdf, Size:1020Kb
MASARYKOVA UNIVERZITA F}w¡¢£¤¥¦§¨ AKULTA INFORMATIKY !"#$%&'()+,-./012345<yA| Dynamické generovaní obsahu s Java Server Pages BAKALÁRSKÁˇ PRÁCE Petr Lorenc Brno, podzim 2007 Prohlášení Prohlašuji, že tato bakaláˇrskápráce je mým p ˚uvodnímautorským dílem, které jsem vypra- coval samostatnˇe.Všechny zdroje, prameny a literaturu, které jsem pˇrivypracování použí- val nebo z nich ˇcerpal,v práci ˇrádnˇecituji s uvedením úplného odkazu na pˇríslušnýzdroj. Vedoucí práce: RNDr. Vlastislav Dohnal, Ph.D. ii Shrnutí Tato bakaláˇrskápráce provádí ˇctenáˇrevznikem webové aplikace. Ta je vystavˇenana plat- formˇeJava, konkrétnˇena technologiích JavaServlets a Java Server Pages. Umožˇnujedyna- mické generování obsahu uloženého v databázi MySQL. Architektura aplikace ctí návrhový vzor Model-Pohled-Rídícíˇ ˇcást.Model aplikace reprezentují JavaBean komponenty, pohled tvoˇríJSP stránky a ˇrídícíˇcástzastupují servlety. V prvních ˇctyˇrechkapitolách je probrána teorie užitá ve webové aplikaci spolu s vysvˇet- lením pojm ˚usouvisejících s danou problematikou. Pátá kapitola, spolu se zdrojovým kó- dem webové aplikace, tvoˇrínávod, demonstrující použití výše popsaných teoretických po- znatk ˚u,kvytvoˇreníwebové aplikace. Tato ukázková webová aplikace má ˇctyˇriverze. První je obdoba aplikace „Ahoj Svˇete!“, následující didakticky pˇridávajídalší funkˇcníprvky s tím, že poslední verze je již principiálnˇeplnohodnotnou webovou aplikací nabízející dynamické generování obsahu díky propojení s databází MySQL. Využívá se zde nástroj ˚utechnologie JSP nabízejících zefektivnˇenípráce pˇrivývoji webových stránek, jako napˇr.JSTL, Expression Language, JSP direktivy a akce. Vyústˇenímtohoto návodu je pak webová aplikace LogoArena.cz. Tato je, co do množ- ství zdrojového kódu, rozsáhlejší, nicménˇes pˇredešlouukázkovou aplikací naprosto rovno- cenná, bere-li se jako mˇeˇrítkoná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ˇríkladobrázky ˇcianimace. Spuštˇenítˇechto stránek se plánuje na druhou polovinu roku 2008. iii Klíˇcováslova Webová aplikace, Java, JSP, JavaServlets, MySQL, Dynamické generování obsahu webových stránek iv Obsah 1 Úvod ............................................. 1 2 JavaServlets ......................................... 2 2.1 Životní cyklus servletu ................................ 2 2.2 Sdílení informací ................................... 2 2.2.1 Rozsah platnosti application . 3 2.2.2 Rozsah platnosti session . 4 2.2.3 Rozsah platnosti request . 4 2.3 Volání dalších webových prostˇredk˚u ........................ 4 2.3.1 Vkládání webových prostˇredk˚u . 4 2.3.2 Pˇredáníˇrízenídalšímu webovému prostˇredku . 5 2.4 Filtrování požadavk ˚ua odpovˇedí .......................... 5 3 Java Server Pages ...................................... 6 3.1 Struktura JSP stránky ................................. 6 3.2 Skriptovací elementy ................................. 7 3.2.1 Deklarace . 7 3.2.2 Výrazy . 7 3.2.3 Scriptlety . 7 3.3 Direktivy JSP ...................................... 7 3.3.1 Direktiva page ................................ 8 3.3.2 Direktiva include .............................. 8 3.3.3 Direktiva taglib .............................. 9 3.3.3.1 Uživatelské znaˇcky . 9 3.4 Akce .......................................... 11 3.4.1 JavaBeans . 11 3.5 Unified Expression Language ............................ 13 3.5.1 Bezprostˇrednívyhodnocování výraz ˚u. 14 3.5.2 Odložené vyhodnocování výraz ˚u . 14 3.6 JSP Standard Tag Library .............................. 14 3.6.1 knihovna znaˇcek Core ............................ 15 3.6.2 knihovna znaˇcek XML ............................ 16 3.6.3 knihovna znaˇcek Internationalization ................... 16 3.6.4 knihovna znaˇcek SQL ............................ 16 3.6.5 knihovna znaˇcek Functions ......................... 16 4 Webové aplikace ...................................... 17 4.1 Vlastnosti webové aplikace ............................. 17 4.2 Architektura aplikace ................................. 18 4.2.1 Model 1 . 18 4.2.2 Model 2 . 18 4.3 Internacionalizace ................................... 20 4.4 Webové rámce ..................................... 20 v 4.4.1 Rámce orientované na zpracování HTTP požadavku . 21 4.4.2 Rámce orientované na vizuální komponenty . 21 5 Ukázková webová aplikace ................................ 22 5.1 Návrh Model-View-Controller aplikace ...................... 22 5.1.1 Model . 22 5.1.2 Pohled (View) . 23 5.1.3 Rídícíˇ ˇcást(Controller) . 25 5.2 JSTL a filtrování požadavk ˚u ............................. 25 5.2.1 Internacionalizace v JSP . 25 5.2.2 Internacionalizace v servletech . 27 5.2.3 Dynamické generování obsahu pomocí JSTL . 27 5.2.4 Filtrování požadavk ˚u . 28 5.3 Práce s databází .................................... 29 5.3.1 Vytvoˇrenídatabáze . 30 5.3.2 Rozšíˇrenímodelu aplikace . 30 5.3.3 Rízeníˇ databázových požadavk ˚u. 31 5.4 Uživatelské znaˇcky .................................. 32 5.4.1 Rozšíˇrenímodelu aplikace . 34 6 Webová aplikace LogoArena.cz .............................. 35 6.1 Úˇcela charakteristika projektu ........................... 35 6.2 Fáze realizace projektu ................................ 35 6.3 Architektura aplikace ................................. 36 6.3.1 Model . 36 6.3.2 Pohled (View) . 37 6.3.3 Rídícíˇ ˇcást(Controller) . 37 6.4 Propojení se SMS platebním systémem ....................... 37 7 Závˇer ............................................. 39 Literatura . 41 Rejstˇrík . 42 A PˇriloženéCD - obsah a zprovoznˇeníaplikací ..................... 43 vi Kapitola 1 Úvod Cílem práce je seznámit ˇctenáˇres technologií JSP, demonstrovat nˇekterépostupy pˇritvorbˇe webové aplikace a ukázat jejich použití. Není možné v rozsahu bakaláˇrsképráce komplexnˇe popsat JSP technologii, tudíž je tato práce pojata tak, aby pˇredstavilavybrané nástroje do té míry, do jaké je tˇrebajim rozumˇet,aby byl s nimi ˇctenáˇrschopen vybudovat analogickou webovou aplikaci, jež tvoˇrípraktickou ˇcásttéto bakaláˇrsképráce. M ˚užemese setkat s ˇradousoftwarových nástroj ˚u(napˇr.JSF, Struts, Stripes a další. ), které vývoj aplikcí v Javˇeusnadˇnují.Nicménˇevývoj nových technologií jde vysokým tempem kupˇredua objevují se nové nástroje pˇrekonávajícíty minulé. Proto není cílem této práce urˇcittu pravou a „nejlepší“ cestu jak tvoˇritwebové aplikace v Javˇe,nýbrž popsat základní principy návrhu aplikace, jejichž znalost lze s úspˇechemvyužít i pro pochopení a používání nadstavbových technologií. Praktickou ˇcásttéto bakaláˇrsképráce tvoˇríwebová aplikace, která bude v praxi použí- vána jako internetový obchod se software pro mobilní telefony. Aplikace respektuje návr- hový vzor Model-Pohled-Rídícíˇ ˇcást(ˇcastose lze setkat s anglickým ekvivalentem Model- View-Controller). Skládá se z nˇekolikaˇrídícíchservlet ˚u,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 data- báze MySQL. Webová aplikace bude umístˇenana server dostupný pod URL http://logoarena.cz. Ob- sah, který má být pˇredmˇetemobchodování, podléhá autorským práv ˚umr ˚uznýchprávních subjekt ˚u.Internetový obchod m ˚užetedy být v plné míˇrespuštˇenaž po vyˇrešenítˇechtopráv- ních záležitostí. Samotné doruˇcenísoftwaru na mobilní telefon zajistí firma zabývající se touto problematikou, tedy takzvanými mikroplatbami, kdy platba je zahrnuta v cenˇetex- tové zprávy, jíž je požadovaný objekt objednáván. Poslední krok pro zkompletování celé aplikace je provázání již funkˇcníhoinformaˇcníhosystému a této mikroplatební služby. Tato fáze nespadá do rozsahu zadání bakaláˇrsképráce. Nˇekteréz mikroplatebních spoleˇcností však (za urˇcitýpˇríplatek)nabízí vlastní zajištˇenítohoto propojení. Více informací o této pro- blematice nabízí kapitola 6.4. 1 Kapitola 2 JavaServlets JavaServlets jsou platformovˇenezávislé moduly pro obsluhu protokolu HTTP na stranˇeser- veru. Z technického hlediska je servletem každá java tˇrída,která implementuje rozhraní javax.servlet.Servlet. Servlety tvoˇrízákladní stavební jednotky, na kterých jsou vy- stavˇenydalší vrstvy webových java aplikací. Jedná se o nízkoúrovˇnovýnástroj, s jehož pomocí lze obsloužit jakýkoliv HTTP požadavek a vygenerovat libovolnou odpovˇed’. Pro pˇrímégenerování HTML stránek ,tedy zajištˇeníprezentaˇcnívrstvy aplikace, se však jedná o nástroj dosti tˇežkopádný.Proto jsou k dispozici nadstavby, pˇredevšímJSP. Servlety však své uplatnˇenínachází ve webových aplikacích v roli ˇrídícíhoˇclenu. 2.1 Životní cyklus servletu Životní cyklus servletu se dá popsat následujícími tezemi. 1. Web kontejner nahraje tˇrídusevletu. Web kontejnerem je mínˇenwebový server, který podporuje vykonávání servlet ˚u(napˇr.Tomcat, JBoss, GlassFish aj.). 2. Kontejner volá metodu init() . Tato metoda inicializuje servlet a je volána dˇríve, než m ˚užebýt obsloužen jakýkoliv pˇríchozípožadavek. V životním cyklu servletu je metoda init() volána pouze jednou. 3. Po inicializaci m ˚užeservlet obsluhovat klientské požadavky. Každý požadavek je obsluhován v oddˇelenémvláknˇe.Pro každý požadavek volá kontejner metodu service() . 4. Pokud kontejner potˇrebujeodstranit servlet, zavolá metodu destroy() . Tato me- toda je stejnˇejako init() volána bˇehemživotního cyklu servletu pouze jednou. 2.2 Sdílení informací Webové komponenty, jakož i vˇetšinaobjekt ˚u,obvykle pˇriplnˇenísvých funkcí navzájem spo- lupracují. Pod výrazem „webová komponenta“ ˇci„webovýprostˇredek“je, v tomto pˇrípadˇe, myšlen bud’ servlet,