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

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

JSP (Java Server Pages) technológia

A JavaServer Pages (JSP)

A JavaServer Pages (JSP)

Web-fejlesztés NGM_IN002_1

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

A JavaServer Pages (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

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

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

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

Java Servlet technológia

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

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

Bevezető. Servlet alapgondolatok

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

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

Java servlet technológia 1 / 40

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

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

JEE tutorial. Zsíros Levente, 2012

JAVA webes alkalmazások

JavaServer Pages JSTL, EL

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.

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

Struts2 keretrendszer

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.

Java szervlet technológia

A Java EE 5 plattform

Webfejlesztés alapjai

JavaServer Pages programozóknak

Web-fejlesztés NGM_IN002_1

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

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

Web-technológia PHP-vel

JavaServer Pages (JSP) (folytatás)

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

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

7. rész: A specifikációtól az implementációig az EJB rétegben

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

Java Web technológiák

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

8. rész: Implementáció JDeveloperben

Webalkalmazás fejlesztés Java EE környezetben NetBeans segítségével: JavaServer Faces 1.2 AJAX

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)

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

5. rész: A Java EE és az Enterprise Bean réteg. Bakay Árpád dr. NETvisor kft (30)

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

Biztonság java web alkalmazásokban

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

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

A WEB programozása - Bevezetés őszi félév Dr. Gál Tibor

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

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Webfejlesztés alapjai

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

Antal_Margit 2010/4/25 12:02 page 1 #1 ANTAL MARGIT JAVA ALAPÚ WEBTECHNOLÓGIÁK

Web-fejlesztés NGM_IN002_1

Symfony kurzus 2014/2015 I. félév. Controller, Routing

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

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

Programozás C és C++ -ban

A. függelék Webalkalmazások

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

C++ programozási nyelv Konstruktorok-destruktorok

Menetkövetés lehetőségei

Programozás II. 2. Dr. Iványi Péter

Interaktív weboldalak készítése

Junior Java Képzés. Tematika

4. rész: Java Enterprise Edition bevezetı. Bakay Árpád dr. NETvisor kft (30)

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

Bevezető MVC tervezési minta Struts folyamatvezérlés. Struts keretrendszer

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

A JavaScript főbb tulajdonságai

Web programoz as

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

SZAKDOLGOZAT CSEHI MIKLÓS DEBRECEN 2009.

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

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

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

Adatbányászat és Perszonalizáció architektúra

Java grafikai lehetőségek

JNDI - alapok. Java Naming and Directory Interface

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Java és web programozás

Az Apache Wicket keretrendszer

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

Szkriptnyelvek. 1. UNIX shell

API tervezése mobil környezetbe. gyakorlat

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

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

Apple Swift kurzus 3. gyakorlat

A modell-ellenőrzés gyakorlata UPPAAL

AWK programozás Bevezetés

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

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

Átírás:

2. rész: JSP-k és szervletek készítése Bakay Árpád NETvisor kft (30) 385 1711 arpad.bakay@netvisor.hu

Emlékeztetı Servlet: Java kód, amely HTML outputot ír ki Pl. println() parancsokkal Rendszerint a javax.servlet.http.httpservlet kiterjesztése JSP: HTML kód, dinamikus tartalmat generáló kiterjesztésekkel

