Java szervlet technológia



Hasonló dokumentumok
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

Java servlet technológia 1 / 40

Java Servlet technológia

Bevezető. Servlet alapgondolatok

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

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

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

Web programoz as

JSP (Java Server Pages) technológia

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

Java Web technológiák

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

JAVA webes alkalmazások

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 JavaServer Pages (JSP)

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

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

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

Struts2 keretrendszer

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

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

JEE tutorial. Zsíros Levente, 2012

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

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

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.

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

A Java EE 5 plattform

API tervezése mobil környezetbe. gyakorlat

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

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.

A JavaServer Pages (JSP)

A JavaServer Pages (JSP)

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

Web-fejlesztés NGM_IN002_1

Web-fejlesztés NGM_IN002_1

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

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

JavaServer Pages (JSP) (folytatás)

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

Java és web programozás

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

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

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

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

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 5.ELŐADÁS. Sütik és munkamenetek kezelése

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Java. Menetkezelés. Eseményfigyelők. ANTAL Margit. Munkamenetek. ANTAL Margit. Sapientia - EMTE

VII. Appletek, grafika

Interaktív weboldalak készítése

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Alapfogalmak, WWW, HTTP

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

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

Webes alkalmazások fejlesztése

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

Web programozás. Internet vs. web. Internet: Az Internet nyújtotta néhány alapszolgáltatás:

Java grafikai lehetőségek

Menetkövetés lehetőségei

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

és az instanceof operátor

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

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

Java Servletek alapjai

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

Web-technológia PHP-vel

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

Földmérési és Távérzékelési Intézet

Alkalmazás rétegbeli protokollok:

COMET webalkalmazás fejlesztés. Tóth Ádám Jasmin Media Group

Már megismert fogalmak áttekintése

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

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

Biztonság java web alkalmazásokban

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

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

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

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

A Wireshark program használata Capture Analyze Capture Analyze Capture Options Interface

Webapp (in)security. Gyakori hibákról és azok kivédéséről fejlesztőknek és üzemeltetőknek egyaránt. Veres-Szentkirályi András

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

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 6.ELŐADÁS. Fájlkezelés PHP-ben

MVC. Model View Controller

JNDI - alapok. Java Naming and Directory Interface

PHP. Adatbázisok gyakorlat

A. függelék Webalkalmazások

Számítógépes munkakörnyezet II. Szoftver

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

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

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Web-fejlesztés NGM_IN002_1

Webes alkalmazások fejlesztése. 9. előadás Bevezetés az ASP.NET MVC keretrendszerbe

Webfejlesztés alapjai

WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS

JSF alkalmazások teljesítményhangolása JMeter és dynatrace segítségével

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

Webtárhely létrehozása a helyen. Lépések Teendő 1. Böngészőbe beírni: 2. Jobb oldalon regisztrálni (tárhelyigénylés).

Webszolgáltatások (WS)

Átírás:

Java szervlet technológia

Igény a dinamikus tartalomra... Az első ilyen technológiák: kliens oldalon: appletek szerver oldali technológiák: CGI, JSP, PHP, ASP

a CGI-ről CGI (Common Gateway Interface): először ezt használták szerveroldali dinamikus tartalom generálására a CGI szabvány lehetővé tette a kiszolgálónak, hogy külső programmal kommunikáljon, melyet a webszerver egy megfelelően konfigurált könyvtárába (pl. cgi-bin) kell bemásolni minden egyéb hálózatkezeléssel kapcsolatos problémát a webszerver kezel ez a külső program kommunikálhat bármilyen külső erőforrással (pl. adatbázis) és dinamikus tartlamat hoz létre. annakidején eléggé elterjedt

