JSP वाले URL से पैरामीटर कैसे प्राप्त करें


192

JSP में मुझे URL से पैरामीटर कैसे मिलते हैं?

उदाहरण के लिए मेरे पास एक URL है जिसे www.somesite.com/Transaction_List.jsp?accountID=5
मैं प्राप्त करना चाहता हूं। 5.

क्या कोई अनुरोध है। सत्रांक ("खाता") जैसे सत्र या कुछ समान है?

जवाबों:


177

GET अनुरोध में, क्वेरी स्ट्रिंग (URL पर प्रश्न चिह्न के बाद का डेटा) से अनुरोध पैरामीटर लिया जाता है। उदाहरण के लिए, URL http://hostname.com?p1=v1&p2=v2 में दो अनुरोध पैरामीटर हैं - - p1 और P2। पोस्ट अनुरोध में, अनुरोध पैरामीटर क्वेरी स्ट्रिंग और पोस्ट किए गए डेटा दोनों से लिया जाता है जो अनुरोध के शरीर में एन्कोडेड है।

यह उदाहरण प्रदर्शित करता है कि जनरेट किए गए आउटपुट में अनुरोध पैरामीटर के मूल्य को कैसे शामिल किया जाए:

Hello <b><%= request.getParameter("name") %></b>!

यदि पृष्ठ URL से एक्सेस किया गया था:

http://hostname.com/mywebapp/mypage.jsp?name=John+Smith

परिणामी उत्पादन होगा:

Hello <b>John Smith</b>!

यदि नाम क्वेरी स्ट्रिंग पर निर्दिष्ट नहीं है, तो आउटपुट होगा:

Hello <b>null</b>!

यह उदाहरण किसी स्क्रिप्ट में क्वेरी पैरामीटर के मान का उपयोग करता है:

<%
    if (request.getParameter("name") == null) {
        out.println("Please enter your name.");
    } else {
        out.println("Hello <b>"+request. getParameter("name")+"</b>!");
    }
%>

97
पटकथा को बुरा व्यवहार माना जाता है।
बालुसक

14
XmlEncode को मत भूलना .. यह वर्तमान में परिलक्षित
xss के

5
-1 XSS भेद्यता के लिए। एक स्क्रिप्ट का उपयोग करने के लिए भी -1 होगा जब मैं दो बार वोट कर सकता हूं तो ईएल का उपयोग करके काम किया जा सकता है। गंभीरता से, यह मत करो
जूल्स

बेहतर समाधान मौजूद होने पर स्क्रिप्टलेट का उपयोग करना कोड गुणवत्ता के लिए हानिकारक है।
सुकेतु भूता

2
"स्क्रिप्टलेट्स को बुरा व्यवहार माना जाता है।" के बारे में, विकल्प के लिए एक और प्रश्न में इस उत्तर को देखें ।
Pixelstix

243

यूनिफाइड एक्सप्रेशन लैंग्वेज के निहित वस्तुओं के बारे में , जावा ईई 5 ट्यूटोरियल लिखते हैं:

प्रबल वस्तु

JSP अभिव्यक्ति भाषा निहित वस्तुओं के एक सेट को परिभाषित करती है:

  • pageContext: जेएसपी पेज के लिए संदर्भ। सहित विभिन्न वस्तुओं के लिए पहुँच प्रदान करता है:
    • servletContext: JSP पेज के सर्वलेट और उसी एप्लिकेशन में निहित किसी भी वेब घटक के लिए संदर्भ। वेब संदर्भ तक पहुँच देखें।
    • session: ग्राहक के लिए सत्र वस्तु। ग्राहक स्थिति बनाए रखना देखें।
    • request: JSP पेज के निष्पादन को ट्रिगर करने का अनुरोध। अनुरोध से जानकारी प्राप्त करना देखें ।
    • response: JSP पृष्ठ द्वारा प्रतिक्रिया लौटा दी गई। प्रतिक्रियाएँ देखना।
  • इसके अलावा, कई निहित वस्तुएँ उपलब्ध हैं जो निम्नलिखित वस्तुओं तक आसानी से पहुँच प्रदान करती हैं:
    • param: एकल मान के लिए अनुरोध पैरामीटर नाम को मैप करता है
    • paramValues: मूल्यों के एक सरणी के लिए एक अनुरोध पैरामीटर नाम मैप्स
    • header: किसी एकल मान के लिए अनुरोध हेडर नाम को मैप करता है
    • headerValues: मूल्यों के एक सरणी के लिए एक अनुरोध हेडर नाम मैप्स
    • cookie: एकल कुकी के लिए कुकी नाम को मैप करता है
    • initParam: मैप्स एक संदर्भ इनिशियलाइज़ेशन पैरामीटर नाम को एक मूल्य पर
  • अंत में, ऐसी वस्तुएं हैं जो स्कोप ऑब्जेक्ट्स का उपयोग करके वर्णित विभिन्न स्कूप किए गए चर तक पहुंच की अनुमति देती हैं।
    • pageScope: मैप्स पेज-स्कोपेड वैरिएबल नाम उनके मानों के लिए
    • requestScope: मैप्स अनुरोध-स्कोप किए गए वैरिएबल नामों को उनके मानों के लिए कहते हैं
    • sessionScope: मैप्स सेशन-स्कोप्ड वैरिएबल नेम को उनके वैल्यूज में
    • applicationScope: मैप्स एप्लीकेशन-स्कोप्ड वैरिएबल नेम को उनके मानों तक

