7-modul · 6-dars: Session · Filter · Cookie
Daraja: Ilg'or
Session · Filter · Cookie. Jakarta EE bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Session · Filter · Cookie tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya HTTP o'zi stateless, session esa server tomonda bir nechta requestni foydalanuvchi holatiga bog'laydi. HttpSession odatda session-id cookie orqali topiladi. getSession() yaratishi mumkin, getSession(false) faqat mavjudini oladi. Cookie clientda saqlanadigan kichik qiymat; sessionning barcha ma'lumoti cookie ichida turishi shart emas. Servlet init-param bitta servletga, context-param ilovaga tegishli konfiguratsiyani beradi. ServletContextListener ilova hayot siklini, HttpSessionListener session yaratilishi/yopilishini kuzatadi. Filter chain.doFilterdan oldin va keyin so'rov-javobni tekshiradi; encoding, logging va xavfsizlik uchun ishlatiladi. DoFilter chaqirilmasa zanjir to'xtaydi. Login vaqtida session identifikatorini yangilash fixation xavfini kamaytiradi. HttpOnly JavaScript o'qishini, Secure HTTP orqali yuborilishini cheklaydi; SameSite va CSRF himoyasi alohida qarorlardir. Logoutda server sessionini bekor qiling. Error page yoki exception mapping ichki stack trace va sirlarni clientga chiqarmasligi kerak.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/7-module%28Jakarta%20EE%29.md) [Rasmiy qo‘llanma](https://jakarta.ee/specifications/)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
var session = request.getSession();
session.setAttribute("userId", verifiedUserId);
request.changeSessionId();
// Chiqish:
// request.getSession(false).invalidate();
Keng tarqalgan xatolar
- Cookie ichidagi userIdni imzosiz qabul qilib foydalanuvchini autentifikatsiya qilmang.
Mashqlar
- Login, sahifani yangilash va logoutdan keyin session-cookie hayot siklini chizing.
- Sessiyaga qiymat yozib, brauzerni yopib qayta ochganda nima bo'lishini kuzating.
Teglar: nazariya, modul-07, pdp