java képzés - java cervlety - megtakarítás a kliens állapotát
Pálya munkamenet egy mechanizmus, amely servletek használt fenntartani a status között több kérelem ugyanannak a felhasználónak (kérések készült ugyanabban a böngészőablakban) egy bizonyos ideig.
Sessions által használt különböző servleteket eléréséhez ugyanazt ügyfél. Ez akkor hasznos, készült alkalmazások több kiszolgálón. Például Duke Könyvesbolt használ ülésén követési tartani a könyveket, az ügyfél által kiválasztott. Minden servlet a példa van, hogy felhasználói munkamenet.
Ahhoz, hogy használni munkamenet érvényessége:
Első ülés
Módszer getSession HttpServletRequest objektum visszaadja a felhasználói munkamenetet. Amikor hívja ezt a módszert, hogy hozzon létre egy érv, hogy igaz. A futási létrehoz egy munkamenet, ha szükséges.
Ahhoz, hogy megfelelően megszervezni a munkamenet, akkor hívja getSession eljárás előtt a válasz kimeneti stream indul. (Ha a válasz a Writer. Meg kell hívni getSession módszert. Mielőtt hozzáférést kap az író. Mielőtt a válasz adatokat.)
Duke Könyvesbolt a példa ülésén nyomkövető nyomon követni a könyvek a kosarat egy felhasználó vásárol. Íme egy példa servlet CatalogServlet létrehozó felhasználó munkamenet:
Tárolására és visszakeresésére adatkapcsolat
A HttpSession interfész módszerek tárolására és visszatérő adatok:
- Normál ülés tulajdonságok, mint például a munkamenet-azonosítót.
- Ezek az alkalmazások, amelyek tárolják párban a nevét a gombot, amikor a nevét egy string (karakterlánc) és értéke - Java objektum. (Ahogy java.util.Dictionary.) Mivel az Ön által használt több servleteket hogy hozzáférjen a felhasználó munkamenete, akkor ki kell választani a feltételes elnevezési segítségével a nevek megfelelő felhasználói adatokat. Ez lehetővé teszi, servleteket hogy elkerülje a véletlen felülírását néhány más változókkal. Az egyik ilyen egyezmény servletname.name. servletname hol van a teljes neve a servlet, beleértve a csomagot. Például com.acme.WidgetServlet.state ezen a lapon a nevét és a servlet com.acme.WidgetServlet állam.
Duke Könyvesbolt a példa ülésén nyomkövető nyomon követni a könyvek a kosarat egy felhasználó vásárol. Itt egy példa CatalogServlet servlet fogadja a felhasználói munkamenet azonosítót, ami lesz, és beállítja a megfelelő adatokat az ülésen a felhasználó:
Mivel a tárgy köthető az ülés, herceg Könyvesbolt például tartja a könyvet a felhasználó által kiválasztott az objektumban. Ez a típusú objektumot ShoppingCart és minden könyv a felhasználó által kiválasztott tárolja a kosárba, azaz az objektum ShoppingCartItem. Például, itt van, hogy mi történik ebben az esetben az eljárás a servlet doGet CatalogServlet:
Összefoglalva, azt látjuk, hogy az ülés lehet fejleszteni, mint az új. Új munkamenet - ha isNew HttpSession osztály metódus visszaadja igaz. mutatja például, hogy az ügyfél nem a munkamenet újra. Az új munkamenet adatok még nem jár.
Meg kell kezelni a helyzetet az új munkamenetet. A Duke Könyvesbolt fenti példában, ha a felhasználó nem rendelkezik a kosár (az egyetlen társított adatok ülés), a servlet létrehoz neki egy újat. Másrészt, ha szüksége van egy felhasználó adatait, hogy nyit egy kapcsolatot (például a felhasználó név), akkor átirányítja a felhasználót, hogy a „honlap”, ami elviszi az összes szükséges információt.
Következtetés Az ülésszak
felhasználói munkamenet lehet kitölteni kézzel vagy, attól függően, melyik fut egy servlet automatikusan. (Például Java Web Server automatikusan lekapcsolja az ülés, ha nincs kérés, az alapértelmezett érték 30 perc, még egy bizonyos ideig.) End Session eltávolítását jelenti HttpSession tárgy és annak értékeit a rendszerből.
Manuális esemény befejezéséhez használja a módszer érvényteleníti az ülésen. Néhány program már egy ilyen pont, ahol van a befejezése az ülésen. Duke Könyvesbolt például befejezi a felhasználói munkamenet miután végzett a könyvek. Ez akkor fordul elő egy servlet ReceiptServlet:
Kezelje az összes böngésző
Alapértelmezés szerint munkamenet nyomkövető használ könyvjelzők társítani egy azonosítót egy felhasználói munkamenetet. Hogy is támogatják a felhasználókat, hogy a böngésző nem működik könyvjelzők, vagy benne van a módban figyelmen kívül hagyja őket, akkor használja az újraírás URL. (Mivel néhány szerver támogatja a átírásához, amely része a közüzemi servletrunner JSDK2.0 nem támogatja ezt. Annak érdekében, hogy nyomon követése ülésén dolgozni, ha a servlet fut, a servletrunner. Az ügyfél támogatja a könyvjelzőket.)
Amikor az átírásához, akkor hívja a módszerek, ha szükséges, úgy, hogy az azonosító szerepel a link. Akkor érdemes használni ezeket a módszereket minden link a servlet választ.
Megjegyzés: Itt a kód, amely nem része a herceg Könyvesbolt például JSDK2.1. Duke Könyvesbolt példa lehet hasonló kód a következő, ha használják, hogy felülírja az URL. Mivel az URL átírása nem része egy példát Duke Könyvesbolt. Feltételezzük, hogy a pszeudo kódot.
Ha a herceg Könyvesbolt használt példa felülírni URL, akkor kódot servlet CatalogServlet nézhet a következő:
Amikor a felhasználó rákattint a hivatkozásra átírt URL, a servlet meghatározza és kivonja a munkamenet-azonosítót. Következő getSession alkalmazott módszer. így kapjuk a megfelelő munkamenet azonosító HttpSession objektumot
Ezzel szemben, ha a felhasználó böngészője nem támogatja a könyvjelzőket és a felhasználó rákattint az URL nem átírt, a felhasználói munkamenet elveszett. Servlet kölcsönható ezen a linken keresztül létrehoz egy új munkamenetet és új szakaszt nem tartalmaz adatokat a megfelelő előző ülésen. Ha a servlet veszít munkamenet adatait, az adatok elvesznek az összes servlet használja őket. Akkor is használja a átírásához módszerek, ha azt szeretné, servlet, hogy támogassa az ügyfelek, akik nem dolgoznak, vagy nem támogatja a könyvjelzőket.