Szerver oldali Java programozás 2007-08/II. 1. óra. Elemkönyvtárak. Elemkönyvtárak használata Saját elemkönyvtár készítése. szenasi.sandor@nik.bmf.



Hasonló dokumentumok
JavaServer Pages JSTL, EL

JSP standard elemkönyvtár JSTL. alap elemkönyvtár (core) nemzetköziesítés (internationalization) Saját elemkönyvtárak (Custom Tags)

A saját elemek. JSP standard elemkönyvtár JSTL alap elemkönyvtár (core) nemzetköziesítés (internationalization) Saját elemkönyvtárak (Custom Tags)

2010. őszi félév. A WEB programozása -JSP3 dr.gál Tibor. // Kötelező csomagbeli elhelyezés package customtags;

Szervlet-JSP együttműködés

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

JavaServer Pages programozóknak

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

A Java Server Pages technológia. JSP és JSP elemkönyvtárak, JSTL alapok

Java servlet technológia 1 / 40

Java servlet technológia. Web alkalmazások. Servlet-et használni érdemes, ha. JSP-t használni érdemes, ha. Servlet-JSP kombináció (MVC) szükséges, ha

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Java grafikai lehetőségek

Web-fejlesztés NGM_IN002_1

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Már megismert fogalmak áttekintése

Enterprise JavaBeans 1.4 platform (EJB 2.0)

A JavaServer Pages (JSP)

A WEB programozása - JSP1 dr.gál Tibor őszi félév

Interfészek. PPT 2007/2008 tavasz.

OOP: Java 8.Gy: Abstract osztályok, interfészek

AWK programozás, minták, vezérlési szerkezetek

A JavaServer Pages (JSP)

JEE tutorial. Zsíros Levente, 2012

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

AWK programozás Bevezetés

Programozás C és C++ -ban

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

Számítógépes Hálózatok. 5. gyakorlat

Tájékoztató. Használható segédeszköz: -

Készítette: Nagy Tibor István

Programozás C++ -ban

Osztályok. 4. gyakorlat

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

Java programozási nyelv /ősz 9. óra. Java Server Pages. JSP technika alapjai

Programozás módszertan p.1/46

Komputeralgebra Rendszerek

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

BME IK 2 JAVA SERVER FACES UML-1 20/11/2013. Apache Struts. Spring MVC. Java Server Faces. Google Web Toolkit. Képességek

AWK programozás, minták, vezérlési szerkezetek

A JavaServer Pages (JSP)

3. Osztályok II. Programozás II

Java szervlet technológia

Web-fejlesztés NGM_IN002_1

Webes alkalmazások fejlesztése

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

MicroSigner Közvetítő Szerver fejlesztői dokumentáció

Komputeralgebra rendszerek

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Windows rendszeradminisztráció és Microsoft szerveralkalmazások támogatása. 3. óra. Kocsis Gergely, Kelenföldi Szilárd

Komputeralgebra rendszerek

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Java programozási nyelv 5. rész Osztályok III.

Az XML Bevezetés. Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Utolsó módosítás:

A JSP életciklusa Szkript elemek Dinamikus tartalom létrehozása Kifejezés nyelv Tartalom újrafelhasználása Vezérlés átadása Visszatekintés

JSP technológia. A JSP elemek kétféle szintaxissal használhatók: A JSP

QBE Édes Otthon lakásbiztosítás tarifáló webservice. Fejlesztői dokumentáció 1.0.2

Objektumelvű programozás

JSP (Java Server Pages) technológia

Orvos Bejelentő Program (OBP) rekordkép 2. verzió XML formátum

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Vizuális, eseményvezérelt programozás XI.

Programozási nyelvek Java

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Bevezetés a Programozásba II 4. előadás. Adattípusok hordozhatósága

Java programozási nyelv 4. rész Osztályok II.

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

A JSP életciklusa Szkript elemek Dinamikus tartalom létrehozása Kifejezés nyelv Tartalom újrafelhasználása Vezérlés átadása Visszatekintés

JSP életciklusa Szkript elemek, implicit objektumok, bean-ek, EL include, (forward) Visszatekintés MVC

SZOFTVERES SZEMLÉLTETÉS A MESTERSÉGES INTELLIGENCIA OKTATÁSÁBAN _ Jeszenszky Péter Debreceni Egyetem, Informatikai Kar jeszenszky.peter@inf.unideb.

2. rész: JSP-k és szervletek készítése. Bakay Árpád NETvisor kft (30)

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

Virtuális függvények (late binding)

Web-technológia PHP-vel

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

Bevezető. Servlet alapgondolatok

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

ELTE SAP Excellence Center Oktatóanyag 1

Adatmodellezés. 1. Fogalmi modell

A Java EE 5 plattform

BASH script programozás II. Vezérlési szerkezetek

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Java technológiák - ANTAL Margit. komponensek. A HTTP protokoll. Webkonténerek és szervletek. Egyszerű HTTP. ANTAL Margit.

