Predtým som tomu nevenoval veľkú pozornosť, keď som študoval, ale dnes som sa vrátil a dôkladne študoval životný cyklus sedenia. Relácie sú uložené na strane servera a vo všeobecnosti, aby zabránil ich umiestneniu v pamäti servera (pre vysokorýchlostný prístup), Sessinon vytvára prvý prístup používateľa k serveru.Upozorňujeme, že len prístup k JSP, Servlet a ďalším programom vytvorí reláciu a iba prístup k statickým zdrojom ako HTML a IMAGE nevytvorí reláciu.
Kedy vyprší relácia?
1. Server vymaže reláciu z pamäte servera, ktorá bola dlhodobo neaktívna, a relácia bude neplatná. Predvolená doba vypršania relácie v Tomcat je 20 minút.
2. Vyvolajte metódu neplatnosti sedenia.
Požiadavky na relácie pre prehliadače:
Aj keď je relácia uložená na serveri a je pre klienta transparentná, jej bežná prevádzka stále vyžaduje podporu prehliadača klienta. Je to preto, že Session musí používať cookies ako identifikátor. HTTP protokol je bezstavový a relácia nemôže byť podľa HTTP pripojenia vyhodnotená, aby zistila, či ide o toho istého zákazníka, preto server posiela klientskému prehliadaču cookie s názvom JSESSIONID, ktorý má hodnotu id relácie (teda vrátenú hodnotu HttpSession.getId()). Session používa cookie na identifikáciu, či ide o toho istého používateľa.
Tento cookie je automaticky generovaný serverom a jeho atribút maxAge je zvyčajne -1, čo znamená, že je platný len v aktuálnom prehliadači, nie je zdieľaný medzi oknami prehliadača a nebude platný aj po zatvorení prehliadača. Preto, keď dve okná prehliadača na tom istom zariadení pristupujú k serveru, generujú sa dve odlišné relácie. Okrem nových okien otvorených odkazmi, skriptmi a podobne v rámci okna prehliadača (t. j. nie okien otvorených dvojitým kliknutím na ikony desktopového prehliadača a podobne). Tieto podriadené okná zdieľajú cookie rodičovského okna a teda aj reláciu.
Poznámka: Nové relácie sa generujú v novo otvorených oknách prehliadača, okrem podokien. Podriadené okno zdieľa reláciu rodičovského okna. Napríklad, keď kliknete pravým tlačidlom na odkaz a vyberiete "Otvoriť v novom okne" v menu skratiek, ktoré sa zobrazí, podriadené okno môže pristupovať k relácii rodičovského okna.
Čo ak klientský prehliadač deaktivuje cookies alebo ich nepodporuje? Napríklad drvivá väčšina mobilných prehliadačov nepodporuje cookies. Java Web ponúka ďalšie riešenie: prepisovanie URL adries. Prepisovanie URL adries je riešenie pre klientov, ktorí nepodporujú cookies. Princíp prepisovania URL adries spočíva v prepísaní ID údajov relácie používateľa na URL adresu. Server môže analyzovať prepísanú URL a získať Session ID. Týmto spôsobom, aj keď klient nepodporuje cookies, relácia môže byť použitá na zaznamenanie stavu používateľa. Trieda HttpServletResponse poskytuje encodeURL (String url) na implementáciu prepisovania URL adries, čo automaticky určuje, či klient podporuje cookies. Ak klient podporuje cookies, URL bude vypísaná tak, ako je. Ak klient nepodporuje cookies, ID používateľskej relácie sa prepíše do URL.
Poznámka: TOMCAT určuje, či klientský prehliadač podporuje cookies na základe toho, či je cookie zahrnutý v požiadavke. Aj keď klient môže podporovať cookies, keďže pri prvej požiadavke sa cookies neprenášajú (pretože neexistujú cookies, ktoré by to mohli urobiť), prepísaná URL adresa bude mať stále jsessionid v adrese. Server už pri druhej návšteve napísal do prehliadača cookie, takže prepísaná URL adresa nebude mať jsessionid v adrese.
|