AWWW-1st3.6-w05.tresc-1.0-Slajd29
Sesje HTTPSession
Protokół HTTP został zaprojektowany jako bezstanowy, co oznacza, że serwer HTTP nie potrafi rozpoznać czy określone żądania HTTP pochodzą od tego samego użytkownika końcowego, czy od użytkowników niezależnych. Ponieważ wiele zastosowań serwletów Java wymaga korelowania żądań HTTP, dlatego zaproponowano mechanizm emulacji sesji nazwany HTTPSession.
Idea mechanizmu HTTPSession opiera się na założeniu, że serwer aplikacji generuje dla każdego klienta HTTP niepowtarzalny identyfikator, nazywany identyfikatorem sesji. Identyfikator ten jest zwykle zapisywany w zmiennej Cookie, dzięki czemu powraca do serwera aplikacji przy każdym kolejnym żądaniu HTTP zgłaszanym przez tego samego klienta HTTP. Po stronie serwera aplikacji znajduje się tzw. tablica sesji, w której z każdą wartością identyfikatora sesji związany jest zbiór programowych obiektów Java reprezentujących stan sesji. Serwlety Java mają możliwość odczytu i zapisu obiektów w tym zbiorze za pośrednictwem tzw. obiektu sesji, będącego obiektem interfejsu javax.servlet.http.HTTPSession. Powiązanie wywołanego serwletu Java ze zbiorem obiektów sesji konkretnego klienta HTTP jest automatycznie realizowane przez serwer aplikacji.
Stan sesji klienta HTTP jest przechowywany przez serwer aplikacji aż do momentu jego jawnego usunięcia przez serwlet Java, bądź po przekroczeniu czasu nieaktywności zdefiniowanego przez administratora serwera aplikacji.