Hátrányok A CGI hátrányai: platformfüggőség többszöros kérések kiszolgálásához való alkalmazkodás (scalability) hiánya (minden új kérés egy operációs rendszer szintű folyamat elindítását eredményezte) a HTML elemek a programozási nyelv kódjába vannak beágyazva (a programozó és grafikus felüet tervező (designer) munkáját nehéz szétválasztani) Ezen hátrányok megszüntetésének érdekében kifejlesztették a Java szervlet és JSP technológiát.

A szervlet: egy java osztály, mely a kérés-válasz (request-response) modellre épül leginkább web kérések kiszolgálására használják őket a java szervlet technológia HTTP-specifikus szervlet osztályokat is tartalmaz a javax.servlet és a javax.servlet.http csomagok segítségével írhatunk szervleteket mindegyik szervlet a Servlet interfészt kell implementálja

A szervlet életciklusa Egy szervlet életciklusát a web-konténer kezeli, melybe az illető szervlet telepítve volt. Ha egy kérés érkezik a szervlethez, a következők történnek: 1 Ha a szervletnek még nem létezik példánya (instanciája), akkor a web-konténer betölti a szervlet osztályt létrehoz egy instanciát, majd inicializálja az init metódus segítségével Az init metódus rendszerint konfigurációbelovasásra, erőforrás inicializálásra (pl. adatbázishozzáférés) használható vagy bármilyen egyszeri művelet elvégzésére. 2 Meghívja a service metódusát, átadva neki a kérés és válasz (request, response) objektumokat. 3 Ha a konténer el kell távoĺıtsa a szervletet, meghívja a destroy metódusát (az init párja: erőforrások felszabadítása stb.)

A szervlet életciklusa Egy szervlet életciklusát a web-konténer kezeli, melybe az illető szervlet telepítve volt. Ha egy kérés érkezik a szervlethez, a következők történnek: 1 Ha a szervletnek még nem létezik példánya (instanciája), akkor a web-konténer betölti a szervlet osztályt létrehoz egy instanciát, majd inicializálja az init metódus segítségével Az init metódus rendszerint konfigurációbelovasásra, erőforrás inicializálásra (pl. adatbázishozzáférés) használható vagy bármilyen egyszeri művelet elvégzésére. 2 Meghívja a service metódusát, átadva neki a kérés és válasz (request, response) objektumokat. init, destroy, 3 Ha a konténer service el kell távoĺıtsa a szervletet, meghívja a destroy Az init metódusát és destroy egyszer hívódik meg, a service pedig minden egyes kérésre. (az init párja: erőforrások felszabadítása stb.)

Információmegosztás A web-komponensek akárcsak a legtöbb objektum más objektumokkal együttműködve végzik el feladatukat. Ez a következőképpen történhet: segédosztályok segítségével nyilvános hatókörű (public scope) objektumok attribútumait oszthatják meg más web-komponenshez továbbítanak

Nyilvános hatókörű objektumok (public scope objects) A web komponensek négy (nyilvános hatókörű) objektum attribútumain keresztül oszthatnak meg információt. Az attribútumok a [get set]attribute metódusokon keresztül érhetők el

Nyilvános hatókörű objektumok (public scope objects) A web komponensek négy (nyilvános hatókörű) objektum attribútumain keresztül oszthatnak meg információt. Az attribútumok a [get set]attribute metódusokon keresztül érhetők el Scope Objektum Osztály Elérhető Web kontextus ServletContext a web-alkalmazáson belüli web-komponensekből

Nyilvános hatókörű objektumok (public scope objects) A web komponensek négy (nyilvános hatókörű) objektum attribútumain keresztül oszthatnak meg információt. Az attribútumok a [get set]attribute metódusokon keresztül érhetők el Scope Objektum Osztály Elérhető Web kontextus ServletContext a web-alkalmazáson belüli web-komponensekből Szesszió HttpSession web-komponensekből, amelyek egy szesszión belüli kérésekhez tartoznak

