Unterschied zwischen request.getSession () und request.getSession (true)

1. Übersicht

In diesem kurzen Tutorial sehen wir den Unterschied zwischen dem Aufruf von HttpServletRequest # getSession () und HttpServletRequest # getSession (boolean) .

2. Was ist der Unterschied?

Die Methoden getSession () und getSession (boolean) sind sehr ähnlich. Es gibt jedoch einen kleinen Unterschied. Der Unterschied besteht darin, ob die Sitzung erstellt werden soll, wenn sie noch nicht vorhanden ist.

Das Aufrufen von getSession () und getSession (true) ist funktional identisch : Rufen Sie die aktuelle Sitzung ab, und erstellen Sie sie, falls noch keine vorhanden ist.

Wenn Sie jedoch getSession (false) aufrufen , wird die aktuelle Sitzung abgerufen. Wenn noch keine vorhanden ist, wird null zurückgegeben . Dies ist unter anderem praktisch, wenn wir fragen möchten, ob die Sitzung vorhanden ist.

3. Beispiel

In diesem Beispiel betrachten wir dieses Szenario:

  • Der Benutzer gibt die Benutzer-ID ein und meldet sich bei der Anwendung an
  • Der Benutzer gibt dann den Benutzernamen und das Alter ein und möchte diese Details für den angemeldeten Benutzer aktualisieren

Wir speichern die Benutzerwerte in der Sitzung, um die Verwendung von HttpServletRequest # getSession () und HttpServletRequest # getSession (boolean) zu verstehen .

Zuerst erstellen wir ein Servlet, in dem wir HttpServletRequest # getSession () in seiner doGet () -Methode verwenden:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); session.setAttribute("userId", request.getParameter("userId")); } 

Zu diesem Zeitpunkt ruft das Servlet die vorhandene Sitzung ab oder erstellt eine neue für den angemeldeten Benutzer, falls diese nicht vorhanden ist.

Als Nächstes legen wir das Attribut userName in der Sitzung fest.

Da wir die Details des Benutzers für die jeweilige Benutzer-ID aktualisieren möchten, möchten wir dieselbe Sitzung und keine neue Sitzung zum Speichern des Benutzernamens erstellen.

Jetzt verwenden wir HttpServletRequest # getSession (boolean) mit falschem Wert :

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); if (session != null) { session.setAttribute("userName", request.getParameter("userName")); } }

Dies führt dazu, dass das Attribut userName in derselben Sitzung festgelegt wird, in der die userId zuvor festgelegt wurde.

4. Fazit

In diesem Tutorial haben wir den Unterschied zwischen den Methoden HttpServletRequest # getSession () und HttpServletRequest # getSession (boolean) erläutert .

Das vollständige Beispiel ist auf GitHub verfügbar.