जेएसपी - फॉर्म प्रोसेसिंग

इस अध्याय में, हम JSP में फॉर्म प्रोसेसिंग पर चर्चा करेंगे। जब आप अपने ब्राउज़र से वेब सर्वर और अंत में अपने बैकएंड प्रोग्राम के लिए कुछ जानकारी को पास करने की आवश्यकता होती है तो आप कई स्थितियों में आ गए होंगे। वेब सर्वर पर इस जानकारी को पास करने के लिए ब्राउज़र दो तरीकों का उपयोग करता है। ये तरीके GET मेथड और POST मेथड हैं।

फार्म प्रसंस्करण में तरीके

आइए अब हम फॉर्म प्रोसेसिंग के तरीकों पर चर्चा करते हैं।

विधि प्राप्त करें

GET विधि पेज अनुरोध के लिए संलग्न एन्कोडेड उपयोगकर्ता जानकारी भेजता है। पृष्ठ और एन्कोडेड जानकारी को किसके द्वारा अलग किया जाता है? चरित्र इस प्रकार है -

http://www.test.com/hello?key1=value1&key2=value2

जीईटी विधि ब्राउज़र से वेब सर्वर तक जानकारी पारित करने के लिए डिफ़ॉल्ट विधि है और यह आपके ब्राउज़र में दिखाई देने वाली एक लंबी स्ट्रिंग का उत्पादन करती है Location:box। यह अनुशंसा की जाती है कि GET विधि का बेहतर उपयोग न किया जाए। यदि आपके पास सर्वर को पास करने के लिए पासवर्ड या अन्य संवेदनशील जानकारी है।

GET विधि का आकार सीमा है: only 1024 characters can be in a request string

यह जानकारी का उपयोग कर पारित किया है QUERY_STRING header और QUERY_STRING पर्यावरण चर के माध्यम से सुलभ होगा, जिसका उपयोग करके नियंत्रित किया जा सकता है getQueryString() तथा getParameter() अनुरोध वस्तु के तरीके।

पोस्ट विधि

आम तौर पर बैकएंड प्रोग्राम को सूचना देने का एक अधिक विश्वसनीय तरीका POST विधि है।

यह विधि GET विधि की तरह ही सूचनाओं को संकुलित करती है, लेकिन पाठ स्ट्रिंग के रूप में भेजने के बजाय? URL में यह इसे एक अलग संदेश के रूप में भेजता है। यह संदेश मानक इनपुट के रूप में बैकेंड प्रोग्राम में आता है जिसे आप पार्स कर सकते हैं और अपने प्रसंस्करण के लिए उपयोग कर सकते हैं।

JSP इस प्रकार के अनुरोधों का उपयोग करता है getParameter() सरल मापदंडों को पढ़ने के लिए विधि और getInputStream() क्लाइंट से आने वाले बाइनरी डेटा स्ट्रीम को पढ़ने की विधि।

पठन डेटा JSP का उपयोग कर

JSP स्थिति के आधार पर निम्न विधियों का उपयोग करके स्वचालित रूप से डेटा पार्सिंग को संभालता है -

  • getParameter() - आप फोन करें request.getParameter() फॉर्म पैरामीटर का मान प्राप्त करने की विधि।

  • getParameterValues() - यदि पैरामीटर एक से अधिक बार दिखाई देता है और कई मान लौटाता है, तो इस विधि को कॉल करें, उदाहरण के लिए चेकबॉक्स।

  • getParameterNames() - यदि आप वर्तमान अनुरोध में सभी मापदंडों की पूरी सूची चाहते हैं, तो इस विधि को कॉल करें।

  • getInputStream() - क्लाइंट से आने वाले बाइनरी डेटा स्ट्रीम को पढ़ने के लिए इस विधि को कॉल करें।

URL का उपयोग करके विधि का उदाहरण प्राप्त करें

निम्न URL GET विधि का उपयोग करके HelloForm प्रोग्राम में दो मान पास करेगा।

http://localhost:8080/main.jsp?first_name=ZARA&last_name=ALI

नीचे है main.jspवेब ब्राउज़र द्वारा दिए गए इनपुट को संभालने के लिए जेएसपी प्रोग्राम। हम इसका उपयोग करने जा रहे हैंgetParameter() वह विधि जिससे उत्तीर्ण सूचनाओं तक पहुँचना बहुत आसान हो जाता है -

