2009-09-02 7 views
36

में सत्र कैसे स्टोर करें स्प्रिंग एमवीसी (2.5) वेब एप्लिकेशन में किसी उपयोगकर्ता के सत्र से संबंधित डेटा को संग्रहीत करने का सबसे अच्छा तरीका क्या है (उदाहरण के लिए, उदाहरण के लिए उपयोगकर्ता द्वारा किए गए हालिया कार्यों का लॉग)?स्प्रिंग एमवीसी

क्लासिक javax.servlet.http.HttpSession का उपयोग करना या नियंत्रक सेम में स्कोप = "सत्र" निर्दिष्ट करके, और सत्र ऑब्जेक्ट में डेटा संग्रहीत करना?

उत्तर

36

सत्र-स्कोप्ड बीन्स (scope="session" का उपयोग करके) सबसे साफ दृष्टिकोण है। यह सत्र के साथ बातचीत करने की आवश्यकता को हटा देता है।

यदि आप नियंत्रक में सत्र-स्कोप्ड बीन को स्वचालित रूप से ऑटोवायर करना चाहते हैं, तो आपको या तो नियंत्रक सत्र-स्कोप्ड स्वयं बनाना होगा, या described here के रूप में इसे सिंगलटन नियंत्रक में तार करने के लिए स्कॉप्ड-प्रॉक्सी का उपयोग करना होगा। या तो दृष्टिकोण मान्य है।

+0

धन्यवाद, एक क्लीनर दृष्टिकोण वही था जो मैं – dakull

+1

के लिए खोज रहा था, इस उत्कृष्ट उत्तर के लिए धन्यवाद, मैं अभी तक सीधे HttpSession का उपयोग कर रहा था। कंट्रोलर अनुरोध स्कॉप्ड बनाना (यानी पुराना थ्रोवे कंट्रोलर) भी काम करता है और स्कोप्ड-प्रॉक्सी की आवश्यकता से बचाता है। क्या इसके लिए कोई डाउनसाइड्स हैं? –

+4

@ डिक: अनुरोध-स्कोप्ड बीन्स एक प्रदर्शन जुर्माना लाते हैं, लेकिन जब तक आपके नियंत्रक के पास महंगी कस्टम इनिट प्रक्रिया नहीं होती है, या आपका ट्रैफ़िक बहुत अधिक नहीं होता है, तो यह महत्वपूर्ण नहीं होना चाहिए। – skaffman