जेएसपी क्लाइंट अनुरोध
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() – अनुरोध में प्राप्त पैरामीटर नामों की गणना शामिल है।
- HttpSessiongetSession() – अनुरोध से संबद्ध वर्तमान सत्र लौटाता है या यदि कोई सत्र नहीं है तो यह एक नया सत्र बनाएगा।
- लोकेल getLocale() – वह पसंदीदा लोकेल लौटाता है जिसमें क्लाइंट सामग्री स्वीकार करेगा। इसे प्रतिक्रिया को असाइन किया गया है। डिफ़ॉल्ट रूप से, मान सर्वर का डिफ़ॉल्ट लोकेल होगा।
- ऑब्जेक्ट getAttribute(स्ट्रिंग नाम) – नामित विशेषता का मान ऑब्जेक्ट के रूप में लौटाता है।
- सर्वलेटइनपुटस्ट्रीम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>"); } %>
कोड का स्पष्टीकरण:
कोड लाइन 17: अनुरोध ऑब्जेक्ट का उपयोग करके, हम उस विशेष सत्र का सत्र ऑब्जेक्ट प्राप्त कर रहे हैं, और हमें उस सत्र का ऑब्जेक्ट मान मिलता है
कोड लाइन 19: अनुरोध ऑब्जेक्ट का उपयोग करके, हम उस विशेष सत्र का लोकेल प्राप्त कर रहे हैं अर्थात उस JSP के लिए een_US लोकेल।
कोड लाइन 21: अनुरोध ऑब्जेक्ट का उपयोग करके, हम उस JSP के लिए पथ जानकारी प्राप्त कर रहे हैं। इस मामले में, यह शून्य है क्योंकि URL के लिए कोई पथ नहीं बताया गया है।
कोड लाइन 23: अनुरोध ऑब्जेक्ट का उपयोग करके, हम संदर्भ पथ, यानी रूट पथ प्राप्त कर रहे हैं
कोड लाइन 25: अनुरोध ऑब्जेक्ट का उपयोग करके, हम सर्वर का नाम प्राप्त कर रहे हैं।
कोड लाइन 27: अनुरोध ऑब्जेक्ट का उपयोग करके, हम सर्वर पोर्ट प्राप्त कर रहे हैं।
कोड लाइन 29-35: अनुरोध ऑब्जेक्ट का उपयोग करके, हम हेडर नाम प्राप्त कर रहे हैं जो गणना के रूप में सामने आते हैं, और इसलिए हमें हेडर नामों में सभी हेडर मान मिलते हैं।
इसमें हमें सभी हेडर मान एक के रूप में मिलते हैं कुकीज , होस्ट, कनेक्शन, भाषा स्वीकार करें, एन्कोडिंग स्वीकार करें।
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट मिलता है:
उत्पादन:
हमें सत्र नाम, लोकेल नाम, पथ नाम, सर्वर नाम, पोर्ट नाम, होस्ट, संदर्भ पथ और उस सर्वर के सभी हेडर मान जैसे मानों की श्रृंखला मिल रही है। JSP.
जेएसपी सर्वर प्रतिक्रिया
- जब कोई अनुरोध संसाधित होता है और फिर वेब सर्वर से प्रतिक्रिया उत्पन्न होती है। इसमें एक स्थिति पंक्ति, प्रतिक्रिया शीर्षलेख, एक रिक्त पंक्ति और दस्तावेज़ शामिल होते हैं।
- यह HTTPServletResponseclass का ऑब्जेक्ट है, जो एक प्रतिक्रिया ऑब्जेक्ट है।
- स्थिति पंक्ति HTML का एक संस्करण है.
JSP में प्रतिक्रिया शीर्षलेख
JSP में प्रतिक्रिया हेडर नीचे उल्लिखित हैं:
हैडर | विवरण |
---|---|
अनुमति देना | यह GET, POST जैसे अनुरोध विधियों को निर्दिष्ट करता है जिन्हें सर्वर अनुरोध कर रहा है |
कैश-नियंत्रण | प्रतिक्रिया दस्तावेज़ को कैश किया जा सकता है। यह सार्वजनिक, निजी और कोई कैश नहीं हो सकता है। कोई कैश नहीं निर्दिष्ट करता है कि दस्तावेज़ को कैश नहीं किया जाना चाहिए |
संबंध | यह निर्देश देता है कि ब्राउज़र को savedHTTPConnections का उपयोग करना चाहिए या नहीं। Close मान दर्शाता है कि ब्राउज़र को HTTPConnections में persistence का उपयोग नहीं करना चाहिए और “keep-alive” का अर्थ है persistence कनेक्शन का उपयोग करना |
सामग्री-विन्यास | उपयोगकर्ता से यह पूछने के लिए कि क्या प्रतिक्रिया को डिस्क पर सहेजना है या नहीं |
सामग्री एन्कोडिंग | प्रेषण के दौरान पृष्ठ को एनकोड करना होगा |
कंटेंट की लम्बाई | प्रतिक्रिया में बाइट्स की संख्या |
सामग्री प्रकार | यह प्रतिक्रिया का MIME प्रकार निर्दिष्ट करता है |
अवसान | यह निर्दिष्ट करता है कि कब तक सामग्री को पुराना माना जाना चाहिए और उसे कैश नहीं किया जाना चाहिए |
अंतिम संशोधित | यह बताता है कि दस्तावेज़ को अंतिम बार कब संशोधित किया गया था |
स्थान | इसे उन सभी प्रतिक्रियाओं के साथ शामिल किया जाना चाहिए जिनका स्टेटस कोड 300 है |
ताज़ा करना | यह निर्दिष्ट करता है कि अपडेट किया गया पृष्ठ कैसे खोजा जाए। |
पुनः प्रयास करें | इसका उपयोग 503 प्रतिक्रिया के साथ क्लाइंट को यह बताने के लिए किया जा सकता है कि वह कितनी जल्दी अनुरोध दोहरा सकता है |
सेट-कुकी | पृष्ठ से संबद्ध कुकी निर्दिष्ट करता है |
JSP में HTTP प्रतिक्रिया हेडर विधियाँ
JSP में प्रतिक्रिया ऑब्जेक्ट का उपयोग करने वाली विधियाँ निम्नलिखित हैं:
- स्ट्रिंग एनकोड रीडायरेक्टयूआरएल(स्ट्रिंग यूआरएल) – URL को redirectURL विधि में एनकोड करता है।
- स्ट्रिंग एनकोडयूआरएल(स्ट्रिंग यूआरएल) – सत्र आईडी को शामिल करके URL को एनकोड करता है।
- बूलियन containsHeader(स्ट्रिंग नाम) – इसमें JSP में हेडर है या नहीं।
- बूलियन isCommited() – जवाब दिया गया है या नहीं।
- Void addCookie(Cookie cookie) – प्रतिक्रिया में कुकी जोड़ता है
- शून्य addDateHeader(स्ट्रिंग नाम, स्ट्रिंग मान) – प्रतिक्रिया हेडर दिनांक नाम और मान जोड़ता है
- शून्य addHeader(स्ट्रिंग नाम, स्ट्रिंग मान) – नाम और मान के साथ प्रतिक्रिया शीर्षलेख जोड़ता है
- शून्य addIntHeader(स्ट्रिंग नाम, int मान) – नाम और पूर्णांक मान के साथ प्रतिक्रिया शीर्षलेख जोड़ता है
- शून्य फ्लशBuffer() - बफर में मौजूद सामग्री को क्लाइंट के आउटपुट पर भेजता है।
- शून्य रीसेट() – बफर में डेटा साफ़ करता है.
- शून्य रीसेटBuffer - स्थिति कोड साफ़ किए बिना प्रतिक्रिया में सामग्री बफर साफ़ करता है।
- शून्य sendError(intsc,Stringmsg) – स्थिति कोड का उपयोग करके क्लाइंट को त्रुटि प्रतिक्रिया भेजता है।
- शून्य sendRedirect(स्ट्रिंग स्थान) – क्लाइंट को एक अस्थायी रीडायरेक्ट प्रतिक्रिया भेजता है।
- शून्य सेटBufferआकार(पूर्णांक आकार) – शरीर का बफर आकार निर्धारित करता है
- शून्य setCharacterEncoding(स्ट्रिंग वर्णसेट) – वर्ण एन्कोडिंग सेट करता है
- शून्य setContentType(स्ट्रिंग प्रकार) – प्रतिक्रिया का सामग्री प्रकार सेट करता है
- शून्य setContentLength(intlen) – प्रतिक्रिया की सामग्री की लंबाई निर्धारित करता है
- शून्य सेटलोकेल(लोकेल lcl) – प्रतिक्रिया का स्थानीय प्रकार सेट करता है
- शून्य सेटस्टेटस(intsc) – प्रतिक्रिया का स्थिति कोड सेट करता है
उदाहरण:
इस उदाहरण में, हम विभिन्न विधियों getLocale,flushbuffer, getWriter, get ContentType, setIntHeader को कवर कर रहे हैं।
<%@ 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>
कोड का स्पष्टीकरण:
कोड लाइन 13: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके, हम इस JSP सत्र का लोकेल ऑब्जेक्ट प्राप्त करते हैं
कोड लाइन 15: प्रतिक्रिया ऑब्जेक्ट का उपयोग करते हुए, फ्लशबफर का उपयोग बफर सामग्री को क्लाइंट में जबरन डालने के लिए किया जाता है
कोड लाइन 16: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके, हमें राइटर ऑब्जेक्ट मिलता है जो आउटपुट स्ट्रीम में आउटपुट प्राप्त करता है
कोड लाइन 18: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके, हमें प्रतिक्रिया ऑब्जेक्ट का सामग्री प्रकार अर्थात MIME प्रकार मिलता है
कोड लाइन 21: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके, इसका उपयोग हर 5 सेकंड में ऑटोलोड करने के लिए किया जाता है क्योंकि 5 को दूसरे पैरामीटर के रूप में सेट किया गया है
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट मिलता है:
आउटपुट:
- यहां हमें आउटपुट मिलता है क्योंकि यह getWriter से राइटर ऑब्जेक्ट से है, जो हमें ऑब्जेक्ट देता है और हम आउटपुट स्ट्रीम में आउटपुट कर सकते हैं।
- हमें स्थानीय भाषा en_us तथा सामग्री प्रकार text/html मिलता है
- हमें ISO 8859 के रूप में वर्णसेट मिलता है
- आज की तारीख वर्तमान तारीख के रूप में।
JSP HTTP स्थिति कोड
- जब अनुरोध संसाधित हो जाता है, तो प्रतिक्रिया उत्पन्न होती है। प्रतिक्रिया स्थिति पंक्ति में 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 संस्करण समर्थित नहीं है
JSP में HTTP स्थिति कोड विधियाँ
JSP में कुछ स्टेटस कोड विधियाँ नीचे सूचीबद्ध हैं:
- सार्वजनिक शून्य सेटस्टैटस(intstatusCode): यह उस JSP पेज में जो भी स्टेटस कोड हम सेट करना चाहते हैं उसे सेट करता है। यह हमें स्टेटस कोड का संदेश देगा जो सेट किया गया है
- सार्वजनिक शून्य sendRedirect(स्ट्रिंग यूआरएल): यह नए दस्तावेज़ का URL देते हुए स्थान हेडर के साथ 302 प्रतिक्रिया उत्पन्न करता है
- सार्वजनिक शून्य sendError(intcode,Stringmsg): यह संक्षिप्त संदेश के साथ स्थिति कोड भी भेजता है और इसे 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>
कोड का स्पष्टीकरण:
कोड लाइन 10: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके हम त्रुटि को दो पैरामीटर वाले पृष्ठ पर भेज रहे हैं।
- स्टेटस कोड – यह ऊपर बताए गए में से कोई भी हो सकता है। इस मामले में, हमने इसे 404 के रूप में वर्णित किया है
- संदेश – यह कोई भी विशिष्ट संदेश हो सकता है जिसे हम त्रुटि दिखाना चाहते हैं
यदि आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट प्राप्त होगा:
आउटपुट:
यहां हमें 404 के रूप में त्रुटि कोड मिलता है, जो कोड से भेजा गया था और आउटपुट में "गुरु पृष्ठ नहीं मिला" संदेश भी प्रदर्शित करता है।
सारांश
- इस लेख में हमने क्लाइंट अनुरोध और सर्वर प्रतिक्रिया के बारे में सीखा कि अनुरोध को कैसे रोका जाता है और प्रतिक्रियाओं में किस प्रकार हेरफेर किया जाता है।
- जेएसपी क्रियाएं जो सर्वलेट इंजन के व्यवहार को नियंत्रित करने के लिए XML सिंटैक्स में संरचनाओं का उपयोग करते हैं।
- जब वेब पेज का अनुरोध किया जाता है, तो यह HTTP हेडर में वेब सर्वर को जानकारी भेजता है।
- जब कोई अनुरोध संसाधित होता है और फिर वेब सर्वर से प्रतिक्रिया उत्पन्न होती है। इसमें एक स्थिति पंक्ति, प्रतिक्रिया शीर्षलेख, एक रिक्त पंक्ति और दस्तावेज़ शामिल होते हैं।
- जब अनुरोध संसाधित हो जाता है, तो प्रतिक्रिया उत्पन्न होती है। प्रतिक्रिया स्थिति पंक्ति में HTTP संस्करण, एक स्थिति कोड और एक संबद्ध संदेश शामिल होता है।