Nyilvános hatókörű objektumok (public scope objects) A web komponensek négy (nyilvános hatókörű) objektum attribútumain keresztül oszthatnak meg információt. Az attribútumok a [get set]attribute metódusokon keresztül érhetők el Scope Objektum Osztály Elérhető Web kontextus ServletContext a web-alkalmazáson belüli web-komponensekből Szesszió HttpSession web-komponensekből, amelyek egy szesszión belüli kérésekhez tartoznak Kérés HttpServletRequest az adott kérést kezelő web-komponensekből

Nyilvános hatókörű objektumok (public scope objects) A web komponensek négy (nyilvános hatókörű) objektum attribútumain keresztül oszthatnak meg információt. Az attribútumok a [get set]attribute metódusokon keresztül érhetők el Scope Objektum Osztály Elérhető Web kontextus ServletContext a web-alkalmazáson belüli web-komponensekből Szesszió HttpSession web-komponensekből, amelyek egy szesszión belüli kérésekhez tartoznak Kérés HttpServletRequest az adott kérést kezelő web-komponensekből (Oldal) JspContext a JSP-ből, amely létrehozza

Service metódusok írása Service metódus írása: egy do<metódusnév> fölüĺırásában (overriding) nyilvánul meg. A <Metódusnév> lehet: Get, Delete, Options, Post, Put Egy ilyen metódus a kérés (request) objektumból kinyeri az információkat, eléri a külső erőforrásokat, beálĺıtja a válasz (response) objektumot ezen információk alapján.

Service metódusok írása Service metódus írása: egy do<metódusnév> fölüĺırásában (overriding) nyilvánul meg. A <Metódusnév> lehet: Get, Delete, Options, Post, Put Egy ilyen metódus a kérés (request) objektumból kinyeri az információkat, eléri a külső erőforrásokat, beálĺıtja a válasz (response) objektumot ezen információk alapján. A válasz objektumot úgy álĺıtja be, hogy először lekér tőle egy output stream-et feltölti azt a válasz fejlécekkel test (body) tartalommal

Információ kinyerése a kérés objektumból Információ kinyerése a kérés objektumból A kérés objektum azokat az adatokat tartalmazza, melyeket a kliens (böngésző) küldött a szerver felé HTTP protokollon keresztül. a ServletRequest interfészt implementálja Ez az interfész a következő információk elérését szolgáló metódusokat tartalmaz: Paraméterek elérése: tipikusan a kliens által (a HTML form keretében) küldött információk Pl. String id =request.getparameter("bookid"); Egy input stream-et is lekérhetünk a kérés objetumból és a tartalmát manuálisan feldogozhatjuk. Karakter stream lekérésére a getreader-t használhatjuk, bináris adatokhoz pedig a getinputstream-et.

Információ kinyerése a kérés objektumból Információ kinyerése a kérés objektumból A kérés objektum azokat az adatokat tartalmazza, melyeket a kliens (böngésző) küldött a szerver felé HTTP protokollon keresztül. a ServletRequest interfészt implementálja Ez az interfész a következő információk elérését szolgáló metódusokat tartalmaz: Objektum attribútumok: tipikusan a szervlet konténer által biztosított objektumok, illetve egy szervlet által létrehozott és a kérés objektumba betett objektumok, melyek így más szervletekben is elérhetők lesznek (forward és include). Információk a használt protokollról, a kliensről valamint a szerverről Lokalizációval kapcsolatos információk

Információ kinyerése a kérés objektumból Kérés (request) URL Egy HTTP kérés URL a következő részekből áll: http://[host ]:[port ][request path ]?[query string ] A request path a következő részekre bontható tovább: Kontextus út (context path): slash ( / ) és a szervletet tartalmazó web-alkalmazás kontextus gyökere (context root) Szervlet út (servlet path): slash ( / ) és a komponenst aktiváló kérésnek megfelelő map-elés

