Wie sagt isNew (), ob die Sitzung neu ist oder bereits verwendet wird?

10

Wie heißt isNew() Überprüfen Sie im Sitzungsobjekt, ob die Sitzung neu ist oder bereits verwendet wird.

Ich habe gelesen, dass isNew() true zurückgibt, wenn der Client noch nicht mit der Sitzungs-ID geantwortet hat. Aber was bedeutet es ? Bitte erklären Sie

    
Suhail Gupta 27.02.2012, 11:21
quelle

1 Antwort

22
  

Ich habe gelesen, dass isNew () true zurückgibt, wenn der Client noch nicht mit der Sitzungs-ID geantwortet hat. Aber was bedeutet es?

Beachten Sie, dass der Server gerade eine Anfrage bearbeitet. Es gibt zwei Szenarien in Bezug auf die Sitzungsbehandlung.

  • Im neuen Sitzungsszenario wird vom Server eine neue Sitzung für den Benutzer / Client erstellt. (Möglicherweise hat der Client in der Anfrage keine Sitzungs-ID angegeben, oder er hat möglicherweise eine Sitzungs-ID angegeben, die der Server für ungültig hält.) Der Anwendungscode des Servlets entscheidet, ob eine Sitzung erforderlich ist (z. B. weil bestimmte Informationen vorhanden sind) dort speichern) und versucht, sie mit dem Flag "create if not not" zu holen. Die Servlet-Infrastruktur erkennt, dass keine aktuelle Sitzung vorhanden ist, erstellt eine neue mit einer neuen Sitzungs-ID und speichert sie im Sitzungsspeicher. Nach Abschluss der Anforderung wird die Sitzungs-ID an den Client zurückgegeben. z.B. als Cookie oder als URL mit angehängter Sitzungs-ID.

  • Im vorhandenen Sitzungsszenario hat der Client eine Sitzungs-ID in die Anfrage aufgenommen. z.B. als Session-Cookie oder als Session-ID in der Anfrage-URL. Die Servlet-Infrastruktur erkennt diese ID, sucht sie in ihrem Sitzungsspeicher ab und erstellt (falls erforderlich) das Objekt HttpSession neu, das den aus dem Sitzungsspeicher abgerufenen Sitzungsstatus enthält. Wenn der Anwendungscode des Servlets versucht, auf die Sitzung zuzugreifen, erhält er dieses HttpSession -Objekt, nicht ein neues. Der Sitzungsstatus kann dann vom Servlet bei der Verarbeitung der Anforderung verwendet und aktualisiert werden.

Im ersten Szenario wird der Aufruf von isNew() für das Sitzungsobjekt true zurückgeben, da dies eine neue Sitzung ist.

Im zweiten Szenario gibt der Aufruf von isNew() für das Sitzungsobjekt false zurück, da dies keine neue Sitzung ist.

  

Wie funktioniert das Aufrufen von isNew () für das Sitzungsobjekt? Prüfen Sie, ob es sich um eine neue Sitzung handelt oder ob sie bereits verwendet wird.

Die Servlet-Infrastruktur weiß, welches der beiden Szenarien aufgetreten ist, weil sie die Sitzungserstellung oder Sitzungssuche durchgeführt hat. Die offensichtlichste Implementierung von isNew() besteht darin, ein private boolean -Feld in das HttpSession -Objekt aufzunehmen und den Wert dieses Feldes als Ergebnis von isNew() zurückzugeben. Das Feld wird von der Servlet-Infrastruktur entsprechend dem Erhalt des Sitzungsobjekts initialisiert.

    
Stephen C 27.02.2012, 11:33
quelle

Tags und Links