Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 17168|Antwoord: 1

[Bron] De levenscyclus van de sessie

[Link kopiëren]
Geplaatst op 19-04-2015 19:44:59 | | |
Ik heb er niet veel aandacht aan besteed toen ik eerder studeerde, maar vandaag ben ik teruggegaan en heb ik zorgvuldig de levenscyclus van de sessie bestudeerd.
Sessies worden aan de serverzijde opgeslagen, en om te voorkomen dat ze in het geheugen van de server komen (voor snelle toegang), maakt Sessinon de eerste keer dat de gebruiker de server bezoekt.Let op: alleen toegang tot JSP, Servlet en andere programma's maakt een sessie, en alleen het benaderen van statische bronnen zoals HTML en IMAGE maakt geen sessie.
  Wanneer verloopt een sessie?
1. De server zal de sessie wissen uit het servergeheugen dat lange tijd inactief is geweest, en de sessie zal ongeldig zijn. De standaard vervaldatum van een sessie in Tomcat is 20 minuten.
2. Roep de ongeldig maken van de zittingsmethode op.
  Sessievereisten voor browsers:
 Hoewel de sessie op de server wordt opgeslagen en transparant is voor de client, vereist de normale werking ervan nog steeds ondersteuning van de browser van de client. Dit komt doordat Session cookies als identificatie moet gebruiken. Het HTTP-protocol is stateless en de sessie kan niet worden beoordeeld door de HTTP-verbinding om te bepalen of het dezelfde klant is, dus stuurt de server een cookie genaamd JSESSIONID naar de clientbrowser, die de waarde van de id van de sessie bevat (dat wil zeggen, de retourwaarde van HttpSession.getId()). Session gebruikt de cookie om te bepalen of het dezelfde gebruiker is.

Deze cookie wordt automatisch door de server gegenereerd, en het maxAge-attribuut is meestal -1, wat betekent dat deze alleen geldig is in de huidige browser, niet gedeeld wordt tussen browservensters, en ook niet geldig is wanneer de browser gesloten is. Daarom worden er bij twee browservensters op dezelfde machine toegang tot de server twee verschillende sessies gegenereerd. Behalve voor nieuwe vensters die worden geopend door links, scripts, enz. binnen het browservenster (dus geen vensters die worden geopend door dubbelklikken op de iconen van de desktopbrowser, enz.). Deze kindvensters delen de cookie van het oudervenster en dus een sessie.

Opmerking: Nieuwe sessies worden gegenereerd in nieuw geopende browservensters, behalve bij subvensters. Het kindvenster deelt de sessie van het oudervenster. Als je bijvoorbeeld met de rechtermuisknop op een link klikt en "Openen in nieuw venster" selecteert in het snelkoppelingsmenu dat verschijnt, kan het kindvenster toegang krijgen tot de Sessie van het oudervenster.

Wat als de clientbrowser cookies uitschakelt of geen cookies ondersteunt? Zo ondersteunt de overgrote meerderheid van mobiele browsers geen cookies. Java Web biedt een andere oplossing: het herschrijven van URL-adressen.
Het herschrijven van URL-adressen is een oplossing voor clients die geen cookies ondersteunen. Het principe van het herschrijven van URL-adressen is het herschrijven van de id-informatie van de sessie van de gebruiker naar het URL-adres. De server kan de herschreven URL parsen om de sessie-id te verkrijgen. Op deze manier kan, zelfs als de client geen cookies ondersteunt, de sessie worden gebruikt om de gebruikersstatus vast te leggen. De HttpServletResponse-klasse biedt encodeURL (string-url) om het herschrijven van URL-adressen te implementeren, wat automatisch bepaalt of de client cookies ondersteunt. Als de client cookies ondersteunt, wordt de URL weergegeven zoals deze is. Als de client geen cookies ondersteunt, wordt het id van de gebruikerssessie herschreven in de URL.
Opmerking: TOMCAT bepaalt of een clientbrowser cookies ondersteunt op basis van of een cookie in het verzoek is opgenomen. Hoewel de client cookies kan ondersteunen, omdat er geen cookies worden meegenomen bij het eerste verzoek (omdat er geen cookies zijn die dat kunnen), zal het herschreven URL-adres nog steeds jsessionid in het adres hebben. De server heeft bij het tweede bezoek al een cookie in de browser geschreven, dus het herschreven URL-adres zal geen jsessionid in het adres hebben.





Vorig:HTML-truc om de tabelrand te veranderen in een dunne lijn
Volgend:Bouw een aangepaste bestandscache ASP.NET prestatieoptimalisatie
Geplaatst op 18-03-2017 16:52:21 |
Het is heel goed geschreven, leer maar!
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com