2010-01-15 17 views

उत्तर

8

एक वर्ग को परिभाषित करें, SessionTimeoutIndicator है, जो इंटरफेस javax.servlet.http.HttpSessionBindingListener लागू करता है का कहना है।

अगला SessionTimeoutIndicator ऑब्जेक्ट बनाएं और इसे उपयोगकर्ता सत्र में जोड़ें।

जब सत्र हटा दिया जाता है, तो SessionTimeoutIndicator.valueUnbound() विधि सर्वलेट इंजन द्वारा कॉल की जाएगी।

आप आवश्यक ऑपरेशन करने के लिए valueUnbound() लागू कर सकते हैं।

उम्मीद है कि यह अब साफ़ हो गया है।

+9

बस 'HttpSessionListener # sessionDestroyed()' का उपयोग करके चीजों को और अधिक आसान बना दिया जाएगा। – BalusC

26

हाँ जाँच करने के लिए किसी भी अन्य रास्ता नहीं है:

  • आप HttpServletRequest.getSession(false) कॉल कर सकते हैं और आप एक null के बजाय मिल जाएगा एक सत्र यदि पहले से कोई सक्रिय नहीं है।

  • आप अपने web.xml में एक जीवन चक्र श्रोता (HttpSessionListener का उपयोग करके) परिभाषित कर सकते हैं। इस तरह आप उस सत्र को अधिसूचित कर सकते हैं जब एक सत्र धूल काटता है।

+2

+1। बीटीडब्ल्यू, इसे नाम देने के लिए अच्छा है, इसलिए HttpSessionListener एक है। –

+2

'HttpSessionListener' को लागू करने का तरीका है। बस 'sessionDestroyed() 'पर हुक। – BalusC

21

session.isNew के साथ आप पूरी तरह से नए सत्रों से कालबाह्य सत्रों को अलग नहीं कर सकते हैं। नए और मौजूदा (मान्य/समय सीमा समाप्त) सत्र के बीच अंतर करने

if (request.getRequestedSessionId() != null 
     && !request.isRequestedSessionIdValid()) { 
    // Session is expired 
} 

उपयोग getRequestedSessionId, और isRequestedSessionIdValid का उपयोग betwheen वैध भेद करने के लिए और नए/की अवधि समाप्त हो सत्र: आप देख सकते हैं सत्र समाप्त हो गया है और/या के साथ टाइम आउट हो गया ।

आप इस कोड को Filter में डाल सकते हैं।

-1

मैं इस

HttpSessionListener.sessionDestroyed() 

और इस

if (request.getRequestedSessionId() != null 
     && !request.isRequestedSessionIdValid()) { 
    // Session is expired 
} 

दोनों काम की कोशिश की है, लेकिन नहीं 100% प्रतिशत क्या आप जानते हैं क्योंकि यह दिखा रहती है "सत्र समाप्त हो गई है" भले ही जब एप्लिकेशन पहले शुरू होता है अप। क्यूं कर? सहायता के लिए धन्यवाद। दूसरे सुझाव के लिए

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