Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit
´ ak ´ – 4. eload ˝ as ´ Java technologi ´ Esemenyfigyel ´ ˝ Menetkezeles. ok. ˝ Szur ˝ ok.
Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
ANTAL Margit Sapientia - EMTE
2009
˝ as ´ celja ´ A 4. eload
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨
´ 1. Menetkezeles I I I
´ sutik Munkamenetek es ¨ ´ A HttpSession interfesz ´ URL ujra´ ´ ıras
´ ˝ 2. Esemenyfigyel ok ˝ 3. Szur ˝ ok
´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
´ menetkovet ¨ ´ HTTP es es
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨
I
´ A HTTP egy allapotmentes protokoll: minden ´ es-v ´ alasz ´ ´ ol ´ fuggetlen. ker kapcsolat egymast ¨
I
´ A webkontener feladata egy olyan mechanizmus ´ ´ ´ ´ okat ´ letrehoz asa, amely tarolja a menetinformaci ´ ugyfelenk ent. ¨
´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
´ or ¨ Meneti hatok
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
´ or ¨ [IMRE] Figure: Meneti hatok
Sutik ¨ I
I
I
I
´ ´ ukkel A sutiket a HTTP protokoll specifikalja, seg´ıtseg ¨ ¨ ¨ ´ okat ´ ´ kis, szoveges informaci lehet tarolni kliensoldalon. ´ A sutiket a webszerver (webkontener) kuldi ¨ ¨ a ¨ esz ´ o). ˝ A sutit ´ kliensnek (bong ¨ a Set Cookie fejlecben kuldi: ¨ Set Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN;secure ´ a bong ¨ esz ´ o˝ egy adott tartomanyhoz ´ ´ Miutan eltarolt ¨ o˝ osszes, ¨ egy sutit, az adott ¨ az ezt kovet ´ ´ ´ esben ´ tartomanyhoz intezett ker ezt visszakuldi. ¨ ´ asa ´ kliensoldalon tort ¨ enik. ´ A sutik ¨ tarol
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
´ ¨ esz ´ onek ˝ Suti ¨ elkuld ¨ ese a bong Set Cookie: NAME=VALUE; expires=DATE; path=PATH; domain=DOMAIN;secure
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
´ Sutik ¨ tulajdonsagai Perzisztencia
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit
I
´ ha a suti perzisztens (maradando): ¨ tartalmazza az ´ expires tulajdonsagot
Munkamenetek ´ sutik es ¨
I
´ eppen ´ nem perzisztens: mask – ebben az esetben a ¨ esz ´ o˝ bezar ´ asakor ´ ¨ odik ˝ bong torl
´ ˝ Esemenyfigyel ok
I
´ a suti ¨ esz ´ o˝ letorli ¨ ha lejar ¨ ideje, a bong
´ Biztonsag I
I
secure: csak HTTPS kapcsolaton keresztul ¨ kuldhet o˝ ¨ ´ eppen: ´ ´ HTTPS kapcsolaton is mask HTTP es
´ URL ujra´ ´ ıras
˝ Szur ˝ ok
¨ esz ´ oben ˝ Sutik ¨ a bong
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
´ ¨ esz ´ ob ˝ ol ˝ Suti ¨ visszakuld ¨ ese bong ´ Cookie fejlecben Cookie: NAME1=VALUE1; NAME2=VALUE2; NAME3=VALUE3;
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
HttpSession API
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
Figure: A HttpSession API [FJ310]
¨ ´ Servlet API - menetkovet es I
I
I
´ ´ A webkontener minden egyes ugyfel ehez hozza´ van ¨ rendelve egy HttpSession objektum. ´ okat ´ ´ ´ ol, ˝ Ez az objektum informaci tarol az ugyf ¨ elr ˝ e´ teszi az illeto˝ ugyf ´ illetve lehetov tartozo´ ¨ elhez ´ ok ´ mentes ´ et. ´ menetinformaci ´ ´ A menet elettartama lejarhat: I
I
I
I
˝ beall´ ´ ıtott tetlens ´ ´ ido˝ automatikusan, egy elore egi ´ elteltevel, ´ vezerl ´ essel. ´ kezi
´ enytelenn ´ ´ Ha egy menet erv e´ valik, akkor a ´ ¨ ´ o´ elvesztodik ˝ menetobjektumbol az osszes informaci ´ okat ´ Ha az informaci nem akarjuk elvesz´ıteni ⇒ ´ bejelentkezese+ment ´ ´ adatbazisba. ugyf es ¨ el
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
´ ´ Menet lejarati ideje – deklarat´ıv modszer
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit
´ web.xml telep´ıtesle´ ıro´ – az ido˝ percben kifejezve
Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras
<web-app> <session-config> <session-timeout> 60
´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
´ Menet lejarati ideje – programozott ´ modszer
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit
´ az ido˝ masodpercben van kifejezve
Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok
public interface HttpSession{ void invalidate(); long getCreationTime(); long getLastAccessedTime(); int getMaxInactiveInterval(); void setMaxInactiveInterval(int); }
˝ Szur ˝ ok
´ ´ Menet lejarati idejenek helyes ´ ´ megvalaszt asa
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨
I
I
I
I
´ ´ a lejarati ´ ¨ Banki alkalmazasokn al ido˝ nagyon rovid – ´ okok. biztonsagi ´ ´ o´ menetek is Adatbazis kapcsolatokat tarol ´ ´ ıtjak ´ a lejarati ´ ˝ minimalisra all´ idot. ´ ¨ eges ´ Ha a menet nem tarol kolts objektumkat, a ´ ´ ´ hosszabb. menet lejarati ido˝ lehet a szokasosn al ´ arl ´ o´ kocsi tartalmat ´ tarol ´ o´ menetek hosszu´ Bevas ´ uak. lejarat ´
´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
´ ´ Szervlet – doGet metodus – Mit csinal?
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok.
response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); ANTAL Margit HttpSession session=request.getSession(); Munkamenetek Integer counter = ´ sutik es ¨ (Integer)session.getAttribute("counter"); URL ujra´ ´ ´ ıras if( counter == null) ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok counter=new Integer(1); else counter=new Integer(counter.intValue()+1); session.setAttribute("counter",counter); out.println("<TITLE> Session Counter"); out.println(""); out.println("You have visited this page "+ counter+" times"); out.println(""); out.println("");
¨ ´ Sutik ¨ – osszefoglal as
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit
I I I
I
I
A sutiket a webszerverek kuldik. ¨ ¨ ´ gepe ´ ´ A sutiket az ugyf tarolja. ¨ ¨ el
Munkamenetek ´ sutik es ¨
´ bong ¨ esz ´ oje ˝ a webszerver A sutiket az ugyf ¨ ¨ el ´ ´ ´ ´ tartomanynev ehez asszocialva tarolja.
´ ˝ Esemenyfigyel ok
´ esben, ´ Minden egyes ker amely egy bejegyzett ´ aba ´ ¨ enik, ´ webszerver irany tort a hozza´ tartozo´ ¨ ´ osszes suti kerul. ¨ is elkuld ¨ esre ¨ ´ ´ a szerveroldal all´ ´ ıtja be a suti A sutik at ¨ elettartam ¨ ´ ´ az ugyf ´ bong ¨ esz ´ oje ˝ kezeli. kuld es ¨ esekor, ¨ el
´ URL ujra´ ´ ıras
˝ Szur ˝ ok
´ A menetobjektum hasznalata – szerveroldal I I
´ ´ – JSESSIONID, tarolja a menetazonos´ıtot ´ objektumokat is tarolhat. ´ mas
´ asa ´ ´ orbe ¨ Objektum regisztral meneti hatok
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok
HttpSession session = request.getSession(); Course course = new Course("Java SE", "Java Standard Edition", 1000); session.setAttribute("course", course); ˝ ´ ´ orb ¨ ol ˝ Objektum elokeres ese meneti hatok HttpSession session = request.getSession(); Course c = (Course)session.getAttribute("course");
˝ Szur ˝ ok
´ Adatok kuld ¨ ese sutikben ¨ ´ (JSESSIONID) k´ıvul ´ adatot is Ha a menetazonos´ıton ¨ mas ´ szeretnenk kuldeni ... ¨ ´ Kuld ¨ es String name = request.getParameter("name"); Cookie c = new Cookie("yourname",name); response.addCookie(c); ´ Fogadas String name=null; Cookie[] cookies = request.getCookies(); for( int i=0; i
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
¨ esek ´ Megkot a sutikkel ¨ kapcsolatosan
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit
I
I I
I
´ az alapertelmezett ´ ´ A sutik menetkezelesi ¨ alkotjak mechanizmust. ¨ esz ´ ok ˝ nem engedelyezik ´ Bizonyos bong a sutiket. ¨ ´ ´ enek ´ ´ ´ Sutik eg lekerdez ese: ¨ engedelyezetts HttpServletRequest --> isRequestedSessionIdFromCookie ´ tartalmazo´ suti A menetazonos´ıtot ¨ neve: JSESSIONID
Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
´ URL ujra´ ´ ıras
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit
I
I I
I
´ oja ´ elo´ ˝ ırja, hogy azoknal ´ a A szervletek specifikaci ¨ esz ´ okn ˝ el ´ is kell tamogatni ´ ¨ est, ´ bong a menetkovet amelyek nem fogadnak sutiket. ¨ ´ as ´ az URL ujra´ ´ Egyik sutihelyettes´ ıto˝ eljar ´ ıras. ¨ ´ kevesb ´ e´ elegans ´ es ´ atl ´ athat ´ ´ mint a Az URL ujra´ o, ´ ıras sutik. ¨ ´ a statikus HTML lapokat is dinamikusan kell Meg ´ ıtani, mert URL modos´ ´ ´ lesz minden egyes elo˝ all´ ıtas ´ FORM tagban A-HREF es
Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok ˝ Szur ˝ ok
´ URL ujra´ ´ ırasa: encodeURL
Java ´ ak ´ – technologi ˝ as ´ 4. eload ´ Menetkezeles. ´ ˝ Esemenyfigyel ok. ˝ Szur ˝ ok. ANTAL Margit Munkamenetek ´ sutik es ¨ ´ URL ujra´ ´ ıras ´ ˝ Esemenyfigyel ok
out.println("