कक्षा के भीतर getAttribute()
और getParameter()
तरीकों में क्या अंतर है HttpServletRequest
?
कक्षा के भीतर getAttribute()
और getParameter()
तरीकों में क्या अंतर है HttpServletRequest
?
जवाबों:
getParameter()
http अनुरोध पैरामीटर लौटाता है। वे क्लाइंट से सर्वर तक गए। उदाहरण के लिए http://example.com/servlet?parameter=1
। ही लौट सकते हैंString
getAttribute()
केवल सर्वर-साइड उपयोग के लिए है - आप अनुरोधों को उन विशेषताओं के साथ भरते हैं जिन्हें आप उसी अनुरोध के भीतर उपयोग कर सकते हैं। उदाहरण के लिए - आप एक सर्वलेट में एक विशेषता निर्धारित करते हैं, और इसे एक JSP से पढ़ते हैं। किसी भी वस्तु के लिए इस्तेमाल किया जा सकता है, न केवल स्ट्रिंग।
${attrName}
एक jsp पृष्ठ में कुछ का उपयोग करते हैं, तो वे विशेषताएँ हैं जिनका आप उपयोग कर रहे हैं request.getSession().setAttribute()
?
getAttribute()
सिर्फ सर्वर साइड उपयोग के लिए नहीं है: आप सामने के अंत पर विशेषता डेटा प्राप्त कर सकते हैं - उदाहरण के लिए JSP पृष्ठों में है, और यह प्रदर्शित
आम तौर पर, एक पैरामीटर एक स्ट्रिंग मान होता है जिसे क्लाइंट से सर्वर पर भेजे जाने के लिए सबसे अधिक जाना जाता है (जैसे एक फॉर्म पोस्ट) और सर्वलेट अनुरोध से पुनर्प्राप्त किया जाता है । इसके लिए निराशाजनक अपवाद है सर्वलेटकोटेक्स्ट प्रारंभिक पैरामीटर जो स्ट्रिंग पैरामीटर हैं जो web.xml में कॉन्फ़िगर किए गए हैं और सर्वर पर मौजूद हैं।
एक विशेषता एक सर्वर चर है जो एक निर्दिष्ट दायरे के भीतर मौजूद है:
application
, पूरे आवेदन के जीवन के लिए उपलब्ध हैsession
, सत्र के जीवन के लिए उपलब्ध हैrequest
, केवल अनुरोध के जीवन के लिए उपलब्ध हैpage
(केवल JSP), केवल वर्तमान JSP पृष्ठ के लिए उपलब्ध है 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()
है कि पहली विधि एक (धारावाहिक) जावा वस्तु निकालता है और अन्य एक स्ट्रिंग मान प्रदान करता है। दोनों ही मामलों के लिए एक नाम दिया गया है ताकि इसका मूल्य (यह स्ट्रिंग या जावा बीन हो) को देखा और निकाला जा सकता है।
यह जानना महत्वपूर्ण है कि विशेषताएँ पैरामीटर नहीं हैं ।
विशेषताओं के लिए वापसी प्रकार एक ऑब्जेक्ट है , जबकि एक पैरामीटर के लिए वापसी प्रकार एक स्ट्रिंग है । getAttribute(String name)
विधि को कॉल करते समय , ध्यान रखें कि विशेषताएँ डाली जानी चाहिए।
इसके अतिरिक्त, कोई सर्वलेट विशिष्ट गुण नहीं है , और कोई सत्र पैरामीटर नहीं हैं ।
इस पोस्ट को @ Bozho की प्रतिक्रिया पर कनेक्ट करने के उद्देश्य से लिखा गया है, अतिरिक्त जानकारी के रूप में जो अन्य लोगों के लिए उपयोगी हो सकती है।
GetAttribute और getParameter के बीच का अंतर यह है कि getParameter एक पैरामीटर का मान लौटाएगा जो HTML फॉर्म द्वारा सबमिट किया गया था या जिसे क्वेरी स्ट्रिंग में शामिल किया गया था। getAttribute एक ऑब्जेक्ट लौटाता है जिसे आपने अनुरोध में सेट किया है, एकमात्र तरीका जो आप इसका उपयोग कर सकते हैं वह एक RequestDisperer के साथ संयोजन में है। किसी अन्य संसाधन (JSP / सर्वलेट) के लिए अनुरोध को अग्रेषित करने के लिए आप एक RequestDispatcher का उपयोग करते हैं। इससे पहले कि आप अनुरोध को आगे बढ़ाएं आप एक विशेषता सेट कर सकते हैं जो अगले संसाधन के लिए उपलब्ध होगी।
- 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()
यह सभी सर्वर साइड है। आप अनुरोध में विशेषता जोड़ते हैं और आप अनुरोध को किसी अन्य संसाधन में जमा करते हैं, ग्राहक को इस बारे में पता नहीं होता है। इसलिए इसे संभालने वाला सभी कोड आमतौर पर सर्वलेट्स में होता है। गैजेट हमेशा ऑब्जेक्ट वापस करें।
getParameter
- क्लाइंट की HTML पेज से आपकी आवश्यक जानकारी प्राप्त करने के लिए उपयोग किया जाता है
getAttribute
- इसका उपयोग पहले या उसी JSP या सर्वलेट पेज में निर्धारित मापदंडों को प्राप्त करने के लिए किया जाता है।
मूल रूप से, यदि आप अग्रेषित कर रहे हैं या बस एक jsp / सर्वलेट से दूसरे में जा रहे हैं, तो आपके पास जानकारी प्राप्त करने का कोई तरीका नहीं है जब तक कि आप उन्हें एक ऑब्जेक्ट में नहीं चुनते हैं और सत्र चर में स्टोर करने के लिए सेट-विशेषता का उपयोग करते हैं।
GetAttribute का उपयोग करके, आप सत्र चर को पुनः प्राप्त कर सकते हैं।
से http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute
एक "पैरामीटर" एक नाम / मूल्य जोड़ी है जो क्लाइंट से सर्वर पर भेजा जाता है - आम तौर पर, HTML फॉर्म से। पैरामीटर में केवल स्ट्रिंग मान हो सकते हैं। कभी-कभी (उदाहरण के लिए GET अनुरोध का उपयोग करके) आप इन एन्कोडेड को सीधे URL में (बाद में; प्रत्येक का नाम = मान, और प्रत्येक जोड़ी को एक से अलग करके) देखेंगे। अन्य समय, POST जैसे तरीकों का उपयोग करते समय, वे अनुरोध के मुख्य भाग में शामिल होते हैं।
एक "विशेषता" एक सर्वर-लोकल स्टोरेज मैकेनिज्म है - स्कोप्ड अट्रिब्यूशन में संग्रहित कुछ भी कभी भी सर्वर के बाहर प्रसारित नहीं होता है जब तक कि आप स्पष्ट रूप से ऐसा नहीं करते हैं। विशेषताएँ स्ट्रिंग नाम हैं, लेकिन ऑब्जेक्ट मान संग्रहीत करें। ध्यान दें कि विशेषताएँ जावा के लिए विशिष्ट होती हैं (वे जावा ऑब्जेक्ट्स को स्टोर करती हैं), जबकि पैरामीटर प्लेटफ़ॉर्म-इंडिपेंडेंट होते हैं (वे केवल जेनरिक बाइट्स से बने स्ट्रैटेड स्ट्रिंग्स होते हैं)।
कुल विशेषताओं के चार स्कोप हैं: "पेज" (केवल JSP और टैग फ़ाइलों के लिए), "अनुरोध" (वर्तमान क्लाइंट के अनुरोध तक सीमित, अनुरोध पूरा होने के बाद नष्ट हो गया), "सत्र" (क्लाइंट के सत्र में संग्रहीत, अमान्य) सत्र समाप्त होने के बाद), "आवेदन" (आपके आवेदन के पूरे तैनात जीवनकाल के दौरान सभी घटकों तक पहुंचने के लिए मौजूद है)।
लब्बोलुआब यह है: ग्राहक से डेटा प्राप्त करते समय मापदंडों का उपयोग करें, केवल आपके एप्लिकेशन द्वारा आंतरिक रूप से उपयोग के लिए सर्वर पर वस्तुओं को संग्रहीत करते समय स्कॉप्ड विशेषताओं का उपयोग करें।
एक और मामला जब आप का उपयोग करना चाहिए .getParameter()
जब jsp में मापदंडों के साथ अग्रेषण है:
<jsp:forward page="destination.jsp">
<jsp:param name="userName" value="hamid"/>
</jsp:forward>
में destination.jsp
, आप userName
इस तरह से पहुँच सकते हैं :
request.getParameter("userName")
के बीच मूल अंतर getAttribute () और getParameter () वापसी प्रकार है।
java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)