HTTP एक "स्टेटलेस" प्रोटोकॉल है जिसका अर्थ है कि हर बार जब कोई क्लाइंट एक वेबपेज पुनर्प्राप्त करता है, तो क्लाइंट वेब सर्वर से एक अलग कनेक्शन खोलता है और सर्वर स्वचालित रूप से पिछले क्लाइंट रिक्वेस्ट का कोई रिकॉर्ड नहीं रखता।
वेब क्लाइंट और सर्वर के बीच सत्र बनाए रखने के विकल्प
1. कुकीज़ (Cookies)
एक वेबसर्वर प्रत्येक वेब क्लाइंट को कुकी के रूप में एक अद्वितीय सत्र आईडी निर्दिष्ट कर सकता है और क्लाइंट से बाद के अनुरोधों के लिए वे प्राप्त कुकी का उपयोग करके पहचाने जा सकते हैं।
कमियां: ब्राउज़र कई बार कुकीज़ का समर्थन नहीं करता। सत्र बनाए रखने के लिए इस प्रक्रिया का उपयोग करने की अनुशंसा नहीं की जाती।
2. हिडन फॉर्म फील्ड्स (Hidden Form Fields)
एक वेब सर्वर एक अद्वितीय सत्र आईडी के साथ एक हिडन HTML फॉर्म फील्ड भेज सकता है:
<input type="hidden" name="sessionid" value="12345">
इस प्रविष्टि का अर्थ है कि जब फॉर्म सबमिट किया जाता है, तो निर्दिष्ट नाम और मान स्वचालित रूप से GET या POST डेटा में शामिल हो जाते हैं। हर बार जब वेब ब्राउज़र रिक्वेस्ट वापस भेजता है, तो session_id मान का उपयोग विभिन्न वेब ब्राउज़र्स को ट्रैक करने के लिए किया जा सकता है।
कमियां: नियमित हाइपरटेक्स्ट लिंक (<A HREF...>) पर क्लिक करने से फॉर्म सबमिशन नहीं होता, इसलिए हिडन फॉर्म फील्ड्स सामान्य सत्र ट्रैकिंग का समर्थन नहीं कर सकते।
3. URL रीराइटिंग (URL Rewriting)
आप प्रत्येक URL के अंत में कुछ अतिरिक्त डेटा जोड़ सकते हैं। यह डेटा सत्र की पहचान करता है; सर्वर उस सत्र पहचानकर्ता को उस डेटा के साथ जोड़ सकता है जो उसने उस सत्र के बारे में संग्रहीत किया है।
उदाहरण के लिए, https://example.com/file.htm;sessionid=12345 के साथ, सत्र पहचानकर्ता sessionid = 12345 के रूप में जुड़ा होता है जिसे वेब सर्वर पर क्लाइंट की पहचान के लिए एक्सेस किया जा सकता है।
लाभ: URL रीराइटिंग सत्र बनाए रखने का एक बेहतर तरीका है और उन ब्राउज़र्स के लिए काम करता है जो कुकीज़ का समर्थन नहीं करते।
कमियां: आपको हर URL को डायनामिक रूप से जनरेट करना होगा ताकि सत्र आईडी असाइन की जा सके, भले ही पेज एक साधारण स्टैटिक HTML पेज हो।
आधुनिक दृष्टिकोण: सर्वलेट/JSP सत्र API
उपरोक्त मैन्युअल तकनीकों के बजाय, सर्वलेट/JSP अंतर्निहित HttpSession ऑब्जेक्ट प्रदान करता है जो स्वचालित रूप से सत्र ट्रैकिंग को संभालता है (आमतौर पर कुकीज़ या URL रीराइटिंग का उपयोग करके)।
HttpSession session = request.getSession();session.setAttribute("key", value);session.getAttribute("key");
यह अनुशंसित दृष्टिकोण है क्योंकि यह सत्र प्रबंधन की जटिलताओं को संभालता है।