मेरे पास एक सर्वलेट है जो एक मल्टीपार्ट फॉर्म पोस्ट को संभालता है। पोस्ट वास्तव में पृष्ठ में एम्बेडेड एक फ्लैश फ़ाइल अपलोड घटक द्वारा किया जा रहा है। कुछ ब्राउज़रों में, फ्लैश-जेनरेट किए गए POST में JSESSIONID शामिल नहीं है जो पोस्ट के दौरान सत्र से कुछ जानकारी लोड करना असंभव बना रहा है।JSESSIONID का उपयोग करके मैन्युअल रूप से जावा सत्र कैसे लोड कर सकता हूं?
फ्लैश अपलोड घटक में एक विशेष फॉर्म फ़ील्ड के भीतर कुकी और सत्र जानकारी शामिल है। इस फॉर्म फ़ील्ड का उपयोग करके, मैं वास्तव में JSESSIONID मान पुनर्प्राप्त कर सकता हूं। समस्या यह है कि, मुझे नहीं पता कि इस विशिष्ट सत्र को मैन्युअल रूप से लोड करने के लिए इस JSESSIONID मान का उपयोग कैसे करें।
@Override
public void sessionCreated(final HttpSessionEvent se) {
final HttpSession session = se.getSession();
final ServletContext context = session.getServletContext();
context.setAttribute(session.getId(), session);
}
@Override
public void sessionDestroyed(final HttpSessionEvent se) {
final HttpSession session = se.getSession();
final ServletContext context = session.getServletContext();
context.removeAttribute(session.getId());
}
कौन सा उनके अद्वितीय आईडी द्वारा मैप विशेषताओं के रूप में ServletContext के सभी सत्रों कहते हैं: -
संपादित ChssPly76 के समाधान के आधार पर, मैं निम्नलिखित HttpSessionListener कार्यान्वयन बनाया। मैं इसके बजाय संदर्भ में सत्र का मानचित्र डाल सकता हूं, लेकिन यह अनावश्यक लगता है। कृपया इस फैसले पर कोई विचार पोस्ट करें। इसके बाद, मैं आईडी द्वारा सत्र को हल करने के लिए अपने सर्वलेट को निम्नलिखित पद्धति जोड़ें:
private HttpSession getSession(final String sessionId) {
final ServletContext context = getServletContext();
final HttpSession session = (HttpSession) context.getAttribute(sessionId);
return session;
}
+1 .. बहुत अच्छा सवाल – peakit