2009-12-31 15 views
7

में सत्र समय समाप्ति के बारे में उपयोगकर्ता को सूचित करें मेरी आवश्यकता है कि उपयोगकर्ता को पॉपअप के साथ सूचित किया जाए कि उपयोगकर्ता सत्र वेब सेकंड पर समय-समय पर बाहर निकलने वाला है, यदि उपयोगकर्ता वेब पेज पर कोई गतिविधि नहीं करता है।जावा ईई

इस आवश्यकता में वृद्धि पॉपअप में गति x सेकंड गतिशील रूप से घटाना है।

मैं जिस पर्यावरण का उपयोग करता हूं वह जावा ईई है।

उत्तर

10

HttpSession#getMaxInactiveInterval() और setTimeout() का उपयोग करें। इस विशेष उद्देश्य में अजाक्स की कोई आवश्यकता नहीं है, जब तक कि आप प्रत्येक ग्राहक गतिविधि (मतदान) पर टाइमआउट स्थगित नहीं करना चाहते हैं।

बुनियादी उदाहरण:

<script> 
    var secondsBeforeExpire = ${pageContext.session.maxInactiveInterval}; 
    var timeToDecide = 15; // Give client 15 seconds to choose. 
    setTimeout(function() { 
     alert('Your session is about to timeout in ' + timeToDecide + ' seconds!') 
    }, (secondsBeforeExpire - timeToDecide) * 1000); 
</script> 

बुनियादी alert() के संदेश के अंदर समय घटती करने के लिए जादुई, तो बजाय आप HTML डोम पेड़ और के माध्यम से सामग्री पर नियंत्रण है जिसमें आप एक div से आच्छादन की आवश्यकता होगी पाठ को गतिशील रूप से बदलने के लिए 1 सेकंड पर setTimeout() का उपयोग करें।

ध्यान दें कि ईएल को काम करने के लिए JspServlet द्वारा इस स्क्रिप्ट को सेवा दी जानी चाहिए। इस प्रकार, आप JSP पेज के HTML <head> में स्क्रिप्ट डाल करने की आवश्यकता है, या यदि आप वास्तव में एक अलग *.js फ़ाइल में सभी जे एस करना चाहते हैं, तो आप यह बताने के लिए JspServlet रूप में अच्छी तरह से किसी भी *.js अनुरोध को संभाल की जरूरत है।

+0

वास्तव में सहायक सुझाव और बिंदु तक। धन्यवाद। –

+0

आप सही हैं, AJAX के लिए कोई सख्त आवश्यकता नहीं है लेकिन सत्र को अपडेट करने के लिए 'XMLHttpRequest' का उपयोग करने के बारे में अच्छी बात यह है कि उपयोगकर्ता को टाइमआउट से बचने के लिए नेविगेट करने की आवश्यकता नहीं होगी। उदाहरण के लिए फॉर्म भरते समय यह आसान हो सकता है। –

+0

"यदि आप वास्तव में एक अलग * .js फ़ाइल में सभी जेएस रखना चाहते हैं, तो आपको JspServlet को किसी भी * .js अनुरोधों को संभालने की ज़रूरत है" - क्या आप इसे समझा सकते हैं, मैं जेएस से परिचित नहीं हूं, और मुझे यह फ़ंक्शन एक अलग * .js फ़ाइल में रखना होगा, क्योंकि मेरे पास बहुत सारे जेएसपी पेज हैं? इस तरह काम करने के लिए मुझे क्या करना चाहिए? @BalusC –

1

मुझे नहीं लगता कि जावा/जावा ईई वास्तव में उपयोगी होगा क्योंकि क्लाइंट-साइड (यानी जावास्क्रिप्ट का उपयोग करके) को संभालने की आवश्यकता है। एक समाधान जो मैं सोच सकता हूं वह एक प्रकार का टाइमर सेट करना होगा जो उपयोगकर्ता के टाइमआउट से कुछ मिनट पहले उपयोगकर्ता को सूचित करेगा।

हालांकि इस बारे में googling, मैं एरिक Pascarello के Update User's Session with AJAX ब्लॉग पोस्ट (और पुनः लोड संस्करण Updating User Session with Ajax - Round 2) कि ठीक इस तरह के एक समाधान का वर्णन करता है (और सत्र को अपडेट करने का XMLHttpRequest का उपयोग करें) पाया। उनकी अजाक्स सत्र प्रबंधन स्क्रिप्ट here उपलब्ध है।

+0

बीटीडब्ल्यू कोई भी लिंक काम नहीं कर रहा है –

+0

स्क्रिप्ट का लिंक ठीक है और अन्य दो वेब संग्रह में पाए जा सकते हैं: https://web.archive.org/web/20081203190028/http://radio.javaranch .com/pascarello/2005/10/25/1130246930301.html –

संबंधित मुद्दे