JSP ใช้ HttpSession interface จาก Servlet API จัดการ session ให้อัตโนมัติ
คุณสมบัติหลัก
- ระบุตัวตน user ข้ามหลาย request
- เก็บข้อมูลเฉพาะ user (shopping cart, preferences, login state)
- JSP เปิด session tracking โดยอัตโนมัติ (default)
Implicit Session Object
JSP มี implicit object session (type HttpSession) ใช้งานได้ทันที ไม่ต้อง request.getSession()
<%
session.setAttribute("username", "Somchai");
String name = (String) session.getAttribute("username");
%>
ปิด Session Tracking
<%@ page session="false" %>
ใช้เมื่อหน้าไม่ต้องการ session (ลด memory, performance) เช่น static pages, API endpoints
Session Tracking Mechanisms
- Cookies (default) - JSESSIONID cookie
- URL Rewriting - fallback เมื่อปิด cookies (
response.encodeURL()) - SSL Session - ใช้ SSL session ID (น้อย)
แนวทางปฏิบัติที่ดี
- เก็บ object ขนาดเล็กใน session (หลีกเลี่ยง object ใหญ่)
- ตั้ง timeout ให้เหมาะสม (web.xml หรือ setMaxInactiveInterval)
- Invalidate session ตอน logout
- ใช้
session="false"ในหน้าที่ไม่ต้องการ - ระวัง race condition ใน multi-threaded environment (session attributes ไม่ thread-safe)