दिलचस्प भाग बोल्ड में हैं :)

इसलिए, अपने प्रश्न का उत्तर देने के लिए, आपको इसे इस तरह से उपयोग करने में सक्षम होना चाहिए (ईएल का उपयोग करके):

${param.accountID}

या, JSP स्क्रिप्टलेट्स (अनुशंसित नहीं) का उपयोग कर :

<%
    String accountId = request.getParameter("accountID");
%>

क्या ईएल को सक्षम करने के लिए आपको कुछ करना है? मैं jboss6 का उपयोग कर रहा हूं और जब मैं $ {param.accountID} का उपयोग करता हूं तो इसे ब्राउज़र के नियमित पाठ के रूप में माना जाता है।
simgineer


81

ईएल (JSP अभिव्यक्ति भाषा) का उपयोग करें:

${param.accountID}


1
क्या यह URL डिकोडिंग को हैंडल करता है?
वाइकिंगस्टेव

@vikingsteve हाँ यह करता है
नील

2
लेकिन यह एचटीएमएल / एक्सएमएल संस्थाओं के रूप में रीकोडिंग को नहीं संभालता है, जो एक्सएसएस की रोकथाम के लिए आवश्यक है। <c:out value="${param.accountID}" />ऐसा करने के लिए JSTL का उपयोग करें ।
जूल्स

21

अगर मैं यहाँ एक टिप्पणी जोड़ सकता हूँ ...

<c:out value="${param.accountID}"></c:out>

मेरे लिए काम नहीं करता है (यह एक 0 प्रिंट करता है)।

इसके बजाय, यह काम करता है:

<c:out value="${param['accountID']}"></c:out>


वर्थ नोटिंग: परम में केवल URL क्वेरी तर्क (जैसे मॉडल मानचित्र में मान) से अधिक मूल्य शामिल हैं। यदि आपको विशेष रूप से यह जांचने की आवश्यकता है कि क्या कोई मान URL क्वेरी तर्क में है (और, उदाहरण के लिए एक फ़ॉर्म सबमिशन के भाग के रूप में प्रस्तुत किया जाएगा), तो आप $ {pageContext.request.queryString} पर देख सकते हैं - लेकिन यह नीचे टूट गया है params की तरह अच्छा नक्शा है।
पॉल



0

उदाहरण आप सब्जेक्ट रिकॉर्ड को इसके subject_id से हटाना चाहते थे

@RequestMapping(value="subject_setup/delete/{subjectid}",method = RequestMethod.GET)
public ModelAndView delete(@PathVariable int subjectid) {
    subjectsDao.delete(subjectid);
    return new ModelAndView("redirect:/subject_setup");
}

और पैरामीटर का उपयोग आपकी क्वेरी पर इनपुट के लिए किया जाएगा

public int delete(int subjectid) {
    String sql = "update tbl_subject set isdeleted= '1' where id = "+subjectid+"";
    return template.update(sql);
}

0

www.somesite.com/Transaction_List.jsp?accountID=5

इसके लिए java में URLएक मेथड कॉल request.getParameterहै, यदि आप यहाँ एक कास्ट चाहते हैं int, उसी तरह स्ट्रिंग वैल्यू के लिए string। अपनी आवश्यकता के लिए, बस पृष्ठ में पंक्ति के नीचे अतीत कॉपी करें,

int  accountId =(int)request.getParameter("accountID");

अब आप accountIdपूरे पृष्ठ में इस मान का उपयोग कर सकते हैं ।

यहां accountIdपैरामीटर का नाम है आप इसका उपयोग करके एक से अधिक पैरामीटर भी प्राप्त कर सकते हैं, लेकिन यह काम नहीं करता है। यह केवल GETविधि के साथ काम करेगा यदि आप POSTअनुरोध को हिट करते हैं तो उनकी त्रुटि होगी।

आशा है कि यह उपयोगी है।


0

पृष्ठ 1: विस्तार पृष्ठ 2: <% स्ट्रिंग आईडी = request.getParameter ("userid");%> // अब आप hsql विवरण उत्पाद के sql क्वेरी के लिए आईडी का उपयोग कर सकते हैं

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