Forskjellen mellom request.getSession () og request.getSession (true)

1. Oversikt

I denne raske opplæringen ser vi forskjellen mellom å ringe HttpServletRequest #getSession () og HttpServletRequest #getSession (boolsk).

2. Hva er forskjellen?

Metodene getSession () og getSession (boolsk) er veldig like. Det er imidlertid en liten forskjell. Forskjellen er om økten skal opprettes hvis den ikke allerede eksisterer.

Ringer getSession () og getSession (true) er funksjonelt det samme: hente gjeldende økt, og hvis en ikke eksisterer ennå, opprett den.

Ringer getSession (false), men henter gjeldende økt, og hvis en ikke eksisterer ennå, returnerer null. Dette er blant annet praktisk når vi vil spørre om økten eksisterer.

3. Eksempel

I dette eksemplet vurderer vi dette scenariet:

  • brukeren går inn i bruker-ID og logger på applikasjonen
  • brukeren går deretter inn i brukernavn og alder og ønsker å oppdatere disse detaljene for den påloggede brukeren

Vi lagrer brukerverdiene i økten for å forstå bruken av HttpServletRequest # getSession () og HttpServletRequest # getSession (boolsk).

La oss først lage en servlet der vi bruker HttpServletRequest # getSession () i sin doGet () metode:

beskyttet ugyldig doGet (HttpServletRequest-forespørsel, HttpServletResponse-svar) kaster ServletException, IOException {HttpSession session = request.getSession (); session.setAttribute ("userId", request.getParameter ("userId")); } 

På dette tidspunktet vil servletten hente den eksisterende økten eller opprette en ny for den påloggede brukeren, hvis den ikke eksisterer.

Deretter setter vi inn brukernavn attributt i økten.

Da vi vil oppdatere detaljene til brukeren for den respektive bruker-ID-en, vil vi ha den samme økten og vil ikke opprette en ny økt for å lagre brukernavnet.

Så nå vil vi bruke HttpServletRequest # getSession (boolsk) med falsk verdi:

beskyttet ugyldig doGet (HttpServletRequest-forespørsel, HttpServletResponse-svar) kaster ServletException, IOException {HttpSession session = request.getSession (false); hvis (session! = null) {session.setAttribute ("brukernavn", request.getParameter ("brukernavn")); }}

Dette vil resultere i innstilling av brukernavn attributt på samme økt som bruker-ID ble tidligere satt.

4. Konklusjon

I denne opplæringen har vi forklart forskjellen mellom HttpServletRequest # getSession () og HttpServletRequest # getSession (boolsk) metoder.

Det komplette eksemplet er tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found