piątek, 19 sierpnia 2011

JAVA EE6 Programowanie aplikacji WWW KURS cz.5 Serwlety - Sesje

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.

Reakcje:

0 komentarze:

Prześlij komentarz