Szervlet példa HttpServlet kiterjesztése doget() (vagy dopost()) implementálása ServletContext: hozzáférés a containerhez Attribútumok különféle scope-okkal request: a kérés adatai getparameter( par1") plusz, user, header, cookie adatok response: ennek van a PrintWriter-je, amire irunk plusz: header, encoding, stb. dolgok

Szervlet példa - folyt getservletcontext().getrequestdispatcher( ).include( ) Másik servlettel, JSP-vel, HTML-lel generáljuk a tartalom egy részét Pl: Banner getservletcontext().getrequestdispatcher( ).forward( ) Másik servlettel, JSP-vel, HTML-lel generáljuk az egész tartalmat Pl: servlet számol és cselekszik, utána JSP megjelenít.

Server A servlet és JSP futtatókörnyezet beépített objektumai, property-jei kapcsolatai és élettartama ServerInfo Csak a legfontosabb accessor metódusokat tüntettem fel! Servlet Servlet getservletinfo() config: ServletConfig getinitparameter(n) getservletname() application: ServletContext get/setattribute(n,v) Session session: HttpSession get/setattribute(n,v) getcreationtime() request: Request HttpServletRequest ServletRequest get/setattribute(n,v) getparameter(n) response: HttpServletResponse ServletResponse getwriter() add/setheader(n,v) Page (csak JSP-nél!!) pagecontext: PageContext JspContext get/setattribute(n,v) get/setattribute(n,v,scope) getout() SCOPE megadható!!!

A JSP HTML oldal dinamikus tartalommal Szintaxisa a HTML kiterjesztése (minden originál HTML valid JSP!) A HTML 4-féle módon lett kiterjesztve: Direktívák <%@.. %> Új html elementek (tagok): <jsp:out../> Expression Language (EL): ${ bean.attr } Scripting: <%! %>, <% %>, <%= %> Szervletté fordul a telepítés után, és szervletként fut Itt kell keresni: jdev/mywork/app_name/webapp/classes/.jsps/_pagename.java

K1: Direktívák Parancsok JSP fordítónak, ill. a futtató containernek <%@ page. %> Attrs: import, session, errorpage, contenttype stb. <%@ include file= URL %> Behelyettesít egy másik file-t <%@ taglib uri= aa.bb.com/dd prefix= aa > Itt deklaráljuk, hogy akarunk majd vmilyen új tag-eket használni

K2: Tag.ek és tag library-k Tag-ek: Java nyelven definiálható nyelvi kiterjesztések <html:image src="en.jpg"/> tag library A tag szintaxist és viselkedést definálja általában több logikailag összefüggı tag-et definiál, pl: <c:choose/>, <c:if/>, <c:foreach/>

Tag-ek használata Deklarálás: <@ taglib @> ld. a direktíváknál Használata: <prefix:tagname attr_name=value /> Pl: <jsp.getproperty name="product" property="price" Tag-ek és taglib-ek típusai alap, beépített: <jsp:xxx /> nem kell deklarálni standard tag library-k (Java Standard Tag Library, JSTL) Komponensei: core (c:), function (fn:), xml (x:), SQL (sql:), i18n (fmt:) custom taglib: készen kapjuk, pl. a webapp framework-höz (JSF, Struts) házilag, saját célra fejlesztett taglib

(K2/A) Alap Taglib jsp: namespace : jsp:usebean: egy tetsz. javabean típusú változó deklarálása jsp:getproperty, jsp:setproperty: bean property-k olvasása/írása jsp:import: file befőzése jsp:param: további paraméterek jsp:forward: váltás másik lapra jsp:plugin: applet, stb. meghívása browser-független módon

Kitérı: JavaBean Elsısorban adattárolásra használt Java objektumok Célok: újrahasználhatóság, integrálhatóság, scripting és fejlesztıi környezetek támogatása Követelmények (konvenciók) Skalár vagy tömb példányváltozók, getter/setter metódusokkal Van üres konstruktora

JavaBean megjegyzések, furcsaságok Hogy valami JB-e az nem feketén-fehéren eldönthetı: Tiszta JB: van üres konstruktora, és csak szokásos property-k setter/getter metódusokkal. Csak adattárolásra használható Itt nem vitás, hogy JB-rıl van szó Trükkös JB: lehet más metódusa is, mint a setter/getter, és a property-k között is akadhat olyan, ami nem csupán beállít egy értéket, de valami viselkedést is indíthat!! Van enkapszulált viselkedése Igazából nem JB, de JB-ként is használhatjuk Az EJB-k nem JavaBean-ek!!!!

JavaBean és JSP A javabean-ek jól kezelhetıg a JSP-kbıl A jsp: tag-ek használatával <jsp:usebean id="status" class="hu.elte.pgy3.topicselect.web.statusbean" scope="session"/> <jsp:setproperty property="username" name="status" param="uname"/> <jsp:setproperty property="password" name="status" value="mypwd"/> <jsp.getproperty property= userfullname name=status >

jsp:usebean példa <jsp:usebean id="status" class="hu.elte.pgy3.topicselect.web.statusbean" scope="session"/> <jsp:setproperty property="username" name="status" param="uname"/> <jsp:setproperty property="password" name="status" param="pwd"/> <jsp.getproperty property= userfullname name=status >

(K2/B) Standard extension tags: JSTL JavaServer Pages Standard Tag Library 5 szekció: c: (= core ): logikai vezérlés, változók stb. c:set: EL változó beállítása <c:set var= bb.loginerror" scope="session" value= true"/> c:foreach,c:if, c:choose-c:when-c:otherwise <c:if test="${bb.loginerror!= null} " > body </c:if> xml:, sql:, fmt: (XML, SQL, formattálás, töbnyelvő interfészek) fn: (függvények) fn:length, fn:trim, fn:substring, etc. Expression Language -- EL kifejezés (mindjárt tanuljuk)

(K2/D) Saját taglib készítése és használata Tag handler: Java nyelven Tag Library Definition: XML file rögzíti a paramétereket, stb. az egyes tag-ekhez Tag handler: implementáció Minden tag-hez egy (v. több) osztály Tagfile: JSP nyelven (JSP 2.0 óta) TLD opcionális (magától generálja az információt) Alkalmas újrahasznosítható JSP modulok készítésére (és scriptletek elrejtésére)

K3: Expression Language (EL) Szintaxis: ${ expr } Kifejezés, mellékhatás nélkül!!! Szokásos logikai és aritmetikai operátorok Automatikus típuskonverzió (mint JavaScript) Property-k és collection member elérése. v. [ ] operátorokkal JSTL függvények: fn:length( asddf ) Használható: Korábban csak a tag-ek attribútumaiban Most már (JSP 2.0) mindenhol Pl: <c:if test= ${bb.loginerror!= null} > Bejelentkezési hiba: ${bb.loginerrormessage} </c:if>

Implicit Objects in EL Egy EL azonosító általában valamelyik scope-ban definiált változóra hivatkozik, de ezek foglalt nevek: pagecontext javax.servlet.jsp.pagecontext The context for the JSP page. Provides access to various objects, e.g. request, response, session pagescope, requestscope sessionscope applicationscope java.util.map Map scoped variable names to their values. param, paramvalues java.util.map request parameter maps for accessing single and multi-valued parameters header, headervalues, cookie java.util.map request header and cookie information initparam java.util.map servlet context initialization parameters

K4: JSP Scripting JSP Scripting elements declaration: <%! String name; %> scriptlet <% if(name="windows") { %> expression: <%= myvar %> expression: <%= myvar %> Sokoldalú, de áttekinthetetlen kerüljük, ha lehet!

Adatok elérése JSP, az EL és a scriptlet technológiával Nem triviális: JSP: Bean property értékadás request paraméter alapján: EL: <jsp:setproperty name="bor" property = "name" param="borname"/> Request paraméter és bean instance member lekérdezése: ${param.borname}, ${bor.name} Scriptlet: Request paraméter és bean objektum lekérdezése: request.getparameter("borname") session.getattribute("bor")

Példa2: session-szkópú bean használata a 3 technikával JSP: <jsp:usebean id="bor" scope="session" /> <jsp:getproperty name="bor" property="year") EL: ${bor} ${bor.year} JSP Scriptlet ill. Scriptlet Expression: <% BorBean mybor=new BorBean(); session.setattribute("bor", mybor); // vagy: pagecontext.setattribute("bor", mybor, SESSION_SCOPE); %> <%= ((BorBean)session.getAttribute("bor")).getYear() %>

Server A servlet és JSP futtatókörnyezet beépített objektumai, propety-jei kapcsolatai és élettartama ServerInfo Csak a legfontosabb accessor metódusokat tüntettem fel! Servlet Servlet getservletinfo() config: ServletConfig getinitparameter(n) getservletname() application: ServletContext get/setattribute(n,v) Session session: HttpSession get/setattribute(n,v) getcreationtime() request: Request HttpServletRequest ServletRequest get/setattribute(n,v) getparameter(n) response: HttpServletResponse ServletResponse getwriter() add/setheader(n,v) Page (csak JSP-nél!!) pagecontext: PageContext JspContext get/setattribute(n,v) get/setattribute(n,v,scope) getout() SCOPE megadható!!!

Demo, példaprogram Servletek és JSP-k indítása HTML form-ból Servlet JSP alap jsp: tag-ekkel + JavaBean JSP scriptinggel JSP saját fejlesztéső custom tag használatával

A technológiák összehasonlítása Servletet prezentációra ne használjunk Csak az adatváltoztatási mőveletek kezelésére, a megjelenítendı adatok elıkészítésére Jsp: tagek + JavaBean Egyszerő lapokhoz tiszta struktúra, de nem túl rugalmas, kell írni egy Bean-t. Saját taglib Egyetlen alkalmazáshoz egy komplett taglb jellemzıen nem éri meg Webapp frameworkhoz már igen! Scripting Kusza keverék kód, de semmi más nem kell hozzá, csak a JSP. Ha lehet kerüljük!!

További megjegyzések Technikák akár egy lapon belül is keverhetık Adatok átjárhatóságát megbeszéltük! Nagy alkalmazást rendszerint vmilyen web application frameworkkel fejlesztenek: JSF, Struts, stb.

Köszönöm a figyelmet! arpad.bakay@netvisor.hu