Információ kinyerése a kérés objektumból Paraméterek (query string) A query string összetevői: paraméterek a nekik megfelelő értékek Az egyes paramétereket a kérés objektumból a getparameter metódussal nyerjük ki. Kétféleképpen lehet query string-et generálni: Egy query string explicit módon megjelenik az URL-ben Pl. <a href="/servletpath?param1=1">text</a>. A paraméter a következőképpen kapható meg: String parameter =request.getparameter("param1"); A query string hozzáadódik az URL-hez, amikor egy HTML form elküldése (submit) a HTTP GET metódussal történik. Megj.: HTTP POST metódus esetén a parametérek a kérés testében (body) helyezkednek el.

Szervlet map-elések megadása a web.xml-ben A szervletet deklarálni kell: logikai nevet kell neki adni, meg kell adni az osztályt, amelyik implementálja esetleg inicializáló paramétereket adhatunk meg neki <servlet> <servlet-name>helloworld</servlet-name> <servlet-class>hello.helloworldex</servlet-class> <init-param> <param-name> initial </param-name> <param-value> 10 </param-value> </init-param> </servlet>

A szervletet hozzá kell rendelni (map-elni) egy vagy több web-erőforráshoz vagy URL mintához <servlet-mapping> <servlet-name>helloworld</servlet-name> <url-pattern> /servlet/helloworldexample </url-pattern> </servlet-mapping>

Kérés/válasz szűrése (filtering) A szűrő módosíthatja a kérés és válasz objektumok tartalmát ez nem web-komponens abban az értelemben, hogy nem hoz létre választ (response), csak módosítja azt egy funkcionalitást ad, amely hozzárendelhető a web-komponenshez nem függ a web-erőforrástól, amihez hozzá van rendelve Főbb alkalmazási területei: egy másik weboldalra irányít át, valamilyen feltétel függvényében (pl. annak ellenőrzése, hogy be van-e jelentkezve a felhasználó) módosítja a kérés vagy válasz fejlécét vagy adatait (kibővített kérés és válasz osztályok segítségével), külső erőforrásokkal kommunikálhat

A gyakorlatban: azonosítás naplózás (logging) kép-átalakítás adatsürítés titkosítás XML transzformáció stb. Egy web-erőforrás esetében bekonfigurálható, hogy nulla, egy vagy több szűrő legyen rá alkalmazva a megfelelő sorrendben. A szűrők használata három részből áll: meg kell írni a szűrőt meg kell írni a kibővített kérés és válasz osztályokat a telepítéskor mindegyik web-erőforrásnak meg kell adni a kívánt szűrő-láncot

Szűrő megírása Szűrő megírása A szűrő API a következő főbb interfészekből áll: Filter, FilterChain, es FilterConfig Egy szűrő definiálásához a Filter interfészt kell implementálni. A dofilter metódus paraméterként kapja a kérés, válasz valamint a szűrőlánc objektumokat létrehozza a kibővített kérés és/vagy válasz objektumokat meghívja a dofilter-t (a további szűrőkre a láncból) paraméterként a kibővített objetumokat adva meg, akár blokkolhatja is a kérést úgy, hogy nem hívja meg a következő szűrőt, de akkor ő a felelős a válasz objektum feltöltéséért a visszakapott kibővített objetkumokkal módosíthatja a kérés valamint válasz objetumokat

Szűrő megírása A dofilter-en kívül még az init és destroy metódusokat is implementálni kell. Az init akkor hívódik, mikor a konténer példányosítja a szűrőt. A paraméteként megadott FilterConfig-ban megkapjuk az inicializáló paramétereket.

