GetAttribute () और getParameter () के बीच अंतर


282

कक्षा के भीतर getAttribute()और getParameter()तरीकों में क्या अंतर है HttpServletRequest?


1
किस क्लास / पैकेज / एपीआई में? क्या आपने संबंधित विधियों के लिए JavaDocs पढ़ने की कोशिश की?
एंड्रयू थॉम्पसन


विशेषता केवल http अनुरोध के लिए है जो सर्वलेट्स को एक साथ काम करने में मदद करता है
बिटफ़िशियस

जवाबों:


328
  • getParameter()http अनुरोध पैरामीटर लौटाता है। वे क्लाइंट से सर्वर तक गए। उदाहरण के लिए http://example.com/servlet?parameter=1। ही लौट सकते हैंString

  • getAttribute()केवल सर्वर-साइड उपयोग के लिए है - आप अनुरोधों को उन विशेषताओं के साथ भरते हैं जिन्हें आप उसी अनुरोध के भीतर उपयोग कर सकते हैं। उदाहरण के लिए - आप एक सर्वलेट में एक विशेषता निर्धारित करते हैं, और इसे एक JSP से पढ़ते हैं। किसी भी वस्तु के लिए इस्तेमाल किया जा सकता है, न केवल स्ट्रिंग।


3
मुझे लगता है कि जब आप ${attrName}एक jsp पृष्ठ में कुछ का उपयोग करते हैं, तो वे विशेषताएँ हैं जिनका आप उपयोग कर रहे हैं request.getSession().setAttribute()?
ha9u63ar

चूंकि अनुरोध विशेषता सर्वर साइड पर संग्रहीत है, क्या मैं अंतर-सर्वर पोस्ट-पुनर्निर्देशित-प्राप्त अनुरोध के लिए अनुरोध विशेषता सेट कर सकता हूं? मैं जेएसएफ में एक सर्वर से दूसरे सर्वर पर रीडायरेक्ट अनुरोध में एक विशेषता के माध्यम से जानकारी भेजना चाहता हूं। मैं अब तक पोस्ट अनुरोध के माध्यम से भेजने में सक्षम हूं।
user2918640

इस मामले में, "पैरामीटर" को "क्वेरी स्ट्रिंग" का पर्याय लगता है
BTRUE

getAttribute()सिर्फ सर्वर साइड उपयोग के लिए नहीं है: आप सामने के अंत पर विशेषता डेटा प्राप्त कर सकते हैं - उदाहरण के लिए JSP पृष्ठों में है, और यह प्रदर्शित
parsecer

49

आम तौर पर, एक पैरामीटर एक स्ट्रिंग मान होता है जिसे क्लाइंट से सर्वर पर भेजे जाने के लिए सबसे अधिक जाना जाता है (जैसे एक फॉर्म पोस्ट) और सर्वलेट अनुरोध से पुनर्प्राप्त किया जाता है । इसके लिए निराशाजनक अपवाद है सर्वलेटकोटेक्स्ट प्रारंभिक पैरामीटर जो स्ट्रिंग पैरामीटर हैं जो web.xml में कॉन्फ़िगर किए गए हैं और सर्वर पर मौजूद हैं।

एक विशेषता एक सर्वर चर है जो एक निर्दिष्ट दायरे के भीतर मौजूद है:

  • application, पूरे आवेदन के जीवन के लिए उपलब्ध है
  • session, सत्र के जीवन के लिए उपलब्ध है
  • request, केवल अनुरोध के जीवन के लिए उपलब्ध है
  • page (केवल JSP), केवल वर्तमान JSP पृष्ठ के लिए उपलब्ध है

"आम तौर पर, एक पैरामीटर एक स्ट्रिंग मान है" तार के अलावा हम क्या भेज सकते हैं?
हनी

^ अनुरोध के मामले में ऑब्जेक्ट्स ।सेट
एट्रिब्यूट

37

request.getParameter ()

हम request.getParameter()अनुरोध पैरामीटर (यानी HTML फॉर्म पोस्ट करके भेजे गए डेटा) निकालने के लिए उपयोग करते हैं । request.getParameter()हमेशा रिटर्न Stringमूल्य और डेटा ग्राहक से आते हैं।

request.getAttribute ()

