मैं WinXP, एक्लिप्स इंडिगो और Google वेब प्लगइन में एक वेबपैप पर काम कर रहा हूं।सर्वलेट की sendRedirect() मेरे सत्र विशेषताओं को मारता है
मेरे पास एक साधारण रूप है जो उपयोगकर्ता (उदा। ईमेल) से मूल्य लेता है, इसेनामक एक सर्वलेट में भेजता है जो इसे संसाधित करता है और सत्र में ईमेल मान बचाता है। SignIn
कोड बहुत ही सरल, यहाँ है क्या अपने doGet
ज्यादातर करता है:
String email = req.getParameter("email"); //getting the parameter from html form
...
...
HttpSession session = req.getSession(); //create a new session
session.setAttribute("email", email);
अब तक तो अच्छा, मैं सत्यापित किया है कि मूल्यों को इस बिंदु पर नहीं null
हैं। अब समस्या आती है, मैं एक और सर्वलेट (ShowOnline.java
) पर रीडायरेक्ट करना चाहता हूं जिसे कुछ और प्रोसेसिंग करने की आवश्यकता है। जब मैं लिखने
resp.sendRedirect(resp.encodeRedirectURL("/ShowOnlineServlet"));
ShowOnline
null
सत्र मान हो जाता है
जब मैं लिखने
getServletConfig().getServletContext().getRequestDispatcher("/ShowOnlineServlet");
सब कुछ ठीक है (एक ही ईमेल मैं बचाया एक दूसरे से पहले अब null
है विशेषता), ईमेल विशेषता पहले से null
नहीं है!
क्या चल रहा है? sendRedirect()
बस आपके ब्राउज़र को एक नया अनुरोध भेजता है, इसे सत्र के दायरे को प्रभावित नहीं करना चाहिए। मैंने कुकीज़ की जांच की है और वे ठीक हैं (यह सुनिश्चित करने के लिए पहले से ही एक ही सत्र है क्योंकि यह पहला और एकमात्र सत्र है जो मेरा वेबपैप बनाता है और इसके अलावा मैंने एसिसन आईडी की भी परेशान और जांच की है और वे दोनों अनुरोधों पर समान हैं) ।
sendRedirect()
और forward()
के बीच कोई अंतर क्यों होगा? आसान समाधान forward()
का उपयोग करना होगा, लेकिन मैं इसे जाने से पहले इसके नीचे जाना चाहता हूं, मुझे लगता है कि यह समझना मेरे लिए महत्वपूर्ण है कि क्या हुआ। मुझे यकीन नहीं है कि मुझे यह जानने का विचार पसंद नहीं है कि इस तरह की बुनियादी अवधारणाओं पर क्या चल रहा है (मेरा पूरा वेबपैप इस बिंदु पर बहुत सरल और बुनियादी है क्योंकि मैं शुरुआत करने वाला हूं)।
कोई भी विचार विचार या सुझाव गर्मजोशी से स्वागत करेंगे!
मुझे लगता है कि यह पल sendredirect के बजाय आगे का उपयोग करने पर, लेकिन मैं बाद में मैं अपने सत्र गुणों के डर से किसी स्पष्ट कारण के अशक्त जाना होगा बिना sendredirect का उपयोग करना चाहें लगता है संभव हो सकता है। –
@ होम: ओपी ने पुष्टि की कि सत्र आईडी पहले और बाद में समान है। – BalusC
क्या होता है जब आप रीडायरेक्ट नहीं भेजते हैं और मैन्युअल रूप से ब्राउज़र से/ShowOnlineServlet पर जाते हैं? –