JSP सर्वलेट द्वारा प्रदान किए गए HttpSession इंटरफेस का उपयोग करता है। यह इंटरफेस एक उपयोगकर्ता की पहचान करने का तरीका प्रदान करता है:
- एक पेज रिक्वेस्ट में
- वेबसाइट पर विज़िट में
- उस उपयोगकर्ता के बारे में जानकारी संग्रहीत करने के लिए
डिफ़ॉल्ट रूप से, JSPs में सत्र ट्रैकिंग सक्षम होती है और प्रत्येक नए क्लाइंट के लिए स्वचालित रूप से एक नया HttpSession ऑब्जेक्ट इंस्टेंटिएट किया जाता है। सत्र ट्रैकिंग को अक्षम करने के लिए पेज डायरेक्टिव session एट्रिब्यूट को false पर सेट करके स्पष्ट रूप से बंद करने की आवश्यकता होती है:
<%@ page session="false" %>
JSP इंजन अंतर्निहित session ऑब्जेक्ट के माध्यम से JSP लेखक को HttpSession ऑब्जेक्ट उजागर करता है। चूंकि session ऑब्जेक्ट पहले से ही JSP प्रोग्रामर को प्रदान किया जाता है, प्रोग्रामर किसी भी आरंभीकरण या getSession() के बिना तुरंत ऑब्जेक्ट में डेटा संग्रहीत और पुनर्प्राप्त करना शुरू कर सकता है।
सत्र प्रबंधन के मुख्य पहलू
1. सत्र निर्माण/पहुंच
- डिफ़ॉल्ट: स्वचालित (पहली रिक्वेस्ट पर)।
- स्पष्ट:
HttpSession session = request.getSession(true);(बनाएं यदि मौजूद नहीं)। - बिना निर्माण के पहुंच:
request.getSession(false)(null यदि मौजूद नहीं)।
2. डेटा संग्रहण
session.setAttribute("username", "john");
String name = (String) session.getAttribute("username");
3. सत्र समाप्ति
session.invalidate()- तत्काल अमान्यता।session.setMaxInactiveInterval(seconds)- निष्क्रियता टाइमआउट सेट करें।- web.xml में
<session-timeout>- वैश्विक टाइमआउट (मिनटों में)।
4. URL रीराइटिंग समर्थन
कुकीज़ अक्षम होने पर कंटेनर स्वचालित रूप से URL रीराइटिंग का उपयोग कर सकता है (response.encodeURL(), response.encodeRedirectURL())।
सर्वोत्तम अभ्यास
- सत्र में न्यूनतम डेटा संग्रहीत करें (केवल आईडी, बड़े ऑब्जेक्ट्स के लिए कैश/डेटाबेस का उपयोग करें)।
- सत्र फिक्सेशन रोकथाम: लॉगिन पर
request.changeSessionId()(सर्वलेट 3.1+) - सुरक्षित कुकीज़: web.xml में
<session-config><cookie-config><http-only>true</http-only><secure>true</secure></cookie-config></session-config>।