
Ostatnio poznaliśmy podstawowe wykorzystanie Cookies. Dzisiaj przyjdzie czas na sesje. Protokół komunikacji między klientem a aplikacją WWW czyli HTTP został zaprojektowany jako bezstanowy. Oznacza to, że serwer nie jest w stanie określić czy dane żądanie HTTP pochodzi od tego samego użytkownika, czy od innych niezależnych użytkowników. Problem ten rozwiązano wprowadzając mechanizm emulacji sesji - HTTPSession. Zasada tego mechanizmu nie jest skomplikowana. Każdy klient dostaje od serwera niepowtarzalny identyfikator - identyfikator sesji. Zazwyczaj jest on zapisywany w zmiennej Cookie. Dzięki takiemu rozwiązaniu serwer aplikacji otrzymuje identyfikatoe przy ponownym żądaniu tego samego użytkownika. Serwer aplikacji posiada tablice sesji gdzie dany identyfikator skojarzony jest zbiór programowych obiektów JAVA, które reprezentują stan sesji. Jako, że serwlety w technologii JEE są mechanizm nazwijmy to niskopoziomowym mają one możliwość odczytu i zapisu obiektów odpowiadających za stan sesji. Wykorzystują do tego obiekt sesji. Jest on obiektem interfejsu
HTTPSession. Stan sesji może zostać usunięty po przekroczeniu pewnego limitu czasowego lub po przez jawne usunięcie.
HttpSession session = request.getSession(true);
Podaje aktualną sesję lub tworzy nową. Gdyby podano parametr
false
, to nowa sesja nie będzie tworzona. Jeśli nie ma jeszcze sesji, metoda zwróci
null
.
Znowu przytoczę przykład z książki " JAVA EE6 programowanie aplikacji WWW". Poniższy kod sprawdza czy dane żądanie jest pierwszym żądaniem użytkownika danej sesji.
Oto najważniejsze metody interfejsu HTTPSession:
METODA
void setAttribute(n,o) | Opis
Zapamiętuje na czas sesji obiekt pod podaną nazwą |
String getId() | Zwraca aktualny identyfikator sesji. |
boolean isNew() | Zwraca wartość true, jeśli klient nie odesłał jeszcze żądania z danym
identyfikatorem sesji. |
long getCreationTime() | Zwraca czas utworzenia sesji. |
long getLastAccessedTime() | Zwraca czas otrzymania przez kontener ostatniego żądania z danym
identyfikatorem sesji. |
void setMaxInactivateInterval(int) | Ustawia maksymalny czas (wyrażony w sekundach) pomiędzy kolejnymi żądaniami klienta w ramach danej sesji. |
int getMaxInactiveInterval() | Zwraca maksymalny czas (wyrażony w sekundach) pomiędzy kolejnymi żądaniami klienta w ramach danej sesji. |
void invalidate() | Kończy sesję. |
Oto inne wykorzystanie mechanizmu sesji. W poniższym kodzie następuje mieszczenie nowego obiektu stanu sesji.
Następnie odczytujemy zapisany wcześniej obiekt stanu.
Jest to jedynie bardzo proste wykorzystanie sesji w celach edukacyjnych. Więcej możemy znaleźć w fachowej literaturze lub na stronach oracle. Temat miał jedynie pokazać czym są sesje i po co je stosujemy. Jeśli zamierzamy w przyszłości tworzyć aplikacje WWW musimy poszerzyć swoją wiedzę z tego zakresu.
The Buffet at Harrah's Las Vegas - Mapyro
OdpowiedzUsuńThe Buffet at Harrah's Las Vegas. Directions · (702) 770-7000. Call Now · Full 광주 출장안마 menu · More Info. Hours, 양주 출장마사지 Accepts Credit Cards, Attire, Wi-Fi, Parking. Rating: 4 · 전주 출장마사지 3,215 reviews · 경상남도 출장샵 Price 보령 출장안마 range: $$