JSP (Java Server Pages) technológia



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

A JSP életciklusa Szkript elemek Dinamikus tartalom létrehozása Kifejezés nyelv Tartalom újrafelhasználása Vezérlés átadása Visszatekinté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 életciklusa Szkript elemek, implicit objektumok, bean-ek, EL include, (forward) Visszatekintés MVC

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

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

A JavaServer Pages (JSP)

A JavaServer Pages (JSP)

A JavaServer Pages (JSP)

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

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

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

Web-fejlesztés NGM_IN002_1

Java szervlet technológia

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

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Java Servlet technológia

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

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

JavaServer Pages programozóknak

JAVA webes alkalmazások

Bevezető. Servlet alapgondolatok

Osztályok. 4. gyakorlat

Java Web technológiák

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

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

Java II. I A Java programozási nyelv alapelemei

Szerver oldali Java programozás /II. 1. óra. Elemkönyvtárak. Elemkönyvtárak használata Saját elemkönyvtár készítése.

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.

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet

és az instanceof operátor

Java II. I A Java programozási nyelv alapelemei

Bevezetés a Python programozási nyelvbe

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

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

JEE tutorial. Zsíros Levente, 2012

JavaServer Pages (JSP) (folytatás)

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

OOP #14 (referencia-elv)

Struts2 keretrendszer

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Programozási nyelvek II. JAVA

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Programozási nyelvek Java

MVC desktop alkalmazás esetén. MVC Model-View-Controller. eredete: Model View Controller (MVC) elv Java EE Java alapú Web alkalmazások

Bevezetés Működési elv AJAX keretrendszerek AJAX

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

A Java EE 5 plattform

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Bevezetés J2EE komponensek Java2EE API-k Web alkalmazások Dokumentáció Fejlesztői környezet. JAVA technológiák - bevezető

A JavaScript főbb tulajdonságai

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

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

Programozás C++ -ban 2007/7

8. gyakorlat Pointerek, dinamikus memóriakezelés

Osztott rendszerek, Java EE. Általános bevezető

SZAKDOLGOZAT. Szegedi László

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

JavaServer Pages JSTL, EL

Üdvözli Önöket A PGY3 tantárgy! Bakay Árpád dr. NETvisor kft (30) arpad.bakay@netvisor.hu

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

Web-technológia PHP-vel

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Pénzügyi algoritmusok

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

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

Objektumorientált programozás C# nyelven

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Interfészek. PPT 2007/2008 tavasz.

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

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

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

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

A C programozási nyelv I. Bevezetés

Komponens modellek. 3. Előadás (első fele)

Java programozási nyelv 6. rész Java a gyakorlatban

Élő webes alkalmazások rendszerfelügyelete cím- és tartalomteszteléssel

Készítette: Nagy Tibor István

Java grafikai lehetőségek

Szerver oldali technológiák Szerver oldali script nyelvek PHP

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

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

Pénzügyi algoritmusok

3. Osztályok II. Programozás II

OOP. Alapelvek Elek Tibor

A Web réteg architektúrája A JSF web alkalmazás keretrendszer. Bakay Árpád dr. NETvisor kft (30)

Szkriptnyelvek. 1. UNIX shell

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Internet programozása. 1. előadás

A webhelyhez kötődő szoftverek architektúrája

A C programozási nyelv I. Bevezetés

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

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

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

C++ programozási nyelv Konstruktorok-destruktorok

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Átírás:

JSP (Java Server Pages) technológia

JSP technológia A JSP technológiával könnyen készíthető olyan web-tartalom, melynek statikus és dinamikus része van. A JSP rendelkezésre bocsátja a szervletek dinamikus tulajdonságait jóval természetesebb módon áll hozzá a statikus tartalom létrehozásához (mint a szervlet) Egy JSP egy szöveges dokumentum, amely kétféle szöveget tartalmaz: statikus adatok, melyek bármilyen szöveges formátumúak lehetnek (HTML, SVG, WML, XML), JSP elemek, amelyek a dinamikus tartalmat hozzák létre

A JSP elemek kétféle szintaxissal használhatók: standard XML Egy oldalon belül csak az egyiket használhatjuk. Ha az XML szintaxist használjuk, akkor a JSP egy érvényes XML dokumentum is lehet, amely XML feldolgozó API-kkal dolgozható fel.

A JSP életciklusa A JSP ugyanúgy szolgálja ki a kéréseket, mint egy szervlet. A JSP életciklusát és a dinamikus voltát a szervlet technológia határozza meg. Amikor egy kérés ékezik egy bizonyos JSP-re, a web-konténer ellenőrzi, hogy a JSP szervletje régebbi-e, mint maga a JSP oldal. Ha igen, a konténer átfordítja (translate) a JSP-t egy szervlet osztályra, ezt követően lefordítja (compile) a szervlet osztályt. Mindez automatikusan történik.