Országos Területrendezési Terv térképi mel ékleteinek WMS szolgáltatással történő elérése, Quantum GIS program alkalmazásával Útmutató 2010.

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r

Programozás C++ -ban 2007/7

Pénzügyi algoritmusok

500. AA Megoldó Alfréd AA 500.

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté

Objektumorientált programozás C# nyelven

Dokumentumformátumok Jelölő nyelvek XML XML. Sass Bálint Bevezetés a nyelvtechnológiába 2. gyakorlat szeptember 20.

Átírás:

Szerver oldali Java programozás 2007-08/II. 1. óra Elemkönyvtárak Elemkönyvtárak használata Saját elemkönyvtár készítése szenasi.sandor@nik.bmf.hu

Adatbázisok elérése Témakörök Elemkönyvtárak használata Egyszerű elemek készítése Törzset tartalmazó elemek 2

Elemkönyvtárak JSP oldalakban lehetőség van saját akció-elemek (tagek) készítésére. Ezek az elemek valójában programkódot reprezentálnak, ezzel elrejthetik a weboldal készítője elől a tényleges implementációt. Mivel egy JSP oldalban számos új akció-elem definiálására szükség lehet, ezeket célszerű elemkönyvtárakba rendezni (custom tag library) Így a webalkalmazásokban ténylegesen elválhat egymástól a kód és a prezentáció (így ezeket készítheti két különböző személy) Elemkönyvtárak használata: szükséges osztályok elhelyezése (WEB-INF/classes) Tag Library Descriptor állomány elhelyezése a (WEB-INF) web.xml állomány módosítása (amennyiben szükséges) JSP oldal fejlécében TagLib azonosítása, prefix hozzárendelése saját elemek használata az oldalban 3

Tag Library Descriptor TagLib az elemkönyvtár általános jellemzői tlib-version könyvtár verziószáma jsp-version szükséges JSP verziószám short-name rövid név description elemkönyvtár leírása uri egy nyilvános URI, ami egyértelműen azonosítja a könyvtárat Tag elemenként a részletes jellemzők name a tag neve, ezzel lehet majd rá hivatkozni a JSP oldalon tag-class az elemkezelő Java osztály neve tei-class kiegészítő információkat tartalmazó osztály body-content elem törzse: tagdependent, JSP, empty description rövid leírás variable scriptváltozók megadása (nem tárgyaljuk) attribute az elem egy attribútumának leírása name megnevezése required kötelező-e megadni: true, false, yes, no type attribútum típusa description rövid leírás 4

Tag Library Descriptor példa <?xml version="1.0" encoding="utf-8"?> <taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"> <tlib-version>1.0</tlib-version> <short-name>arfolyam</short-name> <uri>/web-inf/tlds/arfolyam</uri> <tag> <name>arfolyam</name> <tag-class>teszt.atvalto.arfolyam</tag-class> <body-content>scriptless</body-content> <attribute> <name>valuta</name> <type>java.lang.string</type> <rtexprvalue>true</rtexprvalue> </attribute> </tag> Arfolyam.tld állomány 5

web.xml állomány módosítása A web.xml állomány minden használni kívánt elemkönyvtárról tárolja az alábbi struktúrát: taglib egy új elemkönyvtár hozzáadása taglib-uri az elemkönyvtár azonosítója taglib-location az elemkönyvtárt leíró állomány pontos helye Egy példa: <?xml version="1.0" encoding="utf-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmln... <taglib> <tablib-uri>/web-inf/tlds/arfolyam</taglib-uri> <taglib-location>/web-inf/tlds/arfolyam</taglib-location> </taglib>... </web-app> WEB-INF/tld-be helyett taglibek esetén elhagyható (JSP2.0) 6

Elemkönyvtár használata JSP oldalban Minden elemkönyvtár használat előtt a JSP oldalon azonosítani kell az elemkönyvtárat az URI segítéségével, illetve egy (az oldalon belül) egyedi prefixet kell hozzárendelni Például: <%@ taglib prefix="arfolyam" uri="/web-inf/tlds/arfolyam" %> A későbbiekben az elemkönyvtárban található saját akció elemek a <prefix:akciónév> módon elérhetők Például: <arfolyam:atvaltas osszeg="1000" valuta="eur"> Átváltás után visszajár: <%= atvaltottosszeg %> <br/> </arfolyam:mindenrevalto arfolyam:mindenrevalto> 7

Adatbázisok elérése Témakörök Elemkönyvtárak használata Egyszerű elemek készítése Törzset tartalmazó elemek 8

Elemkezelő hierarchia A hierarchia alapvető osztályait a javax.servlet.jsp.tagext csomag tartalmazza Tag interfész törzs nélküli (vagy nem feldolgozandó törzset tartalmazó) elem megvalósításához tartalmazza a saját tag-ek alapvető metódusait IterationTag interfész a Tag leszármazottja olyan elem, amelyik a törzsében lévő kódot többször is végrehajthatja (de a kód értelmezését nem vállalja, így lehet ott akár scriptlet is) segítő osztály: TagSupport BodyTag interfész az IterationTag leszármazottja a törzsét önmaga dolgozza fel segítő osztály: BodyTagSupport 9