<html>
   <head>
      <title>Using GET Method to Read Form Data</title>
   </head>
   
   <body>
      <h1>Using GET Method to Read Form Data</h1>
      <ul>
         <li><p><b>First Name:</b>
            <%= request.getParameter("first_name")%>
         </p></li>
         <li><p><b>Last  Name:</b>
            <%= request.getParameter("last_name")%>
         </p></li>
      </ul>
   
   </body>
</html>

अब टाइप करें http://localhost:8080/main.jsp?first_name=ZARA&last_name=ALI आपके ब्राउज़र में Location:box। यह निम्नलिखित परिणाम उत्पन्न करेगा -

फॉर्म डेटा पढ़ने के लिए GET विधि का उपयोग करना

  • First Name: जरा

  • Last Name: एएलआई

फॉर्म का उपयोग करके विधि का उदाहरण प्राप्त करें

निम्नलिखित एक उदाहरण है जो HTML फॉर्म और सबमिट बटन का उपयोग करके दो मानों को पार करता है। हम इस इनपुट को संभालने के लिए समान JSP main.jsp का उपयोग करने जा रहे हैं।

<html>
   <body>
      
      <form action = "main.jsp" method = "GET">
         First Name: <input type = "text" name = "first_name">
         <br />
         Last Name: <input type = "text" name = "last_name" />
         <input type = "submit" value = "Submit" />
      </form>
      
   </body>
</html>

इस HTML को एक Hello.htm फ़ाइल में रखें और इसे अंदर डालें <Tomcat-installation-directory>/webapps/ROOT directory। जब तुम पहुंचोगेhttp://localhost:8080/Hello.htm, आप निम्नलिखित उत्पादन प्राप्त होगा।

<p> पहले नाम और अंतिम नाम दर्ज करने का प्रयास करें और फिर अपने स्थानीय मशीन पर परिणाम देखने के लिए सबमिट बटन पर क्लिक करें जहां टॉमकैट चल रहा है। दिए गए इनपुट के आधार पर, यह उपरोक्त उदाहरण में वर्णित परिणाम के समान होगा।

POST विधि उदाहरण फॉर्म का उपयोग करना

GET और POST दोनों विधि को संभालने के लिए उपरोक्त JSP में थोड़ा संशोधन करें। नीचे हैmain.jsp GSP या POST विधियों का उपयोग करके वेब ब्राउज़र द्वारा दिए गए इनपुट को संभालने के लिए JSP प्रोग्राम।

वास्तव में उपरोक्त JSP में कोई परिवर्तन नहीं हुआ है क्योंकि गुजरने वाले मापदंडों का एकमात्र तरीका बदला गया है और JSP कार्यक्रम में कोई भी द्विआधारी डेटा पारित नहीं किया जा रहा है। फ़ाइल से संबंधित अवधारणाओं को अलग अध्याय में समझाया जाएगा जहां हमें बाइनरी डेटा स्ट्रीम पढ़ने की आवश्यकता है।

<html>
   <head>
      <title>Using GET and POST Method to Read Form Data</title>
   </head>
   
   <body>
      <center>
      <h1>Using POST Method to Read Form Data</h1>
      
      <ul>
         <li><p><b>First Name:</b>
            <%= request.getParameter("first_name")%>
         </p></li>
         <li><p><b>Last  Name:</b>
            <%= request.getParameter("last_name")%>
         </p></li>
      </ul>
   
   </body>
</html>

निम्नलिखित की सामग्री है Hello.htm फ़ाइल -

<html>
   <body>
      
      <form action = "main.jsp" method = "POST">
         First Name: <input type = "text" name = "first_name">
         <br />
         Last Name: <input type = "text" name = "last_name" />
         <input type = "submit" value = "Submit" />
      </form>
      
   </body>
</html>

अब हम रखते हैं main.jsp और hello.htm में <Tomcat-installationdirectory>/webapps/ROOT directory। जब तुम पहुंचोगेhttp://localhost:8080/Hello.htm, आप निम्नलिखित उत्पादन प्राप्त होगा।

पहले और अंतिम नाम दर्ज करने का प्रयास करें और फिर अपने स्थानीय मशीन पर परिणाम देखने के लिए सबमिट बटन पर क्लिक करें जहां टॉमकैट चल रहा है।

दिए गए इनपुट के आधार पर, आप उपरोक्त उदाहरणों के समान परिणाम प्राप्त करेंगे।

JSP प्रोग्राम को चेकबॉक्स डेटा पास करना