Fordítás Fordítás A statikus adat kóddá lesz alakítva, mely a tartalmat közvetlenül a válasz objektumba teszi. A JSP elemek a következőképpen alakulnak: A direktívák szabályozzák, hogy a web-konténer hogyan fordítsa (translate) és futtassa a JSP-t A szkript elemek a szervlet osztály kódjába lesznek beillesztve A kifejezés nyelv (EL) kifejezések a kifejezés-kiértékelőnek adódnak át paraméterként. A jsp:[set get]property elemek a megfelelő JavaBean komponens metódushívásaivá alakulnak. A jsp:[include forward] elemek a megfelelő szervlet API hívásokká alakulnak át. A saját elemek (custom tags) az elemkezelő (tag handler) osztály megfelelő hívásaivá alakulnak át.

Futás Futtatási paraméterek megadása A különböző futtatási paramétereket a page direktívában adhatjuk meg. Pufferelés: Amikor a JSP lefut, a válasz objektum automatikusan pufferelve lesz. A puffer nagyságát a buffer attribútummal álĺıthatjuk. <%@page buffer="none xxx kb"%>

Futás Hibakezelés Hibakezelés: Az errorpage attribútum határozza meg, hogy a konténer hova kell továbbítson hiba esetén: <%@page errorpage="file name "%> Pl. <%@page errorpage="errorpage.jsp"%> Az iserrorpage paraméter beálĺıtja, hogy az illető JSP oldal épp a hibakezelő oldal <%@page iserrorpage="true"%> Ez a direktíva egy javax.servlet.jsp.errordata objektumot bocsát rendelkezésre, amely a hibaadatokat tartalmazza. Ennek segítségével meg lehet mutatni a kliensnek a hiba okára vonatkozó információt. A következő kifejezéssel kérhető le: ${pagecontext.errordata.statuscode} a státus-kód lekérésére ${pagecontext.errordata.throwable} a dobott hiba lekérésére

Futás Statikus tartalom típusa Statikus tartalom típusa Bármilyen szöveg alapú tartalom lehet: HTML, WML, XML stb. Alapértelmezésben HTML. Más típusú tartalom esetében a contenttype attribútumot kell használjuk a tartalom beálĺıtására. Ennek a direktívának a célja, hogy a böngésző helyesen értlemezze a kapott tartalmat. Ha pl. WML-t generálunk akkor: <%@page contenttype="text/vnd.wap.wml"%>

Futás Válasz és oldal kódolása (encoding) Válasz és oldal kódolása: Szintén a contenttype attribútumot használjuk a válasz kódolásának a maghatározására, a charset segítségével: Az alábbi példában UTF-8 -t használunk, ami mindenféle lokalizálást (locale) támogat <%@page contenttype="text/html;charset=utf-8"%>

Szkript elemek Szkriptlet: A <% %> elemek közötti rész egy az egyben belekerül a szervlet forrásába, a JSP oldalon elfoglalt helyének megfelelően. A szkriptletekben változók is deklarálhatók, de mivel az egész <% %> közötti rész a jspservice() metódusba kerül, ezek a változók lokálisak lesznek. Metódust természetesen nem lehet szkriptletben definiálni, mert a java nem támogatja az egymásba ágyazott metódusokat. Metódust a deklarációs részben (lásd később) lehet definiálni. Kifejezés: A <%= %> elemek közötti rész, java kód mely String-et ad vissza. Ez a String az out.print() utasításba kerül.

Deklaráció: A <%! %> elemek közötti rész. Változókat vagy metódusokat lehet így deklarálni. Ezek a JSP-nek megfelelő szervlet osztály-szintű tagjai lesznek. A deklarált változók példány-változók lesznek, de ezek használatát kerülni kell a szálkezelési problémák miatt. (a konténer egy adott szervletosztály egyetlen példányát hozza létre, és minden kéréshez ezt az egy példányt használja)

Dinamikus tartalom létrehozása Java objektumokon keresztül valósul meg. A JSP néhány objektumot automatikusan rendelkezésre bocsát, de elérhetők alkalmazásspecifikus objektumok is. Implicit objektumok: a web-konténer hozza létre őket az oldalhoz (page), kéréshez (request), szesszióhoz (session), alkalmazáshoz (application) kapcsolódó információkat tartalmaznak. ezek ugyanazok az objektumok, amelyeket a szervlet technológia definiál.

Alkalmazásspecifikus objektumok: Dinamikus adatok bemutatására előkészített JaveBean objektumok, melyeket általában standard vagy saját elemek segítségével jelenítünk meg, kapjuk meg vagy álĺıtjuk be a tulajdonságaikat. Ugyanezt megtehetjük szkript-elemek (scripting elements) használatával is, azaz közvetlen java kódot írva a JSP-be, de ezt lehetőleg kerüljük el.

