Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Java szervlet technol´ogia
Kliens´ allapot meg˝ orz´ ese
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
Ig´eny a dinamikus tartalomra... Az els˝o ilyen technol´ogi´ak: kliens oldalon: appletek
szerver oldali technol´ ogi´ak: CGI, JSP, PHP, ASP
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
a CGI-r˝ol
CGI (Common Gateway Interface): el˝osz¨or ezt haszn´alt´ak szerveroldali dinamikus tartalom gener´al´as´ara a CGI szabv´any lehet˝ ov´e tette a kiszolg´al´ onak, hogy k¨ uls˝o programmal kommunik´aljon, melyet a webszerver egy megfelel˝oen konfigur´alt k¨onyvt´ar´aba (pl. cgi-bin) kell bem´asolni minden egy´eb – h´al´ ozatkezel´essel kapcsolatos– probl´em´at a webszerver kezel ez a k¨ uls˝o program kommunik´alhat b´armilyen k¨ uls˝o er˝oforr´assal (pl. adatb´azis) ´es dinamikus tartlamat hoz l´etre. annakidej´en el´egg´e elterjedt
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
H´atr´anyok
A CGI h´atr´anyai: platformf¨ ugg˝os´eg t¨obbsz¨oros k´er´esek kiszolg´al´as´ahoz val´ o alkalmazkod´as (scalability) hi´anya (minden u ´j k´er´es egy oper´aci´ os rendszer szint˝ u folyamat elind´ıt´as´at eredm´enyezte) a HTML elemek a programoz´asi nyelv k´ odj´aba vannak be´agyazva (a programoz´o ´es grafikus fel¨ uet tervez˝ o (designer) munk´aj´at neh´ez sz´etv´alasztani) Ezen h´atr´anyok megsz¨ untet´es´enek ´erdek´eben kifejlesztett´ek a Java szervlet ´es JSP technol´ ogi´at.
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
A szervlet: egy java oszt´aly, mely a k´er´es-v´alasz (request-response) modellre ´ep¨ ul legink´abb web k´er´esek kiszolg´al´as´ara haszn´alj´ak ˝ oket a java szervlet technol´ ogia HTTP-specifikus szervlet oszt´alyokat is tartalmaz a javax.servlet ´es a javax.servlet.http csomagok seg´ıts´eg´evel ´ırhatunk szervleteket mindegyik szervlet a Servlet interf´eszt kell implement´alja
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
A szervlet ´eletciklusa Egy szervlet ´eletciklus´at a web-kont´ener kezeli, melybe az illet˝o szervlet telep´ıtve volt. Ha egy k´er´es ´erkezik a szervlethez, a k¨ ovetkez˝ ok t¨ ort´ennek: 1
Ha a szervletnek m´eg nem l´etezik p´eld´anya (instanci´aja), akkor a web-kont´ener bet¨ olti a szervlet oszt´ alyt l´etrehoz egy instanci´ at, majd inicializ´ alja az init met´ odus seg´ıts´eg´evel
2
3
Az init met´odus rendszerint konfigur´aci´ obelovas´asra, er˝oforr´as inicializ´al´asra (pl. adatb´azishozz´af´er´es) haszn´alhat´o vagy b´armilyen egyszeri m˝ uvelet elv´egz´es´ere. Megh´ıvja a service met´ odus´at, ´atadva neki a k´er´es ´es v´alasz (request, response) objektumokat. Ha a kont´ener el kell t´avol´ıtsa a szervletet, megh´ıvja a destroy met´odus´at (az init p´arja: er˝oforr´asok felszabad´ıt´asa stb.)
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
A szervlet ´eletciklusa Egy szervlet ´eletciklus´at a web-kont´ener kezeli, melybe az illet˝o szervlet telep´ıtve volt. Ha egy k´er´es ´erkezik a szervlethez, a k¨ ovetkez˝ ok t¨ ort´ennek: 1
Ha a szervletnek m´eg nem l´etezik p´eld´anya (instanci´aja), akkor a web-kont´ener bet¨ olti a szervlet oszt´ alyt l´etrehoz egy instanci´ at, majd inicializ´ alja az init met´ odus seg´ıts´eg´evel
Az init met´odus rendszerint konfigur´aci´ obelovas´asra, er˝oforr´as inicializ´al´asra (pl. adatb´azishozz´af´er´es) haszn´alhat´o vagy b´armilyen egyszeri m˝ uvelet elv´egz´es´ere. 2 Megh´ıvja a service met´ odus´at, ´atadva neki a k´er´es ´es v´alasz (request, response) objektumokat. init, destroy, service 3 Ha a kont´ ener el kell t´avol´ıtsa a szervletet, megh´ıvja a destroy Az init ´ e s destroy egyszer h´ıv´ odik meg, a service pedig minden egyes met´odus´at k´er´esre. (az init p´arja: er˝oforr´asok felszabad´ıt´asa stb.)
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Inform´aci´omegoszt´as
A web-komponensek –ak´arcsak a legt¨ obb objektum– m´as objektumokkal egy¨ uttm˝ uk¨odve v´egzik el feladatukat. Ez a k¨ovetkez˝ok´eppen t¨ort´enhet: seg´edoszt´alyok seg´ıts´eg´evel nyilv´anos hat´ok¨or˝ u (public scope) objektumok attrib´ utumait oszthatj´ak meg m´as web-komponenshez tov´abb´ıtanak
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Nyilv´anos hat´ok¨or˝u objektumok (public scope objects)
A web komponensek n´egy (nyilv´anos hat´ ok¨ or˝ u) objektum attrib´ utumain kereszt¨ ul oszthatnak meg inform´aci´ ot. Az attrib´ utumok a [get—set]Attribute met´ odusokon kereszt¨ ul ´erhet˝ ok el
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Nyilv´anos hat´ok¨or˝u objektumok (public scope objects)
A web komponensek n´egy (nyilv´anos hat´ ok¨ or˝ u) objektum attrib´ utumain kereszt¨ ul oszthatnak meg inform´aci´ ot. Az attrib´ utumok a [get—set]Attribute met´ odusokon kereszt¨ ul ´erhet˝ ok el Scope Objektum Web kontextus
Oszt´ aly ServletContext
El´ erhet˝ o a web-alkalmaz´ason bel¨ uli web-komponensekb˝ol
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Nyilv´anos hat´ok¨or˝u objektumok (public scope objects)
A web komponensek n´egy (nyilv´anos hat´ ok¨ or˝ u) objektum attrib´ utumain kereszt¨ ul oszthatnak meg inform´aci´ ot. Az attrib´ utumok a [get—set]Attribute met´ odusokon kereszt¨ ul ´erhet˝ ok el Scope Objektum Web kontextus
Oszt´ aly ServletContext
Szesszi´o
HttpSession
El´ erhet˝ o a web-alkalmaz´ason bel¨ uli web-komponensekb˝ol web-komponensekb˝ol, amelyek egy szesszi´on bel¨ uli k´er´esekhez tartoznak
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Nyilv´anos hat´ok¨or˝u objektumok (public scope objects)
A web komponensek n´egy (nyilv´anos hat´ ok¨ or˝ u) objektum attrib´ utumain kereszt¨ ul oszthatnak meg inform´aci´ ot. Az attrib´ utumok a [get—set]Attribute met´ odusokon kereszt¨ ul ´erhet˝ ok el Scope Objektum Web kontextus Szesszi´o
K´er´es
Oszt´ aly ServletContext
El´ erhet˝ o a web-alkalmaz´ason bel¨ uli web-komponensekb˝ol HttpSession web-komponensekb˝ol, amelyek egy szesszi´on bel¨ uli k´er´esekhez tartoznak HttpServletRequest az adott k´er´est kezel˝ o web-komponensekb˝ol
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Nyilv´anos hat´ok¨or˝u objektumok (public scope objects)
A web komponensek n´egy (nyilv´anos hat´ ok¨ or˝ u) objektum attrib´ utumain kereszt¨ ul oszthatnak meg inform´aci´ ot. Az attrib´ utumok a [get—set]Attribute met´ odusokon kereszt¨ ul ´erhet˝ ok el Scope Objektum Web kontextus Szesszi´o
K´er´es (Oldal)
Oszt´ aly ServletContext
El´ erhet˝ o a web-alkalmaz´ason bel¨ uli web-komponensekb˝ol HttpSession web-komponensekb˝ol, amelyek egy szesszi´on bel¨ uli k´er´esekhez tartoznak HttpServletRequest az adott k´er´est kezel˝ o web-komponensekb˝ol JspContext a JSP-b˝ ol, amely l´etrehozza
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Service met´odusok ´ır´asa Service met´odus ´ır´asa: – egy do<Met´ odusn´ ev> f¨ ol¨ ul´ır´as´aban (overriding) nyilv´anul meg. A <Met´ odusn´ ev> lehet: Get , Delete , Options , Post , Put Egy ilyen met´odus – a k´er´es (request) objektumb´ ol kinyeri az inform´aci´okat, el´eri a k¨ uls˝o er˝oforr´asokat, be´all´ıtja a v´alasz (response) objektumot ezen inform´aci´ok alapj´an.
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Service met´odusok ´ır´asa Service met´odus ´ır´asa: – egy do<Met´ odusn´ ev> f¨ ol¨ ul´ır´as´aban (overriding) nyilv´anul meg. A <Met´ odusn´ ev> lehet: Get , Delete , Options , Post , Put Egy ilyen met´odus – a k´er´es (request) objektumb´ ol kinyeri az inform´aci´okat, el´eri a k¨ uls˝o er˝oforr´asokat, be´all´ıtja a v´alasz (response) objektumot ezen inform´aci´ok alapj´an. A v´alasz objektumot u ´gy ´all´ıtja be, hogy el˝osz¨or lek´er t˝ole egy output stream-et felt¨olti azt a v´ alasz fejl´ecekkel test (body) tartalommal
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Inform´ aci´ o kinyer´ ese a k´ er´ es objektumb´ ol
Inform´aci´o kinyer´ese a k´er´es objektumb´ol A k´er´es objektum– azokat az adatokat tartalmazza, melyeket a kliens (b¨ong´esz˝o) k¨ uld¨ott a szerver fel´e HTTP protokollon kereszt¨ ul. a ServletRequest interf´eszt implement´alja Ez az interf´esz a k¨ovetkez˝ o inform´aci´ ok el´er´es´et szolg´al´o met´odusokat tartalmaz: Param´ eterek el´ er´ ese: tipikusan a kliens ´altal (a HTML form keret´eben) k¨ uld¨ott inform´aci´ ok Pl. String id =request.getParameter("bookID"); Egy input stream-et is lek´erhet¨ unk a k´er´es objetumb´ol ´es a tartalm´at manu´alisan feldogozhatjuk. Karakter stream lek´er´es´ere a getReader-t haszn´alhatjuk, bin´ aris adatokhoz pedig a getInputStream-et.
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Inform´ aci´ o kinyer´ ese a k´ er´ es objektumb´ ol
Inform´aci´o kinyer´ese a k´er´es objektumb´ol A k´er´es objektum– azokat az adatokat tartalmazza, melyeket a kliens (b¨ong´esz˝o) k¨ uld¨ott a szerver fel´e HTTP protokollon kereszt¨ ul. a ServletRequest interf´eszt implement´alja Ez az interf´esz a k¨ovetkez˝ o inform´aci´ ok el´er´es´et szolg´al´o met´odusokat tartalmaz: Objektum attrib´ utumok: tipikusan a szervlet kont´ener ´altal biztos´ıtott objektumok, illetve egy szervlet ´altal l´etrehozott ´es a k´er´es objektumba betett objektumok, melyek ´ıgy m´as szervletekben is el´erhet˝ok lesznek (forward ´es include). Inform´aci´ok a haszn´alt protokollr´ ol, a kliensr˝ ol valamint a szerverr˝ol Lokaliz´ aci´ oval kapcsolatos inform´aci´ ok
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Inform´ aci´ o kinyer´ ese a k´ er´ es objektumb´ ol
K´er´es (request) URL
Egy HTTP k´er´es URL a k¨ ovetkez˝ o r´eszekb˝ ol ´all: http://[host ]:[port ][request path ]?[query string ] A request path a k¨ovetkez˝ o r´eszekre bonthat´ o tov´abb: Kontextus u ´t (context path): slash (’/’) ´es a szervletet tartalmaz´o web-alkalmaz´as kontextus gy¨ okere (context root) Szervlet u ´t (servlet path): slash (’/’) ´es a komponenst aktiv´al´o k´er´esnek megfelel˝o map-el´es
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Inform´ aci´ o kinyer´ ese a k´ er´ es objektumb´ ol
Param´eterek (query string) A query string ¨osszetev˝oi: param´eterek a nekik megfelel˝o ´ert´ekek Az egyes param´etereket a k´er´es objektumb´ ol a getParameter met´odussal nyerj¨ uk ki. K´etf´elek´eppen lehet query string-et gener´alni: Egy query string explicit m´ odon megjelenik az URL-ben Pl.
Text. A param´eter a k¨ovetkez˝ ok´eppen kaphat´ o meg: String parameter =request.getParameter("param1"); A query string hozz´aad´ odik az URL-hez, amikor egy HTML form elk¨ uld´ese (submit) a HTTP GET met´ odussal t¨ ort´enik. Megj.: HTTP POST met´ odus eset´en a paramet´erek a k´er´es test´eben (body) helyezkednek el.
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Szervlet map-el´esek megad´asa a web.xml-ben A szervletet deklar´alni kell: logikai nevet kell neki adni, meg kell adni az oszt´ alyt, amelyik implement´ alja esetleg inicializ´ al´ o param´etereket adhatunk meg neki
<servlet> <servlet-name>helloWorld <servlet-class>hello.HelloWorldEx
<param-name> initial <param-value> 10
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
A szervletet hozz´a kell rendelni (map-elni) egy vagy t¨obb web-er˝oforr´ashoz vagy URL mint´ ahoz <servlet-mapping> <servlet-name>helloWorld
/servlet/HelloWorldExample
Kliens´ allapot meg˝ orz´ ese
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
K´er´es/v´alasz sz˝ur´ese (filtering) A sz˝ ur˝o– m´ odos´ıthatja a k´er´es ´es v´alasz objektumok tartalm´at ez nem web-komponens abban az ´ertelemben, hogy nem hoz l´etre v´alaszt (response), csak m´ odos´ıtja azt egy funkcionalit´ast ad, amely hozz´arendelhet˝ o a web-komponenshez nem f¨ ugg a web-er˝oforr´ast´ ol, amihez hozz´a van rendelve F˝obb alkalmaz´asi ter¨ uletei: egy m´asik weboldalra ir´any´ıt ´at, valamilyen felt´etel f¨ uggv´eny´eben (pl. annak ellen˝orz´ese, hogy be van-e jelentkezve a felhaszn´al´o) m´odos´ıtja a k´er´es vagy v´alasz fejl´ec´et vagy adatait (kib˝ov´ıtett k´er´es ´es v´alasz oszt´alyok seg´ıts´eg´evel), k¨ uls˝o er˝oforr´asokkal kommunik´alhat
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
A gyakorlatban: azonos´ıt´as napl´oz´as (logging) k´ep-´atalak´ıt´as adats¨ ur´ıt´es titkos´ıt´as XML transzform´aci´ o stb. Egy web-er˝oforr´as eset´eben bekonfigur´alhat´ o, hogy nulla, egy vagy t¨obb sz˝ ur˝o legyen r´a alkalmazva a megfelel˝ o sorrendben. A sz˝ ur˝ok haszn´alata h´arom r´eszb˝ ol ´all: meg kell ´ırni a sz˝ ur˝ ot meg kell ´ırni a kib˝ov´ıtett k´er´es ´es v´alasz oszt´alyokat a telep´ıt´eskor mindegyik web-er˝ oforr´asnak meg kell adni a k´ıv´ant sz˝ ur˝o-l´ancot
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Sz˝ ur˝ o meg´ır´ asa
Sz˝ur˝o meg´ır´asa A sz˝ ur˝o API a k¨ovetkez˝o f˝ obb interf´eszekb˝ ol ´all: Filter, FilterChain, es FilterConfig Egy sz˝ ur˝o defini´al´as´ahoz a Filter interf´eszt kell implement´alni. A doFilter met´odus– param´eterk´ent kapja a k´er´es, v´alasz valamint a sz˝ ur˝ol´anc objektumokat l´etrehozza a kib˝ov´ıtett k´er´es ´es/vagy v´alasz objektumokat megh´ıvja a doFilter-t (a tov´abbi sz˝ ur˝ okre a l´ancb´ol) param´eterk´ent a kib˝ ov´ıtett objetumokat adva meg, ak´ar blokkolhatja is a k´er´est u ´gy, hogy nem h´ıvja meg a k¨ovetkez˝o sz˝ ur˝ot, de akkor ˝o a felel˝ os a v´alasz objektum felt¨ olt´es´e´ert a visszakapott kib˝ov´ıtett objetkumokkal m´ odos´ıthatja a k´er´es valamint v´alasz objetumokat
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Sz˝ ur˝ o meg´ır´ asa
A doFilter-en k´ıv¨ ul m´eg az init ´es destroy met´ odusokat is implement´alni kell. Az init akkor h´ıv´odik, mikor a kont´ener p´eld´anyos´ıtja a sz˝ ur˝ot. A param´etek´ent megadott FilterConfig-ban megkapjuk az inicializ´al´o param´etereket.
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Kib˝ ov´ıtett k´ er´ es ´ es v´ alasz oszt´ alyok
Kib˝ov´ıtett k´er´es ´es v´alasz oszt´alyok A sz˝ ur˝o sokf´elek´eppen m´ odos´ıthatja a k´er´es ´es v´alasz objetkumokat... Pl. megadhat egy attrib´ utumot a k´er´esbe vagy adatot sz´ urhat be a v´alaszba → Ez ut´obbihoz a sz˝ ur˝ o el kell kapja a v´alaszt m´eg miel˝ott az el lenne k¨ uldve a kliens fel´e. → Ehhez a szervletnek, amely a v´alaszt gener´alja egy stand-in adatfolyamot (stream) kell ´atadni. Egy ilyen adatfolyam megakad´alyozza a szervletet abban, hogy lez´arja az eredeti v´alasz-objektumot mikor v´egzett, ´es ´ıgy megengedi a sz˝ ur˝onek, hogy ut´ olagosan m´ odos´ıtsa a v´alaszt. → Ehhez a sz˝ ur˝o l´etrehoz egy kib˝ ov´ıtett v´alaszt (wrapper), aminek ´at´ırja a getWriter objektum´at, hogy ezt a stand-in adatfolyamot adja vissza. → Ezzel a kib˝ov´ıtett v´alasszal h´ıvja meg a doFilter-t
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Kib˝ ov´ıtett k´ er´ es ´ es v´ alasz oszt´ alyok
A k´er´es kib˝ov´ıt´es´ehez a HttpServletRequestWrapper oszt´alyt kell kib˝ ov´ıteni, a v´alasz kib˝ov´ıt´es´ehez a HttpServletResponseWrapper oszt´alyt
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Sz˝ ur˝ o hozz´ arendel´ esek megad´ asa
Sz˝ur˝o hozz´arendel´esek (map-el´esek) megad´asa
A web-kont´ener a sz˝ ur˝o hozz´arendel´esek alapj´an alkalmazza a sz˝ ur˝oket az egyes web-er˝oforr´asokra. Egy sz˝ ur˝o map-el´es hozz´arendel egy sz˝ ur˝ot egy web-komponenshez egy n´ev alapj´an egy sz˝ ur˝ot web-er˝oforr´asokhoz URL mint´ak (pattern) szerint A sz˝ ur˝ok olyan sorrendben lesznek megh´ıvva, amilyen sorrendben a sz˝ ur˝o hozz´arendel´esben megjelennek.
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Sz˝ ur˝ o hozz´ arendel´ esek megad´ asa
A telep´ıt´esle´ır´oban (deployment descriptor): Deklar´alni kell a sz˝ ur˝ ot: nevet kell neki adni, meg kell adni az oszt´ alyt, amelyik implement´ alja inicializ´ al´ o param´etereket lehet adni neki
Pl.
Servlet Mapped Filter filters.ExampleFilter <param-name> name <param-value> value
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Sz˝ ur˝ o hozz´ arendel´ esek megad´ asa
A telep´ıt´esle´ır´oban (deployment descriptor): Map-elni kell a sz˝ ur˝ ot egy web-er˝ oforr´ashoz vagy egy URL mint´ahoz Pl.
Servlet Mapped Filter <servlet-name>invoker Path Mapped Filter /servlet/*
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Sz˝ ur˝ o hozz´ arendel´ esek megad´ asa
A telep´ıt´esle´ır´oban (deployment descriptor): Korl´atozni lehet, hogy mikor legyen a sz˝ ur˝ o alkalmazva: REQUEST : amikor a k´er´es direkt a klienst˝ ol j¨ on FORWARD : ha a k´er´es tov´ abb´ıtva (forward) lett a komponenshez INCLUDE : ha a k´er´est egy be´ agyazott komponens kapja ERROR : a k´er´es az error lappal van feldolgozva
Egy web-er˝oforr´ashoz ak´arh´any k¨ ul¨ onb¨ oz˝ o sz˝ ur˝ o rendelhet˝o ´es ugyanaz a sz˝ ur˝o t¨obb web-er˝oforr´ashoz is hozz´arendelhet˝ o.
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
M´as web-er˝oforr´as h´ıv´asa
Direkt vagy indirekt m´odon t¨ ort´enik. Indirekt m´odon akkor, ha a web-komponens a v´alaszban tartalmaz egy URL-t, amelyik egy m´asik web-komponensre mutat. Direkt m´odon k´etf´elek´eppen: egy web-komponens mag´ abafoglalhatja egy m´ asik web-komponens tartalm´ at (include) tov´ abb´ıthatja a k´er´est egy m´ asik komponenshez (forward)
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Ahhoz, hogy el´erj¨ unk egy er˝ oforr´ast, amelyik egy web-komponenst futtat, el˝osz¨or egy RequestDispatcher objektumot kell lek´erj¨ unk a getRequestDispatcher(URL) met´ odussal. A RequestDispatcher objektumot k´et m´ odon lehet lek´erni: a k´er´es objektumt´ol a webkontextus objektumt´ ol A k´er´es objektumb´ ol lek´ert RequestDispatcher eset´eben az URL lehet relat´ıv (nem /-el kezd˝ od˝ o), A web-kontextust´ol lek´ert eset´eben viszont az URL abszol´ ut kell legyen. Ha az er˝oforr´as nem el´erhet˝ o, null-t kapunk vissza.
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
M´ as er˝ oforr´ asok besz´ ur´ asa a v´ alasz objektumba
M´as er˝oforr´asok besz´ur´asa a v´alasz objektumba Sokszor hasznos lehet, hogy egy web er˝ oforr´ast besz´ urjunk egy m´asikba pl. jogv´edelmi inform´aci´ okat (copyright) → Ehhez a RequestDispatcher include(request, response) met´odus´at haszn´alhatjuk. Megszor´ıt´asok a v´alasz objektum tekintet´eben: A besz´ urt web-komponens ´ırhat ugyan a response tartalm´aba (body), de nem ´all´ıthatja a fejl´eceket nem h´ıvhat olyan met´ odust, ami a v´alasz objektum fejl´ec´et ´erinti. (pl. setCookie). ami ilyenkor t¨ort´enik: a k´er´es el lesz k¨ uldve a besz´ urt web-komponens elv´egz˝ odik majd a keletkezett tartalom besz´ ur´ odik a k¨ uls˝ o szervlet ´altal gener´alt v´alasz objektumba
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
K´ er´ es tov´ abb´ıt´ asa egy m´ asik web-komponenshez
K´er´es tov´abb´ıt´asa egy m´asik web-komponenshez
Sok web-alkalmaz´asban van egy web-komponens, mely egy el˝ofeldogoz´ast v´egez ´es ett˝ol f¨ ugg˝oen tov´abb´ıt egy m´asik komponenshez, amely a v´alaszt gener´alja (l´asd k´es˝ obb MVC, Struts). Ahhoz, hogy a egy k´er´est egy m´asik web-komponenshez tov´abb´ıtsuk a RequestDispatcher forward met´ odus´at haszn´aljuk. Megszor´ıt´asok: Ha a ServletOutputStream vagy a PrintWriter objektumokat m´odos´ıtottuk a tov´abb´ıt´as el˝ ott, akkor a tov´abb´ıt´askor IllegalStateException hib´at kapunk.
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
K´ er´ es tov´ abb´ıt´ asa egy m´ asik web-komponenshez
Hozz´af´er´es web-kontextushoz
A kontextus, amelyben a web-komponensek elv´egz˝ odnek egy ServletContext interf´eszt implement´al´ o objektum. Ezt meg lehet kapni a szervlet getServletContext met´odus´aval. A ServletContext-en kereszt¨ ul t¨ obbek k¨ oz¨ ott az al´abbiak ´erhet˝ok el: Inicializ´al´o param´eterek A web-kontextushoz rendelt er˝ oforr´asok Objektum attrib´ utumok Napl´obe´all´ıt´asok (logging)
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Kliens´allapot meg˝orz´ese Sok alkalmaz´as eset´eben sz¨ uks´eg van arra, hogy az azonos felhaszn´al´ot´ol j¨ov˝o k´er´esek ¨ossze legyenek kapcsolva egym´assal. Pl. bev´as´arl´okos´ar A web-alkalmaz´asok felel˝ osek ennek a megvalos´ıt´as´a´ert, mivel a HTTP protokoll ´allapot n´elk¨ uli (stateless). A Java szervlet technol´ogia egy API-t k´ın´al a szesszi´ o kezel´es´ere. A szesszi´ot egy HttpSession objektum k´epviseli. Lek´erhet˝o a k´er´es (request) objektumt´ ol a getSession met´odussal. Ez visszaadja az aktu´alis szesszi´ ot vagy ha m´eg nincs, akkor l´etrehoz egyet. A szesszi´ohoz objektum-alap´ u attrib´ utumokat lehet rendelni. Ezek egy adott web-kontextuson bel¨ ul b´armelyik web-komponensb˝ol hozz´af´erhet˝oek.
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
A szesszi´ohoz hozz´arendelt objektumok ´ertes´ıt´ese
A szesszi´ohoz hozz´arendelt objektumok ´ertes´ıt´ese Az alkalmaz´as ´ertes´ıtheti a web-kontextushoz valamint a szesszi´ohoz rendelt objektumokat bizonyos esem´enyek bek¨ ovetkeztekor: Amikor egy objektum hozz´aad´ odik vagy elt´avol´ıt´ odik a szesszi´ob´ol. → Hogy ezt az ´ertes´ıt´est megkapja az objektum a HttpSessionBindingListener interf´eszt kell implement´ alja.
Amikor a szesszi´o, amelyhez az objektum hozz´a van rendelve passziv´alva vagy aktiv´alva (perszisztensen lementve majd visszat¨oltve) van. → Hogy ezt az ´ertes´ıt´est megkapja az objektum a HttpSessionActivationListener interf´eszt kell implement´ alja.
Inform´ aci´ omegoszt´ as
Service met´ odusok
Szervlet map-el´ es web.xml-ben
K´ er´ es/v´ alasz sz˝ ur´ ese
M´ as web-er˝ oforr´ as h´ıv´ asa
Kliens´ allapot meg˝ orz´ ese
Szesszi´o k¨ovet´es Szesszi´o k¨ovet´es A web-kont´ener t¨obb met´ odust haszn´alhat arra, hogy egy felhaszn´al´ohoz egy szesszi´ot rendeljen, ami azzal j´ar, hogy egy azonos´ıt´o k¨ uld˝odik a kliens ´es szerver k¨oz¨ott. Ez az azonos´ıt´o elt´arolhat´ o egy s¨ utiben (cookie) minden egyes URL-ben, amit a kliens megkap Ha az alkalmaz´as szesszi´ ot haszn´al, akkor biztos´ıtani kell azt, hogy a szesszi´ok¨ovet´es m˝ uk¨odik a s¨ utik kikapcsol´asa eset´eben is. Ezt az URL-´at´ır´assal valos´ıthatjuk meg az encodeURL(URL) met´odus h´ıv´as´aval minden egyes URL-re, amit a szervlet visszaad. Ez a met´odus hozz´af˝ uzi a szesszi´ o ID-t az URL-hez, ha a s¨ utik ki vannak kapcsolva.