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.


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