Implicit objektumok Implicit objektumok pagecontext: a JSP kontextusa. Hozzáférhetővé teszi például az alább felsorolt objektumokat servletcontext: az alkalmazáson belüli bármely komponens közös kontextusa session: a szesszió objektum request: a kérés, amely kiváltotta a JSP lefutását response: a JSP által küldött válasz param: a kérés (request) paraméterek nevét hozzárendeli az értékükhöz paramvalues: a kérés (request) paramétereket hozzárendeli a megfelelő értéktömbökhöz header: a kérés fejléc-attribútumait hozzárendeli az értékükhöz headervalues: a kérés fejléc-attribútumait hozzárendeli a megfelelő értéktömbökhöz cookie: a süti nevét hozzárendeli egy süti értékéhez initparam: inicializáló paraméterek nevét hozzárendeli az értékükhöz

Implicit objektumok A következő implicit objektumok a megfelelő hatókörben levő attribútum-objektumokat tartalmazzák pagescope: oldal (page) attribútumokat rendel hozzá az értékükhöz requestscope: kérés (request) attribútumokat rendel hozzá az értékükhöz sessionscope: szesszió attribútumokat rendel hozzá az értékükhöz applicationscope: alkalmazás attribútumokat rendel hozzá az értékükhöz

JavaBeans komponensek JavaBeans komponensek JavaBean komponens bármely olyan java osztály, amelyik betart bizonyos, a szerkezetére vonatkozó konvenciókat. ezeket a komponenseket a JSP standard nyelvi elemekkel támogatja. könnyen létrehozhatók és incializálhatók tulajdonságaik egyszerűen álĺıthatók, illetve olvashatók A JavaBeans komponens tulajdonsága lehet: írható/olvasható, csak olvasható, csak írható egyszerű, azaz egyetlen értéket tartalmazó, vagy indexelt (tömb, lista, map, stb.)

JavaBeans komponensek Egy tulajdonság nem feltétlenül jelent egy példányváltozót is. A bean tulajdonságaihoz az alább megadott nyilvános metódusokon keresztül férhetünk hozzá. Ezek a metódusok a következő konvenciókat kell betartsák: Mindegyik olvasható tulajdonságra kell létezzen a következő formájú metódus: PropertyClass getproperty()... Mindegyik írható tulajdonságra kell létezzen a következő formájú metódus: setproperty(propertyclass pc)... Egy JavaBeans komponensnek rendelkeznie kell egy paraméter nélküli konstruktorral is.

JavaBeans komponensek JavaBeans létrehozása és használata jsp:usebean elemmel deklaráljuk, hogy egy JSP egy JavaBeans komponenst fog használni. Két alakja van: <jsp:usebean id="beanname" class="fully qualified classname" scope="scope"/> <jsp:usebean id="beanname" class="fully qualified classname" scope="scope"> <jsp:setproperty.../> </jsp:usebean> A másodikkal inicializálhatók a bean tulajdonságai.

JavaBeans komponensek A hatókör (scope) lehet: application, session, request vagy page Ha még nem létezik a bean, a web-konténer létrehozza és a megfelelő hatókörben tárolja. Az id attribútum meghatározza a bean nevét a hatókörben, amin keresztül hivatkozhatunk rá EL kifejezésekben vagy más JSP elemekben. Pl. <jsp:usebean id="locales" scope="application" class="mypkg.mylocales"/>

JavaBeans komponensek JavaBeans komponens tulajdonságok beálĺıtása A jsp:setproperty elemmel töténik. A szintaxis a property forrásától függ. String konstans: <jsp:setproperty name="beanname" property="propname" value="string constant"/> Kérés (request) paraméter (explicit): <jsp:setproperty name="beanname" property="propname" param="paramname"/>

JavaBeans komponensek Kérés (request) paraméterek, melyek megegyeznek a bean tulajdonságával <jsp:setproperty name="beanname" property="propname"/> <jsp:setproperty name="beanname" property="*"/> Kifejezés: <jsp:setproperty name="beanname" property="propname" value="expression"/> <jsp:setproperty name="beanname" property="propname"> <jsp:attribute name="value"> expression </jsp:attribute> </jsp:setproperty> A beanname attribútum meg kell egyezzen a usebean elem id attribútumával.

JavaBeans komponensek JavaBeans komponens tulajdonságok kinyerése jsp:getproperty elem: A tulajdonság értéket karaktersorrá (String) alakítja és beszúrja azt a válasz stream-be <jsp:getproperty name="beanname" property="propname"/> a beanname attribútum a usebean id attribútumával meg kell egyezzen, a JavaBeans komponesben kell léteznie egy getpropname() metódusnak.