चेकबॉक्स का उपयोग तब किया जाता है जब एक से अधिक विकल्प का चयन करना आवश्यक होता है।

निम्नलिखित एक उदाहरण है HTML code, CheckBox.htm, दो चेकबॉक्स के साथ एक फॉर्म के लिए।

<html>
   <body>
      
      <form action = "main.jsp" method = "POST" target = "_blank">
         <input type = "checkbox" name = "maths" checked = "checked" /> Maths
         <input type = "checkbox" name = "physics"  /> Physics
         <input type = "checkbox" name = "chemistry" checked = "checked" /> Chemistry
         <input type = "submit" value = "Select Subject" />
      </form>
      
   </body>
</html>

उपरोक्त कोड निम्नलिखित परिणाम उत्पन्न करेगा -

चेकबॉक्स बटन के लिए वेब ब्राउजर द्वारा दिए गए इनपुट को संभालने के लिए main.jsp JSP प्रोग्राम निम्नलिखित है।

<html>
   <head>
      <title>Reading Checkbox Data</title>
   </head>
   
   <body>
      <h1>Reading Checkbox Data</h1>
      
      <ul>
         <li><p><b>Maths Flag:</b>
            <%= request.getParameter("maths")%>
         </p></li>
         <li><p><b>Physics Flag:</b>
            <%= request.getParameter("physics")%>
         </p></li>
         <li><p><b>Chemistry Flag:</b>
            <%= request.getParameter("chemistry")%>
         </p></li>
      </ul>
   
   </body>
</html>

उपरोक्त कार्यक्रम निम्नलिखित परिणाम उत्पन्न करेगा -

Reading Checkbox Data

  • Maths Flag :: on

  • Physics Flag:: null

  • Chemistry Flag:: on

ऑल फॉर्म पैरामीटर्स पढ़ना

निम्नलिखित एक सामान्य उदाहरण है जो उपयोग करता है getParameterNames()सभी उपलब्ध प्रपत्र मापदंडों को पढ़ने के लिए HttpServletRequest की विधि। यह विधि एक Enumeration देता है जिसमें कोई अनिर्दिष्ट क्रम में पैरामीटर नाम होते हैं।

एक बार हमारे पास एन्यूमरेशन है, हम एन्यूमरेशन को स्टैंडर्ड तरीके से लूप कर सकते हैं hasMoreElements() यह निर्धारित करने की विधि कि कब रोकना है और किसका उपयोग करना है nextElement() प्रत्येक पैरामीटर नाम प्राप्त करने की विधि।

<%@ page import = "java.io.*,java.util.*" %>

<html>
   <head>
      <title>HTTP Header Request Example</title>
   </head>

   <body>
      <center>
         <h2>HTTP Header Request Example</h2>
         <table width = "100%" border = "1" align = "center">
            <tr bgcolor = "#949494">
               <th>Param Name</th>
               <th>Param Value(s)</th>
            </tr>
            <%
               Enumeration paramNames = request.getParameterNames();
               while(paramNames.hasMoreElements()) {
                  String paramName = (String)paramNames.nextElement();
                  out.print("<tr><td>" + paramName + "</td>\n");
                  String paramValue = request.getHeader(paramName);
                  out.println("<td> " + paramValue + "</td></tr>\n");
               }
            %>
         </table>
      </center>
   
   </body>
</html>

निम्नलिखित की सामग्री है Hello.htm -

<html>
   <body>
      
      <form action = "main.jsp" method = "POST" target = "_blank">
         <input type = "checkbox" name = "maths" checked = "checked" /> Maths
         <input type = "checkbox" name = "physics"  /> Physics
         <input type = "checkbox" name = "chemistry" checked = "checked" /> Chem
         <input type = "submit" value = "Select Subject" />
      </form>
   
   </body>
</html>

अब उपरोक्त Hello.htm का उपयोग करके JSP को कॉल करने का प्रयास करें; यह नीचे दिए गए इनपुट के आधार पर परिणाम जैसा कुछ उत्पन्न करेगा -

ऑल फॉर्म पैरामीटर्स पढ़ना

परम नाम परम मूल्य
गणित पर
रसायन विज्ञान पर

आप किसी अन्य फॉर्म के डेटा को पढ़ने के लिए उपरोक्त JSP को आज़मा सकते हैं जिसमें टेक्स्ट बॉक्स, रेडियो बटन या ड्रॉपडाउन आदि जैसी अन्य वस्तुएं हैं।