2009-05-26 14 views
8

जावा में, HttpServletRequest ऑब्जेक्ट का विशेषता फ़ील्ड getAttribute विधि का उपयोग करके पुनर्प्राप्त किया जा सकता है:एक HttpServletRequest मानचित्र का एक विशेषता HTTP कच्चे HTTP अनुरोध के लिए कैसे है?

String myAttribute = request.getAttribute("[parameter name]"); 

जहां HttpServletRequest विशेषता डेटा कच्चे HTTP अनुरोध में संग्रहीत किया जाता है? क्या यह अनुरोध के शरीर में है?

उदाहरण के लिए, मैं एक कच्चे जीईटी HTTP अनुरोध बनाने की कोशिश कर रहा हूं जो कुछ क्लाइंट प्रोग्राम का उपयोग करके मेरे सर्वलेट को भेजा जाएगा। मेरी servlet.doGet() विधि इस तरह कुछ होगी:

public void doGet(HttpServletRequest request, HttpServletResponse response) 
{ 
    String myAttribute = request.getAttribute("my.username"); 
    ... 
} 

मुझे कच्चे HTTP अनुरोध में 'my.username' डेटा कहां रखना चाहिए ताकि 'myAttribute' स्ट्रिंग को "जॉन डो" मान प्राप्त हो एट्रिब्यूशन के बाद?

उत्तर

12

@ gid का जवाब देने के लिए जोड़ने के लिए, गुण HTTP अनुरोध में किसी भी तरह से मौजूद नहीं हैं के रूप में यह तार पर यात्रा करता है। अनुरोध को संसाधित करते समय वे (आपके कोड द्वारा) बनाए जाते हैं। एक बहुत ही सामान्य उपयोग सर्वर सेट (उर्फ बनाने) कुछ विशेषताओं के लिए है और फिर एक जेएसपी को अग्रेषित करना है जो उन विशेषताओं का उपयोग करेगा। यही है, एक HTTP अनुरोध आता है और एक सर्वलेट को भेजा जाता है। सर्वलेट कुछ विशेषताओं को जोड़ता है। अतिरिक्त सर्वर-साइड प्रसंस्करण किया जाता है, अंततः पृष्ठ को जेएसपी में भेजता है, जहां विशेषताओं का उपयोग किया जाता है। जेएसपी में प्रतिक्रिया उत्पन्न होती है। HTTP अनुरोध और HTTP प्रतिक्रिया में कोई विशेषता नहीं है। गुण 100% पूरी तरह सर्वर-साइड जानकारी हैं।

जब कोई भी दिया गया HTTP अनुरोध पूरा हो गया है, तो गुण कचरे के संग्रह के लिए उपलब्ध हो जाते हैं (जब तक कि वे किसी अन्य स्थान पर किसी सत्र में बने न हों)। गुण केवल एक अनुरोध ऑब्जेक्ट से जुड़े होते हैं।

17

बस स्पष्ट होने के लिए मुझे लगता है कि @ जॉन का जवाब इसे पूरी तरह स्पष्ट नहीं करता है। HttpServletRequest पर GetAttribute और setAttribute के मानों को वास्तव में तार पर भेजे गए कार्यों पर मौजूद नहीं है, वे केवल सर्वर पक्ष हैं।

// only visible in this request and on the server 
request.getAttribute("myAttribute"); 

// value of the User-Agent header sent by the client 
request.getHeader("User-Agent"); 

// value of param1 either from the query string or form post body 
request.getParameter("param1"); 
+0

दरअसल, गैरेथ को स्पष्ट करने के लिए धन्यवाद :) – Jon

+0

कोई चिंता नहीं ... टा –

3

मुझे लगता है कि वह वास्तव में क्या पूछ रहा है वह है "मैं अपने कार्यक्रम में पैरामीटर्स कैसे प्राप्त करूं", विशेषता नहीं। यदि यह सवाल है, तो यूआरएल के हिस्से के रूप में जीईटी अनुरोध में पैरामीटर भेजें (एक प्रश्न चिह्न के बाद, http://myhost.com/myapp?name=joe&age=26) फिर request.get पैरामीटर ("नाम") और request.get पैरामीटर ("आयु") का उपयोग करके उन्हें पुनर्प्राप्त करें, या जो भी हो आप की जरूरत है।

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