Kifejezés nyelv (Expression language, EL) EL kifejezések segítségével könnyen hozzáférhetünk JavaBean-ekben tárolt alkalmazásadatokhoz ${bookdb.bookdetails.title} egy name nevű bean elérhető a ${name} kifejezéssel egy beágyazott tulajdonsága elérhető a ${name.foo.bar} szintaxissal Pl. <c:if test="${sessionscope.cart.numberofitems >0}">... </c:if> Az EL kifejezéseket a JSP kifejezés-kiértékelő dolgozza fel. Hogy kikapcsoljuk az EL kifejezések kiértékelését az iselignored attribútumot használjuk: <%@page iselignored ="true false"%>

EL kifejezések használhatók statikus szövegben vagy bármely standard vagy saját elemben, amely egy kifejezést vár. Statikus szöveg esetében a kifejezés kiértékelődik és hozzáadódik az aktuális kimenethez. Egy elem egy attribútumát több módon lehet beálĺıtni: Egy EL kifejezés: <some:tag value="${expr}"/> A kifejezés ki lesz értékelve és a várt típusra lesz alakítva Egy vagy több, szöveggel elválasztott EL kifejezés: <some:tag value="some${expr}${expr}text${expr}"/> A kifejezések balról jobbra lesznek kiértékelve, majd karaktersorrá lesznek alakítva és össze lesznek fűzve. A keletkezett karaktersor aztán a várt típusra lesz alakítva. Csak sima szöveg: <some:tag value="sometext"/> Az attribútum karaktersora át lesz alakítva a várt típusra JSP kifejezés: <some:tag value="<%=expression%>"/>

Változók A web-konténer a PageContext.findAttribute(String)-el keresi meg a változót, amely az EL kifejezésben megjelenik. Pl. a ${product} kifejezésre a konténer megkeresi a product-ot a page, request, session, illetve application hatókörökben és visszaadja annak értékét. A beanek tulajdonságai a. operátorral érhetők el bármilyen mélységig beágyazva.

Tartalom újrafelhasználása include direktíva: akkor kerül feldolgozásra, mikor a JSP át van fordítva szervlet osztálya. a (statikus vagy dinamikus) tartalom hozzá lesz fűzve a JSP oldal tartalmához. tipikusan bannerek, szerzői jogi információk befűzésére alkalmazzák. Szintaxis: <%@include file="filename"%>

jsp:include: a JSP futása közben kerül feldolgozásra. statikus vagy dinamikus tartalmat is hozzáfűzhetünk a JSP-hez. a statikus tartalom egyszerűen hozzáfűződik a hívó JSP-hez. a dinamikus tartalom esetében, a kérés objektum (request) tovább lesz küldve a befűzött erőforráshoz, majd a befűzött oldal lefut és az eredmény hozzá lesz fűzve a hívó JSP válaszához (reponse). Szintaxis: <jsp:include page="includedpage"/>

Vezérlés átadása egy másik web-komponensnek jsp:forward: a Java Servlet API funkcionalitását használja fel. Szintaxis: <jsp:forward page="filename"/> Amikor egy include vagy forward elemet meghívunk, az eredeti kérés át lesz adva a céloldalnak. Ha további adatokat akarunk a céloldalnak átadni, ezt megtehetjük a jsp:param elem segítségével.

<jsp:include page="..."> <jsp:param name="param1" value="value1"/> </jsp:include> Az új paraméterek hatóköre a jsp:include vagy jsp:forward hívás, azaz az új paraméterek nem érvényesek az include visszatérése után.

JSP map-elés <servlet> <servlet-name>readinitparamjsp</servlet-name> <jsp-file>/web/readinitparamjsp.jsp</jsp-file> <init-param> <param-name>sys</param-name> <param-value>151.68.167.201</param-value> </init-param> <init-param> <param-name>master</param-name> <param-value>otn Group IDC</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>readinitparamjsp</servlet-name> <url-pattern>/web/readinitparamjsp.jsp</url-pattern> </servlet-mapping>

<html> <head><title>read Init params from a JSP</title></head> <body> <%! String emailhost = null; String webmaster = null; public void jspinit() { ServletConfig config = getservletconfig(); emailhost = config.getinitparameter("sys"); webmaster = config.getinitparameter("master"); } %> <table border="1"> <tr><td>email server</td><td><%=emailhost%></td></tr> <tr><td>webmaster</td><td><%=webmaster%></td></tr> </table> <% // It can also be read directly from the implicit object - config %> <%=config.getinitparameter("sys")%><br><br> <%=config.getinitparameter("master")%> </body> </html>

The End...