Tag interfész megvalósítása Külső hivatkozások kezelése void setparent(tag t) A JSP oldal hívja meg a tag létrehozásakor, ezzel van lehetőség a tag szülőjének referenciáját eltárolni Tag getparent() A fenti objektum lekérdezése void setpagecontext(pagecontext pc) A PageContext objektum eltárolása. Ezen keresztül lehet hozzáférni a kérés/környezet további adataihoz saját tulajdonságok Tag életciklusa objektum létrehozása tulajdonságok beállítása dostarttag() metódus doendtag() metódus release() metódus 10

Tag interfész megvalósítása int dostarttag() throws JspException ez a metódus hívódik meg a nyitó tag feldolgozásakor (garantáltan a setparent és a setpagecontext hívása után) lehetséges visszatérési értékei: Tag.EVAL_BODY_INCLUDE a törzset fel kell dolgozni Tag.SKIP_BODY a törzset nem kell feldolgozni BodyTag.EVAL_BODY_BUFFERED lásd később int doendtag() throws JspException ez a metódus hívódik meg a záró tag feldolgozásakor lehetséges visszatérési értékei: Tag.EVAL_PAGE az oldal feldolgozása folytatódhat Tag.SKIP_PAGE az oldal további részét nem kell feldolgozni A SKIP_PAGE nem az egész kérést fejezi be, csak a megadott JSP oldal feldolgozását (lehet, hogy pl. include hívás volt) void release() a tag felszabadításakor hívódik meg 11

IterationTag interfész megvalósítása Működése hasonló a Tag interfésznél látotthoz, annyi különbséggel, hogy lehetőséget ad a törzs többszöri feldolgozására is Ehhez kiegészíti a Tag által definiált interfészt egy új metódussal, amely minden törzsfeldolgozás után lefut, és lehetőséget nyújt a továbblépésre, illetve az újboli feldolgozásra int doafterbody() throws JspException minden törzsfeldolgozás után lefut visszatérési értéke lehet: BodyTag.EVAL_BODY_TAG az elem törzsét újból fel kell dolgozni Tag.SKIP_BODY az elem törzsét nem kell többször feldolgozni, a JSP oldal feldolgozása továbblép A módosult életciklus az ábrán 12

Script változók használata Az IterationTag interfész használatakor gyakran szükség van arra, hogy a többször megismételt törzsben bizonyos helyen más-más kód jelenjen meg Ennek talán a legjobban használható megvalósítása, ha a törzs belsejében tudnánk olyan változókra hivatkozni, amelyeknek az IterationTag metódusaiban adunk értéket Egy ilyen script változó létrehozásának lépései: Tag elemen belül Variable elem létrehozása az alábbiakkal: name-given a létrehozandó script változó neve name-from-attribute ha a változó neve egy attribútum értéke variable-class a változó típusa (alapértelmezett a String) declare kell-e a változót deklarálni scope változó hatóköre (NESTED, AT_BEGIN, AT_END) description változó rövid leírása IterationTag osztályon belül értékadás az alábbi formában: pagecontext.setattribute(név, érték, PageContext.PAGE_SCOPE); JSP oldalban változó értékére hivatkozás a megszokott módon: <= scriptváltozóneve > 13

Adatbázisok elérése Témakörök Elemkönyvtárak használata Egyszerű elemek készítése Törzset tartalmazó elemek 14

BodyTag interfész megvalósítása int dostarttag() throws JspException visszatérési értéke lehet EVAL_BODY_TAG is ebben az esetben, a JSP oldal a törzs végrehajtása előtt azt elhelyezi egy BodyContent típusú objektumban (ez a JSPWriter leszármazottja) void setbodycontent(bodycontent b) a fent említett objektumot ezen a metóduson keresztül kapja meg a saját akcióelem, itt célszerű eltárolni void doinitbody() throws JspException a setbodycontent hívása után, még a törzs feldolgozása előtt hívodik meg ha szükséges módosíthatja a törzset void doafterbody() throws JspException int doendtag() throws JspException az eddig megismerteknek megfelelően használhatók 15

Nem tárgyalt témakörök Egymásbaágyazott elemek lehetőségei minden tag az inicializáláskor megkapja az őt tartalmazó szülő referenciáját, ezen keresztül fel lehet térképezni a teljes oldal szerkezetét az egyes elemek szkriptváltozókon keresztül is kommunikálhatnak egymással Elemkönyvtárak validálása lehetőség van a tag-ek adatait ellenőrző osztályok létrehozására TagExtraInfo osztály metódusai TagLibraryValidator Egyéb osztályok SimpleTag SimpleTagSupport stb. Konkrét megvalósítások JSF stb. 16

http://java.sun.com/javaee/5/docs/api/ 17