Kibővített kérés és válasz osztályok Kibővített kérés és válasz osztályok A szűrő sokféleképpen módosíthatja a kérés és válasz objetkumokat... Pl. megadhat egy attribútumot a kérésbe vagy adatot szúrhat be a válaszba Ez utóbbihoz a szűrő el kell kapja a választ még mielőtt az el lenne küldve a kliens felé. Ehhez a szervletnek, amely a választ generálja egy stand-in adatfolyamot (stream) kell átadni. Egy ilyen adatfolyam megakadályozza a szervletet abban, hogy lezárja az eredeti válasz-objektumot mikor végzett, és így megengedi a szűrőnek, hogy utólagosan módosítsa a választ. Ehhez a szűrő létrehoz egy kibővített választ (wrapper), aminek átírja a getwriter objektumát, hogy ezt a stand-in adatfolyamot adja vissza. Ezzel a kibővített válasszal hívja meg a dofilter-t

Kibővített kérés és válasz osztályok A kérés kibővítéséhez a HttpServletRequestWrapper osztályt kell kibővíteni, a válasz kibővítéséhez a HttpServletResponseWrapper osztályt

Szűrő hozzárendelések megadása Szűrő hozzárendelések (map-elések) megadása A web-konténer a szűrő hozzárendelések alapján alkalmazza a szűrőket az egyes web-erőforrásokra. Egy szűrő map-elés hozzárendel egy szűrőt egy web-komponenshez egy név alapján egy szűrőt web-erőforrásokhoz URL minták (pattern) szerint A szűrők olyan sorrendben lesznek meghívva, amilyen sorrendben a szűrő hozzárendelésben megjelennek.

Szűrő hozzárendelések megadása A telepítésleíróban (deployment descriptor): Deklarálni kell a szűrőt: nevet kell neki adni, meg kell adni az osztályt, amelyik implementálja inicializáló paramétereket lehet adni neki Pl. <filter> <filter-name>servlet Mapped Filter</filter-name> <filter-class>filters.examplefilter</filter-class> <init-param> <param-name> name </param-name> <param-value> value </param-value> </init-param> </filter>

