Prej temu nisem posvečal veliko pozornosti, ko sem se učil, a danes sem se vrnil in natančno preučil življenjski cikel seje. Seje se shranjujejo na strežniški strani, in običajno, da bi preprečili, da bi bile v strežniškem pomnilniku (za hiter dostop), Sessinon ustvari prvič, ko uporabnik dostopa do strežnika.Upoštevajte, da le dostop do JSP, Servlet in drugih programov ustvari sejo, in dostop do statičnih virov, kot sta HTML in IMAGE, ne ustvari seje.
Kdaj poteče seja?
1. Strežnik bo izbrisal sejo iz strežniškega pomnilnika, ki je bila dolgo časa neaktivna, in seja bo neveljavna. Privzeti čas trajanja seje v Tomcatu je 20 minut.
2. Pokliči metodo razveljavitve seje.
Zahteve za sejo za brskalnike:
Čeprav je seja shranjena na strežniku in je za odjemalca pregledna, njeno običajno delovanje še vedno zahteva podporo brskalnika odjemalca. To je zato, ker mora Session uporabljati piškotke kot identifikator. HTTP protokol je brez stanja in HTTP povezava ne more presoditi seje, da bi ugotovila, ali gre za isto stranko, zato strežnik pošlje piškotek z imenom JSESSIONID brskalniku odjemalca, ki vsebuje vrednost ID-ja seje (torej povratno vrednost HttpSession.getId()). Session uporablja piškotek za ugotavljanje, ali gre za istega uporabnika.
Ta piškotek samodejno generira strežnik, njegov atribut maxAge pa je običajno -1, kar pomeni, da je veljaven le v trenutnem brskalniku, ni deljen med okni brskalnika in ne bo veljaven, ko je brskalnik zaprt. Zato, ko na istem računalniku dostopata do strežnika dve okni brskalnika, se ustvarita dve različni seji. Razen za nova okna, ki jih odprejo povezave, skripte itd. znotraj okna brskalnika (tj. ne okna, ki se odprejo z dvojnim klikom na ikone namiznega brskalnika itd.). Ta otroška okna si delijo piškotek starševskega okna in s tem sejo.
Opomba: Nove seje se generirajo v na novo odprtih oknih brskalnika, razen v podoknih. Otroško okno si deli sejo starševskega okna. Na primer, ko z desnim klikom kliknete na povezavo in izberete "Odpri v novem oknu" v bližnjici, ki se pojavi, lahko otroško okno dostopa do seje starševskega okna.
Kaj pa, če brskalnik odjemalca onemogoči piškotke ali piškotke ne podpira? Na primer, velika večina mobilnih brskalnikov ne podpira piškotkov. Java Web ponuja še eno rešitev: prepisovanje URL naslovov. Prepisovanje URL naslovov je rešitev za odjemalce, ki ne podpirajo piškotkov. Načelo prepisovanja URL naslovov je, da se ID informacije uporabnikove seje prepišejo v URL naslov. Strežnik lahko analizira prepisani URL, da pridobi ID seje. Na ta način, tudi če odjemalec ne podpira piškotkov, se seja lahko uporabi za beleženje uporabniškega stanja. Razred HttpServletResponse zagotavlja encodeURL (String url) za izvajanje prepisovanja naslovov URL, kar samodejno določa, ali odjemalec podpira piškotke. Če odjemalec podpira piškotke, bo URL izpisan takšen, kot je. Če odjemalec ne podpira piškotkov, se id uporabniške seje ponovno zapiše v URL.
Opomba: TOMCAT določa, ali brskalnik odjemalca podpira piškotke glede na to, ali je piškotek vključen v zahtevo. Čeprav odjemalec lahko podpira piškotke, ker se na prvi zahtevi ne prenašajo piškotki (ker ni piškotkov, ki bi jih lahko), bo prepisan URL naslov še vedno vseboval jsessionid v naslovu. Strežnik je že ob drugem obisku v brskalniku napisal piškotek, zato prepisan URL naslov ne bo imel jsessionid v naslovu.
|