Rozdiel medzi request.getSession () a request.getSession (true)
1. Prehľad
V tomto rýchlom návode uvidíme rozdiel medzi volaním HttpServletRequest #getSession () a HttpServletRequest #getSession (boolean).
2. Aký je rozdiel?
Metódy getSession () a getSession (boolean) sú si veľmi podobné. Je tu však malý rozdiel. Rozdiel je v tom, či by sa relácia mala vytvoriť, ak ešte neexistuje.
Telefonovanie getSession () a getSession (true) sú funkčne rovnaké: načítať aktuálnu reláciu a ak ešte neexistuje, vytvorte ju.
Telefonovanie getSession (false), načíta aktuálnu reláciu a ak ešte neexistuje, vráti sa nulový. Okrem iného je to užitočné, keď sa chceme opýtať, či relácia existuje.
3. Príklad
V tomto príklade uvažujeme o tomto scenári:
- užívateľ zadá ID používateľa a prihlási sa do aplikácie
- užívateľ potom vstúpi do meno používateľa a Vek a chce tieto informácie aktualizovať pre prihláseného používateľa
V relácii uložíme používateľské hodnoty, aby sme pochopili použitie HttpServletRequest # getSession () a HttpServletRequest # getSession (boolean).
Najskôr vytvoríme servlet tam, kde ho používame HttpServletRequest # getSession () v jeho doGet () metóda:
protected void doGet (požiadavka HttpServletRequest, odpoveď HttpServletResponse) hodí ServletException, IOException {HttpSession session = request.getSession (); session.setAttribute ("userId", request.getParameter ("userId")); }
V tomto okamihu servlet obnoví existujúcu reláciu alebo vytvorí novú pre prihláseného používateľa, ak neexistuje.
Ďalej nastavíme meno používateľa atribút v relácii.
Pretože chceme aktualizovať podrobnosti používateľa pre príslušné ID používateľa, chceme rovnakú reláciu a nechceme vytvárať novú reláciu na uloženie používateľského mena.
Takže teraz použijeme HttpServletRequest # getSession (boolean) s nepravdivé hodnotu:
protected void doGet (požiadavka HttpServletRequest, odpoveď HttpServletResponse) hodí ServletException, IOException {HttpSession session = request.getSession (false); if (session! = null) {session.setAttribute ("userName", request.getParameter ("userName")); }}
Výsledkom bude nastavenie meno používateľa atribút na tej istej relácii, ktorú ID používateľa bol predtým nastavený.
4. Záver
V tomto tutoriáli sme vysvetlili rozdiel medzi HttpServletRequest # getSession () a HttpServletRequest # getSession (boolean) metódy.
Celý príklad je k dispozícii na GitHub.