हम request.getAttribute()सर्वर साइड पर अनुरोध क्षेत्र में एक वस्तु को प्राप्त करने के लिए उपयोग करते हैं अर्थात उपयोग कर रहे हैं request.setAttribute()। आप यहां किसी भी प्रकार की वस्तु जोड़ सकते हैं, जैसे कि Strings, कस्टम ऑब्जेक्ट, वास्तव में कोई भी वस्तु। आप अनुरोध में विशेषता जोड़ते हैं और अनुरोध को किसी अन्य संसाधन पर अग्रेषित करते हैं, क्लाइंट को इस बारे में पता नहीं होता है। इसलिए इसे संभालने वाले सभी कोड आमतौर पर JSP / सर्वलेट्स में होंगे। आप request.setAttribute()अतिरिक्त जानकारी जोड़ने के लिए उपयोग कर सकते हैं और वर्तमान अनुरोध को किसी अन्य संसाधन पर अग्रेषित / पुनर्निर्देशित कर सकते हैं ।

उदाहरण के लिए, पहले .jsp के बारे में विचार करें,

//First Page : first.jsp
<%@ page import="java.util.*" import="java.io.*"%>
<% request.setAttribute("PAGE", "first.jsp");%>
<jsp:forward page="/second.jsp"/>

और दूसरा.jsp:

<%@ page import="java.util.*" import="java.io.*"%>
From Which Page : <%=request.getAttribute("PAGE")%><br>
Data From Client : <%=request.getParameter("CLIENT")%>

अपने ब्राउज़र से, सबसे पहले चलाएँ । CLIENT = आप और आपके ब्राउज़र पर आउटपुट है

From Which Page : *first.jsp*
Data From Client : you

के बीच मूल अंतर getAttribute()और getParameter()है कि पहली विधि एक (धारावाहिक) जावा वस्तु निकालता है और अन्य एक स्ट्रिंग मान प्रदान करता है। दोनों ही मामलों के लिए एक नाम दिया गया है ताकि इसका मूल्य (यह स्ट्रिंग या जावा बीन हो) को देखा और निकाला जा सकता है।


4
यह एक बेहतरीन उदाहरण था। यह स्वीकृत उत्तर होना चाहिए। स्वीकृत उत्तर सही है लेकिन नए कामर्स के लिए एक उदाहरण ने सब कुछ स्पष्ट कर दिया है। धन्यवाद।
CapturedTree

26

यह जानना महत्वपूर्ण है कि विशेषताएँ पैरामीटर नहीं हैं

विशेषताओं के लिए वापसी प्रकार एक ऑब्जेक्ट है , जबकि एक पैरामीटर के लिए वापसी प्रकार एक स्ट्रिंग हैgetAttribute(String name)विधि को कॉल करते समय , ध्यान रखें कि विशेषताएँ डाली जानी चाहिए।

इसके अतिरिक्त, कोई सर्वलेट विशिष्ट गुण नहीं है , और कोई सत्र पैरामीटर नहीं हैं ।

इस पोस्ट को @ Bozho की प्रतिक्रिया पर कनेक्ट करने के उद्देश्य से लिखा गया है, अतिरिक्त जानकारी के रूप में जो अन्य लोगों के लिए उपयोगी हो सकती है।


9

GetAttribute और getParameter के बीच का अंतर यह है कि getParameter एक पैरामीटर का मान लौटाएगा जो HTML फॉर्म द्वारा सबमिट किया गया था या जिसे क्वेरी स्ट्रिंग में शामिल किया गया था। getAttribute एक ऑब्जेक्ट लौटाता है जिसे आपने अनुरोध में सेट किया है, एकमात्र तरीका जो आप इसका उपयोग कर सकते हैं वह एक RequestDisperer के साथ संयोजन में है। किसी अन्य संसाधन (JSP / सर्वलेट) के लिए अनुरोध को अग्रेषित करने के लिए आप एक RequestDispatcher का उपयोग करते हैं। इससे पहले कि आप अनुरोध को आगे बढ़ाएं आप एक विशेषता सेट कर सकते हैं जो अगले संसाधन के लिए उपलब्ध होगी।


5

- getParameter () :

<html>
<body>
<form name="testForm" method="post" action="testJSP.jsp">
<input type="text" name="testParam" value="ClientParam">
<input type="submit">
</form>
</body>
</html>

    <html>
    <body>
    <%
    String sValue = request.getParameter("testParam");
    %>
    <%= sValue %>
    </body>
    </html>

