2012-11-19 15 views
6

के साथ जावा में सत्र को संरक्षित करना मैं जावा में एक लॉगिन एप्लिकेशन बना रहा हूं। मैं जेएसपी में प्रस्तुतिकरण और सर्वलेट में सभी तर्क (डेटाबेस कनेक्टिविटी) बना रहा हूं [यह एक सही दृष्टिकोण नहीं है जिसे मैं जानता हूं]। मैं सर्वलेट में उपयोगकर्ता नाम पासवर्ड की जांच करता हूं और फिर सत्र चर बना देता हूं। और इसsendredirect

sess.setAttribute("username",oName); 

तरह सत्र जोड़ने तब मैं अपने मुखपृष्ठ में उपयोगकर्ता student.jsp कहना

response.sendRedirect("student.jsp"); 

यह सत्र variable.I सत्र चर और इस कदम को संरक्षित करने के लिए एक तरह से की जरूरत को हटा अनुप्रेषित student.jsp.I को forwading का उपयोग करने की कोशिश की लेकिन वह काम नहीं किया।

RequestDispatcher dispatcher = 
       getServletContext() 
        .getRequestDispatcher("/student.jsp"); 

      if (dispatcher != null) { 
       dispatcher.forward(request, response); 
      } 

यह आगे अनुरोध है लेकिन पृष्ठ पता student.jsp में परिवर्तित नहीं होता है जो अच्छा नहीं है। इस संबंध में किसी भी मदद की सराहना की होगी आप

+1

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

+1

यहां एक अच्छा ट्यूटोरियल है जो आपको फॉरविडिंग के लिए मदद कर सकता है। यह जेएसपी की सर्वव्यापी है जो सर्वलेट में http://www.javapractices.com/topic/TopicAction.do?Id=181 –

उत्तर

5

वापस आने के लिए और एक ही सत्र के लिए संलग्न करने के लिए निर्देशित कर दिये अनुरोध के लिए धन्यवाद, यह एक सत्र आईडी, आमतौर पर एक jsessionid में किया जाता है (या एक और नाम) कुकी या में की जरूरत है पैरामीटर के रूप में यूआरएल।

यह कुकी या यूआरएल पैरामीटर सर्वलेट कंटेनर द्वारा जोड़ा जाना चाहिए और आपको इसे स्वयं जोड़ना नहीं चाहिए।

आप अपने ब्राउज़र में कुकी नहीं दिखाई देता है, और आप यूआरएल के लिए jsessionid संलग्न नहीं कर रहे हैं, तो यह प्रत्येक अनुरोध के साथ एक नया सत्र पैदा कर रही है, और एक ही सत्र के लिए संलग्न नहीं।

-1

RequestDispatcher का उपयोग करें और request.setAttribute() का उपयोग करके अपना उपयोगकर्ता नाम बदलें। इस मामले में प्रेषक एक नया अनुरोध नहीं बनाएगा लेकिन उसी अनुरोध को forward() विधि का उपयोग करके अग्रेषित किया जाएगा।

+1

पर ओपी की ठोस समस्या को हल नहीं करेगा सब। इस तरह उपयोगकर्ता किसी भी अनुरोध में लॉग-इन नहीं है। – BalusC

0

अपनी टोमकैट context.xml फ़ाइल को संपादित करने का प्रयास करें और <Context> टैग को <Context useHttpOnly="false"> पर बदलें, इससे मेरी सहायता हुई।