Szűrő hozzárendelések megadása A telepítésleíróban (deployment descriptor): Map-elni kell a szűrőt egy web-erőforráshoz vagy egy URL mintához Pl. <filter-mapping> <filter-name>servlet Mapped Filter</filter-name> <servlet-name>invoker</servlet-name> </filter-mapping> <filter-mapping> <filter-name>path Mapped Filter</filter-name> <url-pattern>/servlet/*</url-pattern> </filter-mapping>

Szűrő hozzárendelések megadása A telepítésleíróban (deployment descriptor): Korlátozni lehet, hogy mikor legyen a szűrő alkalmazva: REQUEST : amikor a kérés direkt a klienstől jön FORWARD : ha a kérés továbbítva (forward) lett a komponenshez INCLUDE : ha a kérést egy beágyazott komponens kapja ERROR : a kérés az error lappal van feldolgozva Egy web-erőforráshoz akárhány különböző szűrő rendelhető és ugyanaz a szűrő több web-erőforráshoz is hozzárendelhető.

Más web-erőforrás hívása Direkt vagy indirekt módon történik. Indirekt módon akkor, ha a web-komponens a válaszban tartalmaz egy URL-t, amelyik egy másik web-komponensre mutat. Direkt módon kétféleképpen: egy web-komponens magábafoglalhatja egy másik web-komponens tartalmát (include) továbbíthatja a kérést egy másik komponenshez (forward)

Ahhoz, hogy elérjünk egy erőforrást, amelyik egy web-komponenst futtat, először egy RequestDispatcher objektumot kell lekérjünk a getrequestdispatcher(url) metódussal. A RequestDispatcher objektumot két módon lehet lekérni: a kérés objektumtól a webkontextus objektumtól A kérés objektumból lekért RequestDispatcher esetében az URL lehet relatív (nem /-el kezdődő), A web-kontextustól lekért esetében viszont az URL abszolút kell legyen. Ha az erőforrás nem elérhető, null-t kapunk vissza.

Más erőforrások beszúrása a válasz objektumba Más erőforrások beszúrása a válasz objektumba Sokszor hasznos lehet, hogy egy web erőforrást beszúrjunk egy másikba pl. jogvédelmi információkat (copyright) Ehhez a RequestDispatcher include(request, response) metódusát használhatjuk. Megszorítások a válasz objektum tekintetében: A beszúrt web-komponens írhat ugyan a response tartalmába (body), de nem álĺıthatja a fejléceket nem hívhat olyan metódust, ami a válasz objektum fejlécét érinti. (pl. setcookie). ami ilyenkor történik: a kérés el lesz küldve a beszúrt web-komponens elvégződik majd a keletkezett tartalom beszúródik a külső szervlet által generált válasz objektumba

Kérés továbbítása egy másik web-komponenshez Kérés továbbítása egy másik web-komponenshez Sok web-alkalmazásban van egy web-komponens, mely egy előfeldogozást végez és ettől függően továbbít egy másik komponenshez, amely a választ generálja (lásd később MVC, Struts). Ahhoz, hogy a egy kérést egy másik web-komponenshez továbbítsuk a RequestDispatcher forward metódusát használjuk. Megszorítások: Ha a ServletOutputStream vagy a PrintWriter objektumokat módosítottuk a továbbítás előtt, akkor a továbbításkor IllegalStateException hibát kapunk.

Kérés továbbítása egy másik web-komponenshez Hozzáférés web-kontextushoz A kontextus, amelyben a web-komponensek elvégződnek egy ServletContext interfészt implementáló objektum. Ezt meg lehet kapni a szervlet getservletcontext metódusával. A ServletContext-en keresztül többek között az alábbiak érhetők el: Inicializáló paraméterek A web-kontextushoz rendelt erőforrások Objektum attribútumok Naplóbeálĺıtások (logging)

Kliensállapot megőrzése Sok alkalmazás esetében szükség van arra, hogy az azonos felhasználótól jövő kérések össze legyenek kapcsolva egymással. Pl. bevásárlókosár A web-alkalmazások felelősek ennek a megvalosításáért, mivel a HTTP protokoll állapot nélküli (stateless). A Java szervlet technológia egy API-t kínál a szesszió kezelésére. A szessziót egy HttpSession objektum képviseli. Lekérhető a kérés (request) objektumtól a getsession metódussal. Ez visszaadja az aktuális szessziót vagy ha még nincs, akkor létrehoz egyet. A szesszióhoz objektum-alapú attribútumokat lehet rendelni. Ezek egy adott web-kontextuson belül bármelyik web-komponensből hozzáférhetőek.

A szesszióhoz hozzárendelt objektumok értesítése A szesszióhoz hozzárendelt objektumok értesítése Az alkalmazás értesítheti a web-kontextushoz valamint a szesszióhoz rendelt objektumokat bizonyos események bekövetkeztekor: Amikor egy objektum hozzáadódik vagy eltávoĺıtódik a szesszióból. Hogy ezt az értesítést megkapja az objektum a HttpSessionBindingListener interfészt kell implementálja. Amikor a szesszió, amelyhez az objektum hozzá van rendelve passziválva vagy aktiválva (perszisztensen lementve majd visszatöltve) van. Hogy ezt az értesítést megkapja az objektum a HttpSessionActivationListener interfészt kell implementálja.

Szesszió követés Szesszió követés A web-konténer több metódust használhat arra, hogy egy felhasználóhoz egy szessziót rendeljen, ami azzal jár, hogy egy azonosító küldődik a kliens és szerver között. Ez az azonosító eltárolható egy sütiben (cookie) minden egyes URL-ben, amit a kliens megkap Ha az alkalmazás szessziót használ, akkor biztosítani kell azt, hogy a szessziókövetés működik a sütik kikapcsolása esetében is. Ezt az URL-átírással valosíthatjuk meg az encodeurl(url) metódus hívásával minden egyes URL-re, amit a szervlet visszaad. Ez a metódus hozzáfűzi a szesszió ID-t az URL-hez, ha a sütik ki vannak kapcsolva.