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.