Verschil tussen request.getSession () en request.getSession (true)

1. Overzicht

In deze korte tutorial zullen we het verschil zien tussen bellen HttpServletRequest #getSession () en HttpServletRequest #getSession (boolean).

2. Wat is het verschil?

De methoden getSession () en getSession (boolean) lijken heel erg op elkaar. Er is echter een klein verschil. Het verschil is of de sessie moet worden gemaakt als deze nog niet bestaat.

Roeping getSession () en getSession (waar) zijn functioneel hetzelfde: haal de huidige sessie op, en als er nog geen bestaat, maak deze dan aan.

Roeping getSession (false)haalt echter de huidige sessie op en keert terug als er nog geen bestaat nul. Dit is onder andere handig als we willen vragen of de sessie bestaat.

3. Voorbeeld

In dit voorbeeld overwegen we dit scenario:

  • de gebruiker voert het gebruikersnaam en logt in op de applicatie
  • de gebruiker voert dan het gebruikersnaam en leeftijd en wil deze gegevens bijwerken voor de ingelogde gebruiker

We slaan de gebruikerswaarden op in de sessie om het gebruik van HttpServletRequest # getSession () en HttpServletRequest # getSession (boolean).

Laten we eerst een servlet maken waar we gebruik van maken HttpServletRequest # getSession () in zijn doGet () methode:

protected void doGet (HttpServletRequest-verzoek, HttpServletResponse-antwoord) gooit ServletException, IOException {HttpSession-sessie = request.getSession (); session.setAttribute ("userId", request.getParameter ("userId")); } 

Op dit punt haalt de servlet de bestaande sessie op of maakt een nieuwe aan voor de ingelogde gebruiker, als deze nog niet bestaat.

Vervolgens stellen we de gebruikersnaam attribuut in de sessie.

Omdat we de details van de gebruiker voor het respectieve gebruikers-ID willen bijwerken, willen we dezelfde sessie en willen we geen nieuwe sessie maken om de gebruikersnaam op te slaan.

Dus nu zullen we gebruiken HttpServletRequest # getSession (boolean) met false waarde:

beschermde ongeldige doGet (HttpServletRequest-verzoek, HttpServletResponse-reactie) gooit ServletException, IOException {HttpSession-sessie = request.getSession (false); if (sessie! = null) {session.setAttribute ("gebruikersnaam", request.getParameter ("gebruikersnaam")); }}

Dit zal resulteren in het instellen van de gebruikersnaam attribuut op dezelfde sessie die het gebruikersnaam was eerder ingesteld.

4. Conclusie

In deze tutorial hebben we het verschil uitgelegd tussen HttpServletRequest # getSession () en HttpServletRequest # getSession (boolean) methoden.

Het volledige voorbeeld is beschikbaar op GitHub.