Perbedaan Antara request.getSession () dan request.getSession (true)

1. Ikhtisar

Dalam tutorial singkat ini, kita akan melihat perbedaan antara memanggil HttpServletRequest # getSession () dan HttpServletRequest # getSession (boolean) .

2. Apa Bedanya?

Metode getSession () dan getSession (boolean) sangat mirip. Namun, ada perbedaan kecil. Perbedaannya adalah apakah sesi harus dibuat jika belum ada.

Memanggil getSession () dan getSession (true) secara fungsional sama : ambil sesi saat ini, dan jika belum ada, buatlah.

Memanggil getSession (false) , meskipun, mengambil sesi saat ini, dan jika belum ada, mengembalikan null . Antara lain, ini berguna ketika kita ingin menanyakan apakah sesi tersebut ada.

3. Contoh

Dalam contoh ini, kami mempertimbangkan skenario ini:

  • pengguna memasukkan id pengguna dan masuk ke aplikasi
  • pengguna kemudian memasukkan nama pengguna dan usia dan ingin memperbarui detail ini untuk pengguna yang masuk

Kami akan menyimpan nilai pengguna dalam sesi untuk memahami penggunaan HttpServletRequest # getSession () dan HttpServletRequest # getSession (boolean).

Pertama, mari buat servlet di mana kita menggunakan HttpServletRequest # getSession () dalam metode doGet () :

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); session.setAttribute("userId", request.getParameter("userId")); } 

Pada titik ini, servlet akan mengambil sesi yang ada atau membuat yang baru untuk pengguna yang masuk, jika tidak ada.

Selanjutnya, kami akan menetapkan atribut userName di sesi.

Karena kami ingin memperbarui detail pengguna untuk masing-masing id pengguna, kami menginginkan sesi yang sama dan tidak ingin membuat sesi baru untuk menyimpan nama pengguna.

Jadi sekarang, kita akan menggunakan HttpServletRequest # getSession (boolean) dengan nilai salah :

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); if (session != null) { session.setAttribute("userName", request.getParameter("userName")); } }

Ini akan menghasilkan pengaturan atribut userName pada sesi yang sama dengan userId yang telah ditetapkan sebelumnya.

4. Kesimpulan

Dalam tutorial ini, kami telah menjelaskan perbedaan antara metode HttpServletRequest # getSession () dan HttpServletRequest # getSession (boolean) .

Contoh lengkapnya tersedia di GitHub.