request.getParameter("testParam")इनपुट बॉक्स के पोस्ट किए गए फॉर्म से "टेस्टपरम" नाम का मान प्राप्त करेगा जो कि "क्लाइंट परम" है। यह तब इसे प्रिंट करेगा, इसलिए आपको स्क्रीन पर "क्लाइंट परम" देखना चाहिए। इसलिए request.getParameter () क्लाइंट द्वारा सबमिट किए गए मान को पुनः प्राप्त करेगा। आपको सर्वर साइड पर मान मिलेगा।

- getAttribute ():, request.getAttribute() यह सभी सर्वर साइड है। आप अनुरोध में विशेषता जोड़ते हैं और आप अनुरोध को किसी अन्य संसाधन में जमा करते हैं, ग्राहक को इस बारे में पता नहीं होता है। इसलिए इसे संभालने वाला सभी कोड आमतौर पर सर्वलेट्स में होता है। गैजेट हमेशा ऑब्जेक्ट वापस करें।


4

getParameter - क्लाइंट की HTML पेज से आपकी आवश्यक जानकारी प्राप्त करने के लिए उपयोग किया जाता है

getAttribute - इसका उपयोग पहले या उसी JSP या सर्वलेट पेज में निर्धारित मापदंडों को प्राप्त करने के लिए किया जाता है।

मूल रूप से, यदि आप अग्रेषित कर रहे हैं या बस एक jsp / सर्वलेट से दूसरे में जा रहे हैं, तो आपके पास जानकारी प्राप्त करने का कोई तरीका नहीं है जब तक कि आप उन्हें एक ऑब्जेक्ट में नहीं चुनते हैं और सत्र चर में स्टोर करने के लिए सेट-विशेषता का उपयोग करते हैं।

GetAttribute का उपयोग करके, आप सत्र चर को पुनः प्राप्त कर सकते हैं।


3

से http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute

एक "पैरामीटर" एक नाम / मूल्य जोड़ी है जो क्लाइंट से सर्वर पर भेजा जाता है - आम तौर पर, HTML फॉर्म से। पैरामीटर में केवल स्ट्रिंग मान हो सकते हैं। कभी-कभी (उदाहरण के लिए GET अनुरोध का उपयोग करके) आप इन एन्कोडेड को सीधे URL में (बाद में; प्रत्येक का नाम = मान, और प्रत्येक जोड़ी को एक से अलग करके) देखेंगे। अन्य समय, POST जैसे तरीकों का उपयोग करते समय, वे अनुरोध के मुख्य भाग में शामिल होते हैं।

एक "विशेषता" एक सर्वर-लोकल स्टोरेज मैकेनिज्म है - स्कोप्ड अट्रिब्यूशन में संग्रहित कुछ भी कभी भी सर्वर के बाहर प्रसारित नहीं होता है जब तक कि आप स्पष्ट रूप से ऐसा नहीं करते हैं। विशेषताएँ स्ट्रिंग नाम हैं, लेकिन ऑब्जेक्ट मान संग्रहीत करें। ध्यान दें कि विशेषताएँ जावा के लिए विशिष्ट होती हैं (वे जावा ऑब्जेक्ट्स को स्टोर करती हैं), जबकि पैरामीटर प्लेटफ़ॉर्म-इंडिपेंडेंट होते हैं (वे केवल जेनरिक बाइट्स से बने स्ट्रैटेड स्ट्रिंग्स होते हैं)।

कुल विशेषताओं के चार स्कोप हैं: "पेज" (केवल JSP और टैग फ़ाइलों के लिए), "अनुरोध" (वर्तमान क्लाइंट के अनुरोध तक सीमित, अनुरोध पूरा होने के बाद नष्ट हो गया), "सत्र" (क्लाइंट के सत्र में संग्रहीत, अमान्य) सत्र समाप्त होने के बाद), "आवेदन" (आपके आवेदन के पूरे तैनात जीवनकाल के दौरान सभी घटकों तक पहुंचने के लिए मौजूद है)।

लब्बोलुआब यह है: ग्राहक से डेटा प्राप्त करते समय मापदंडों का उपयोग करें, केवल आपके एप्लिकेशन द्वारा आंतरिक रूप से उपयोग के लिए सर्वर पर वस्तुओं को संग्रहीत करते समय स्कॉप्ड विशेषताओं का उपयोग करें।


3

एक और मामला जब आप का उपयोग करना चाहिए .getParameter()जब jsp में मापदंडों के साथ अग्रेषण है:

<jsp:forward page="destination.jsp">
    <jsp:param name="userName" value="hamid"/>
</jsp:forward>

में destination.jsp, आप userNameइस तरह से पहुँच सकते हैं :

request.getParameter("userName")

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.