जेएसपी क्लाइंट अनुरोध
⚡ स्मार्ट सारांश
JSP क्लाइंट अनुरोध और सर्वर प्रतिक्रिया, सर्वलेट इंजन को नियंत्रित करने के लिए JSP एक्शन तत्वों का उपयोग करते हैं। ब्राउज़र HTTP हेडर के माध्यम से जानकारी भेजता है, सर्वर एक स्टेटस लाइन और हेडर लौटाता है, और HTTP स्टेटस कोड प्रत्येक अनुरोध के परिणाम की रिपोर्ट करते हैं।

JSP एक्शन, सर्वलेट इंजन के व्यवहार को नियंत्रित करने के लिए XML सिंटैक्स में मौजूद संरचनाओं का उपयोग करते हैं। हम क्लाइंट अनुरोध, सर्वर प्रतिक्रिया और HTTP स्टेटस कोड जैसे विभिन्न JSP एक्शन तत्वों के बारे में विस्तार से जानेंगे।
जेएसपी क्लाइंट अनुरोध
- जब वेब पेज का अनुरोध किया जाता है, तो यह HTTP हेडर में वेब सर्वर को जानकारी भेजता है।
- हम HTTPServletRequest ऑब्जेक्ट का उपयोग करके इस जानकारी का उपयोग कर सकते हैं।
- ब्राउज़र द्वारा भेजी गई जानकारी HTTP अनुरोध के अनुरोध हेडर में संग्रहीत होती है।
- हम अनुरोध ऑब्जेक्ट को जानकारी भेजने के लिए अलग-अलग हेडर का उपयोग कर रहे हैं।
JSP में हेडर
JSP में विभिन्न हेडरों का वर्णन नीचे दिया गया है:
| हैडर | विवरण | उदाहरण |
|---|---|---|
| स्वीकार करें | यह MIME प्रकार निर्दिष्ट करता है जिसे ब्राउज़र या अन्य क्लाइंट संभाल सकते हैं | छवि/png या छवि/jpeg |
| स्वीकार करें-वर्णसेट | यह जानकारी प्रदर्शित करने के लिए ब्राउज़र द्वारा उपयोग किए जाने वाले वर्ण सेट का उपयोग करता है | आईएसओ 8859-1 |
| स्वीकार करें- एनकोडिंग | यह ब्राउज़र द्वारा नियंत्रित एन्कोडिंग के प्रकार को निर्दिष्ट करता है | Gzip या संपीड़ित करें |
| स्वीकार करें-भाषा | यह ग्राहकों की निर्दिष्ट भाषा को निर्दिष्ट करता है | एन,en_us |
| प्राधिकरण | पासवर्ड से सुरक्षित वेब पेजों तक पहुंचने का प्रयास करते समय क्लाइंट द्वारा उपयोग किया जाने वाला हेडर | |
| संबंध | यह इंगित करता है कि क्या क्लाइंट लगातार HTTP कनेक्शन को संभाल सकता है (ब्राउज़र एकाधिक फ़ाइलों को पुनः प्राप्त कर सकता है) | जिंदा रहो |
| कंटेंट की लम्बाई | पोस्ट अनुरोधों पर लागू। यह पोस्ट डेटा का आकार बाइट्स में देता है | |
| कुकीज | कुकी को सर्वर पर लौटाता है (जो पहले ब्राउज़र को भेजी गई थीं) | |
| मेजबान | मूल होस्ट और पोर्ट निर्दिष्ट करता है URL | |
| यदि संशोधित किया गया है | यह इंगित करता है कि इसे केवल तभी पृष्ठ की आवश्यकता है जब इसे बदला या संशोधित किया गया हो | |
| यदि तब से असंशोधित | यह इंगित करता है कि उसे पृष्ठ की आवश्यकता तभी है जब उसमें कोई परिवर्तन या संशोधन न किया गया हो | |
| रेफरर | दर्शाता है URL संदर्भित करने का URL पृष्ठ | |
| उपभोक्ता अभिकर्ता | अनुरोध करने वाले ब्राउज़र या क्लाइंट की पहचान करता है |
JSP में HTTP हेडर विधियाँ
JSP पृष्ठ में HTTP हेडर पढ़ने के लिए निम्नलिखित विधियों का उपयोग किया जाता है:
- कुकी[] getCookies() – क्लाइंट द्वारा भेजे गए कुकी ऑब्जेक्ट वाली एक सरणी लौटाता है
- गणना getAttributeNames() – अनुरोध के लिए विशेषताओं के नामों की गणना शामिल है
- गणना getHeaderNames() – इसमें हेडर के नामों की सूची शामिल है।
- गणना getParameterNames() – अनुरोध में प्राप्त पैरामीटर नामों की गणना शामिल है।
- HttpSession getSession() – अनुरोध से संबद्ध वर्तमान सत्र लौटाता है या यदि कोई सत्र नहीं है तो यह एक नया सत्र बनाएगा।
- लोकेल getLocale() – वह पसंदीदा लोकेल लौटाता है जिसमें क्लाइंट सामग्री स्वीकार करेगा। इसे प्रतिक्रिया को असाइन किया गया है। डिफ़ॉल्ट रूप से, मान सर्वर का डिफ़ॉल्ट लोकेल होगा।
- ऑब्जेक्ट getAttribute(स्ट्रिंग नाम) – नामित विशेषता का मान ऑब्जेक्ट के रूप में लौटाता है।
- ServletInputStream getInputStream() – अनुरोध के मुख्य भाग को बाइनरी डेटा के रूप में प्राप्त करता है।
- स्ट्रिंग getAuthType() – सर्वलेट की सुरक्षा के लिए प्रमाणीकरण योजना का नाम लौटाता है
- स्ट्रिंग getCharacterEncoding() – अनुरोध के मुख्य भाग में प्रयुक्त वर्ण एन्कोडिंग का नाम लौटाता है।
- स्ट्रिंग getContentType() – अनुरोध के मुख्य भाग का MIME प्रकार लौटाता है।
- स्ट्रिंग getContextPath() – अनुरोध URI का भाग लौटाता है, URI के संदर्भ पथ को इंगित करता है
- स्ट्रिंग getHeader(स्ट्रिंग नाम) – अनुरोध हेडर को स्ट्रिंग के रूप में लौटाता है
- स्ट्रिंग getMethod() – HTTP विधि का नाम लौटाता है जैसे GET, POST
- स्ट्रिंग getParameter(स्ट्रिंग नाम) – अनुरोध के पैरामीटर को एक स्ट्रिंग के रूप में लौटाता है.
- स्ट्रिंग getPathInfo() – यह पथ संबंधी जानकारी लौटाता है URL
- स्ट्रिंग getQueryString() – यह अनुरोध से जुड़ी क्वेरी स्ट्रिंग लौटाता है। URL
- स्ट्रिंग getServletPath() – भाग लौटाता है URLअनुरोध का वह भाग जो JSP को कॉल करता है
- स्ट्रिंग[] getParameterValues(स्ट्रिंग नाम) – स्ट्रिंग ऑब्जेक्ट्स की सरणी लौटाता है जिसमें अनुरोध पैरामीटर के मान होते हैं
उदाहरण:
नीचे दिए गए उदाहरण में, हम अनुरोध ऑब्जेक्ट का उपयोग करके विभिन्न विधियों का उपयोग कर रहे हैं
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.io.* java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Client Request Guru JSP</title> </head> <body> <h2>Client Request Guru JSP</h2> <table border="1"> <tr> <th>guru header</th><th>guru header Value(s)</th> </tr> <% HttpSession gurusession = request.getSession(); out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>"); Locale gurulocale = request.getLocale (); out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>"); String path = request.getPathInfo(); out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>"); String lpath = request.get(); out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>"); String servername = request.getServerName(); out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>"); int portname = request.getServerPort(); out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>"); Enumeration hnames = request.getHeaderNames(); while(hnames.hasMoreElements()) { String paramName = (String)hnames.nextElement(); out.print ("<tr><td>" + paramName + "</td>" ); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>"); } %>
कोड का स्पष्टीकरण:
Code रेखा 17: अनुरोध ऑब्जेक्ट का उपयोग करके, हम उस विशेष सत्र का सत्र ऑब्जेक्ट प्राप्त कर रहे हैं, और हमें उस सत्र का ऑब्जेक्ट मान मिलता है
Code रेखा 19: रिक्वेस्ट ऑब्जेक्ट का उपयोग करके, हम उस विशेष सेशन का लोकेल प्राप्त कर रहे हैं, यानी उस JSP के लिए en_US लोकेल।
Code रेखा 21: रिक्वेस्ट ऑब्जेक्ट का उपयोग करके, हम उस JSP के लिए पाथ की जानकारी प्राप्त कर रहे हैं। इस मामले में, यह null है क्योंकि कोई पाथ मौजूद नहीं है। URL उल्लेख किया।
Code रेखा 23: अनुरोध ऑब्जेक्ट का उपयोग करके, हम संदर्भ पथ, यानी रूट पथ प्राप्त कर रहे हैं
Code रेखा 25: अनुरोध ऑब्जेक्ट का उपयोग करके, हम सर्वर का नाम प्राप्त कर रहे हैं।
Code रेखा 27: अनुरोध ऑब्जेक्ट का उपयोग करके, हम सर्वर पोर्ट प्राप्त कर रहे हैं।
Code पंक्ति 29-35: अनुरोध ऑब्जेक्ट का उपयोग करके, हम हेडर नाम प्राप्त कर रहे हैं जो गणना के रूप में सामने आते हैं, और इसलिए हमें हेडर नामों में सभी हेडर मान मिलते हैं।
इसमें हमें सभी हेडर मान एक के रूप में मिलते हैं कुकीज , होस्ट, कनेक्शन, भाषा स्वीकार करें, एन्कोडिंग स्वीकार करें।
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट मिलता है:
आउटपुट:
हमें सत्र नाम, लोकेल नाम, पथ नाम, सर्वर नाम, पोर्ट नाम, होस्ट, संदर्भ पथ और उस सर्वर के सभी हेडर मान जैसे मानों की श्रृंखला मिल रही है। JSP.
जेएसपी सर्वर प्रतिक्रिया
- जब कोई अनुरोध संसाधित होता है और फिर वेब सर्वर से प्रतिक्रिया उत्पन्न होती है। इसमें एक स्थिति पंक्ति, प्रतिक्रिया शीर्षलेख, एक रिक्त पंक्ति और दस्तावेज़ शामिल होते हैं।
- यह HTTPServletResponse क्लास का ऑब्जेक्ट है, जो एक रिस्पॉन्स ऑब्जेक्ट है।
- स्थिति पंक्ति HTML का एक संस्करण है.
JSP में प्रतिक्रिया शीर्षलेख
JSP में प्रतिक्रिया हेडर नीचे उल्लिखित हैं:
| हैडर | विवरण |
|---|---|
| अनुमति देना | यह GET, POST जैसे अनुरोध विधियों को निर्दिष्ट करता है जिन्हें सर्वर अनुरोध कर रहा है |
| कैश-नियंत्रण | प्रतिक्रिया दस्तावेज़ को कैश किया जा सकता है। यह सार्वजनिक, निजी और कोई कैश नहीं हो सकता है। कोई कैश नहीं निर्दिष्ट करता है कि दस्तावेज़ को कैश नहीं किया जाना चाहिए |
| संबंध | यह निर्देश देता है कि ब्राउज़र को savedHTTPConnections का उपयोग करना चाहिए या नहीं। Close मान दर्शाता है कि ब्राउज़र को HTTPConnections में persistence का उपयोग नहीं करना चाहिए और “keep-alive” का अर्थ है persistence कनेक्शन का उपयोग करना |
| सामग्री-विन्यास | उपयोगकर्ता से यह पूछने के लिए कि क्या प्रतिक्रिया को डिस्क पर सहेजना है या नहीं |
| सामग्री एन्कोडिंग | प्रेषण के दौरान पृष्ठ को एनकोड करना होगा |
| कंटेंट की लम्बाई | प्रतिक्रिया में बाइट्स की संख्या |
| सामग्री प्रकार | यह प्रतिक्रिया का MIME प्रकार निर्दिष्ट करता है |
| अवसान | यह निर्दिष्ट करता है कि कब तक सामग्री को पुराना माना जाना चाहिए और उसे कैश नहीं किया जाना चाहिए |
| अंतिम संशोधित | यह बताता है कि दस्तावेज़ को अंतिम बार कब संशोधित किया गया था |
| स्थान | इसे उन सभी प्रतिक्रियाओं के साथ शामिल किया जाना चाहिए जिनका स्टेटस कोड 300 है |
| ताज़ा करना | यह निर्दिष्ट करता है कि अपडेट किया गया पृष्ठ कैसे खोजा जाए। |
| पुनः प्रयास करें | इसका उपयोग 503 प्रतिक्रिया के साथ क्लाइंट को यह बताने के लिए किया जा सकता है कि वह कितनी जल्दी अनुरोध दोहरा सकता है |
| सेट-कुकी | पृष्ठ से संबद्ध कुकी निर्दिष्ट करता है |
JSP में HTTP प्रतिक्रिया हेडर विधियाँ
JSP में प्रतिक्रिया ऑब्जेक्ट का उपयोग करने वाली विधियाँ निम्नलिखित हैं:
- स्ट्रिंग एनकोडरीडायरेक्टURL(डोरी URL) - एन्कोड करता है URL रीडायरेक्ट मेंURL विधि.
- स्ट्रिंग एन्कोडURL(डोरी URL) - एन्कोड करता है URL सेशन आईडी को शामिल करके।
- बूलियन containsHeader(स्ट्रिंग नाम) – इसमें JSP में हेडर है या नहीं।
- बूलियन isCommited() – जवाब दिया गया है या नहीं।
- वॉइड ऐडकुकी (कुकी कुकी) – प्रतिक्रिया में कुकी जोड़ता है
- शून्य addDateHeader(स्ट्रिंग नाम, स्ट्रिंग मान) – प्रतिक्रिया हेडर दिनांक नाम और मान जोड़ता है
- शून्य addHeader(स्ट्रिंग नाम, स्ट्रिंग मान) – नाम और मान के साथ प्रतिक्रिया शीर्षलेख जोड़ता है
- शून्य addIntHeader(स्ट्रिंग नाम, int मान) – नाम और पूर्णांक मान के साथ प्रतिक्रिया शीर्षलेख जोड़ता है
- शून्य फ्लशBuffer() - बफर में मौजूद सामग्री को क्लाइंट के आउटपुट पर भेजता है।
- शून्य रीसेट() – बफर में डेटा साफ़ करता है.
- शून्य रीसेटBuffer - स्थिति कोड साफ़ किए बिना प्रतिक्रिया में सामग्री बफर साफ़ करता है।
- शून्य sendError(int sc,String msg) – स्थिति कोड का उपयोग करके क्लाइंट को त्रुटि प्रतिक्रिया भेजता है।
- शून्य sendRedirect(स्ट्रिंग स्थान) – क्लाइंट को एक अस्थायी रीडायरेक्ट प्रतिक्रिया भेजता है।
- शून्य सेटBufferआकार(पूर्णांक आकार) – शरीर का बफर आकार निर्धारित करता है
- शून्य setCharacterEncoding(स्ट्रिंग वर्णसेट) – वर्ण एन्कोडिंग सेट करता है
- शून्य setContentType(स्ट्रिंग प्रकार) – प्रतिक्रिया का सामग्री प्रकार सेट करता है
- शून्य सेट कंटेंट लेंथ (इंट लेन) – प्रतिक्रिया की सामग्री की लंबाई निर्धारित करता है
- शून्य सेटलोकेल(लोकेल lcl) – प्रतिक्रिया का स्थानीय प्रकार सेट करता है
- शून्य सेटस्टेटस(इंट एससी) – प्रतिक्रिया का स्थिति कोड सेट करता है
उदाहरण:
इस उदाहरण में, हम getLocale, flushbuffer, get जैसे विभिन्न तरीकों को कवर कर रहे हैं।Writer, गेटकंटेंटटाइप, सेटइंटहेडर.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.io.* java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Action Response</title> </head> <body> <center> <h2>Guru Response</h2> <% Locale lcl = response.getLocale(); out.println("Locale is : " + lcl + "\n"); response.flushBuffer(); PrintWriter output = response.getWriter(); output.println("This is from writer object"); String type = response.getContentType(); out.println("The content type : " + type + "\n"); // Set refresh,autoload time as 5 seconds response.setIntHeader("Refresh", 5); //Get current time Date dt = new Date(); out.println("Today's date is : " +dt.toString() + "\n"); %> </center> </body> </html>
कोड का स्पष्टीकरण:
Code रेखा 13: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके, हम इस JSP सत्र का लोकेल ऑब्जेक्ट प्राप्त करते हैं
Code रेखा 15: प्रतिक्रिया ऑब्जेक्ट का उपयोग करते हुए, फ्लशबफर का उपयोग बफर सामग्री को क्लाइंट में जबरन डालने के लिए किया जाता है
Code रेखा 16: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके, हमें राइटर ऑब्जेक्ट मिलता है जो आउटपुट स्ट्रीम में आउटपुट प्राप्त करता है
Code रेखा 18: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके, हमें प्रतिक्रिया ऑब्जेक्ट का सामग्री प्रकार अर्थात MIME प्रकार मिलता है
Code रेखा 21: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके, इसका उपयोग हर 5 सेकंड में ऑटोलोड करने के लिए किया जाता है क्योंकि 5 को दूसरे पैरामीटर के रूप में सेट किया गया है
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट मिलता है:
आउटपुट:
- यहां हमें आउटपुट मिलता है क्योंकि यह गेट से राइटर ऑब्जेक्ट से है।Writerजिससे हमें ऑब्जेक्ट मिलता है और हम उसे आउटपुट स्ट्रीम में आउटपुट कर सकते हैं।
- हमें स्थानीय भाषा en_us तथा सामग्री प्रकार text/html मिलता है
- हमें ISO 8859 के रूप में वर्णसेट मिलता है
- आज की तारीख वर्तमान तारीख के रूप में।
जेएसपी एचटीटीपी स्थिति Codes
- जब अनुरोध संसाधित हो जाता है, तो प्रतिक्रिया उत्पन्न होती है। प्रतिक्रिया स्थिति पंक्ति में HTTP संस्करण, एक स्थिति कोड और एक संबद्ध संदेश शामिल होता है।
- संदेश सीधे स्थिति कोड और HTTP संस्करण से जुड़ा होता है, और इसका निर्धारण सर्वर द्वारा किया जाता है।
- डिफ़ॉल्ट रूप से 200 को JSP में स्टेटस कोड के रूप में सेट किया जाता है, इसलिए हमें इसे स्पष्ट रूप से सेट करने की आवश्यकता नहीं है।
- हम response.setStatus() विधि सेट कर सकते हैं
ये कोड निम्नलिखित 5 श्रेणियों में आते हैं:
- 100-199 – यहां क्लाइंट संकेत देता है कि उसे कुछ कार्रवाई के साथ जवाब देना चाहिए
- 200-299 – यह दर्शाता है कि अनुरोध सफल है
- 300-399 - इनका उपयोग उन फ़ाइलों के लिए किया जाता है जिन्हें स्थानांतरित कर दिया गया है और आमतौर पर इसमें नए पते को इंगित करने वाला स्थान हेडर शामिल होता है
- 400-499 – क्लाइंट द्वारा की गई त्रुटि को इंगित करता है
- 500-599 – सर्वर द्वारा त्रुटि को इंगित करता है
कुछ सामान्य स्थिति कोड नीचे दिए गए हैं:
- 200 – यह दर्शाता है कि सब कुछ ठीक है
- 301 – यह स्थायी रूप से स्थानांतरित हो गया है
- 304 – अंतिम परिवर्तन के बाद से संशोधित नहीं
- 400 – ग़लत अनुरोध
- 404 नहीं मिला
- 405 – विधि नहीं मिली
- 500 - आंतरिक सर्वर त्रुटि
- 503 – सेवा अनुपलब्ध
- 505 – HTTP संस्करण समर्थित नहीं है
HTTP स्थिति Code जेएसपी में विधियाँ
JSP में कुछ स्टेटस कोड विधियाँ नीचे सूचीबद्ध हैं:
- पब्लिक वॉइड सेटस्टेटस(इंट स्टेटसCode): यह उस JSP पेज में जो भी स्टेटस कोड हम सेट करना चाहते हैं उसे सेट करता है। यह हमें स्टेटस कोड का संदेश देगा जो सेट किया गया है
- पब्लिक वॉइड सेंडरीडायरेक्ट(स्ट्रिंग URL): यह लोकेशन हेडर के साथ 302 रिस्पॉन्स जनरेट करता है। URL नए दस्तावेज़ का
- पब्लिक वॉइड सेंडएरर (इंट कोड, स्ट्रिंग संदेश): यह संक्षिप्त संदेश के साथ स्थिति कोड भी भेजता है और इसे HTML दस्तावेज़ के अंदर स्वरूपित किया जाता है।
उदाहरण:
इस उदाहरण में, हम स्पष्ट रूप से JSP पृष्ठ पर त्रुटि भेज रहे हैं।
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Status Code</title> </head> <body> <% response.sendError(404,"Guru Page Not Found"); %> </body> </html>
कोड का स्पष्टीकरण:
Code रेखा 10: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके हम त्रुटि को दो पैरामीटर वाले पृष्ठ पर भेज रहे हैं।
- स्टेटस कोड – यह ऊपर बताए गए में से कोई भी हो सकता है। इस मामले में, हमने इसे 404 के रूप में वर्णित किया है
- संदेश – यह कोई भी विशिष्ट संदेश हो सकता है जिसे हम त्रुटि दिखाना चाहते हैं
यदि आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट प्राप्त होगा:
आउटपुट:
यहां हमें त्रुटि कोड 404 मिलता है, जो कोड से भेजा गया था और प्रदर्शित भी करता है।Guru आउटपुट में "पेज नहीं मिला" संदेश दिखाई देता है।



