Razlika između request.getSession () i request.getSession (true)

1. Pregled

U ovom brzom vodiču vidjet ćemo razliku između pozivanja HttpServletRequest #getSession () i HttpServletRequest #getSession (logička vrijednost).

2. Koja je razlika?

Metode getSession () i getSession (logička vrijednost) su vrlo slični. Ipak je mala razlika. Razlika je u tome treba li sesiju stvoriti ako već ne postoji.

Pozivanje getSession () i getSession (true) su funkcionalno iste: dohvatite trenutnu sesiju, a ako još ne postoji, stvorite je.

Pozivanje getSession (false), međutim, preuzima trenutnu sesiju, a ako još ne postoji, vraća se null. Između ostalog, ovo je zgodno kada želimo pitati postoji li sesija.

3. Primjer

U ovom primjeru razmatramo ovaj scenarij:

  • korisnik ulazi u korisnički ID i prijavljuje se u aplikaciju
  • korisnik zatim ulazi u Korisničko ime i dob i želi ažurirati ove detalje za prijavljenog korisnika

Korisničke vrijednosti pohranit ćemo u sesiju kako bismo razumjeli upotrebu HttpServletRequest # getSession () i HttpServletRequest # getSession (logička vrijednost).

Prvo, kreirajmo servlet tamo gdje se koristimo HttpServletRequest # getSession () u svojoj doGet () metoda:

zaštićeni void doGet (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca ServletException, IOException {HttpSession session = request.getSession (); session.setAttribute ("userId", request.getParameter ("userId")); } 

U ovom trenutku, servlet će dohvatiti postojeću sesiju ili stvoriti novu za prijavljeni korisnik, ako ona ne postoji.

Dalje ćemo postaviti Korisničko ime atribut u sesiji.

Kako želimo ažurirati detalje korisnika za odgovarajući korisnički ID, želimo istu sesiju i ne želimo stvoriti novu sesiju za pohranu korisničkog imena.

Pa ćemo sada koristiti HttpServletRequest # getSession (boolean) s lažno vrijednost:

zaštićeni void doGet (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca ServletException, IOException {HttpSession session = request.getSession (false); if (session! = null) {session.setAttribute ("userName", request.getParameter ("userName")); }}

To će rezultirati postavljanjem Korisničko ime atribut na istoj sesiji kao i userId je prethodno postavljen.

4. Zaključak

U ovom smo uputstvu objasnili razliku između HttpServletRequest # getSession () i HttpServletRequest # getSession (boolean) metode.

Cjelovit primjer dostupan je na GitHubu.