जेएसपी क्रियाएँ जो सर्वलेट इंजन के व्यवहार को नियंत्रित करने के लिए XML सिंटैक्स में कंस्ट्रक्शन का उपयोग करती हैं। हम ग्राहक अनुरोध, सर्वर प्रतिक्रिया, HTTP स्थिति कोड जैसे विभिन्न JSP एक्शन तत्वों के बारे में विस्तार से जानेंगे।
इस ट्यूटोरियल में, आप सीखेंगे-
- JSP क्लाइंट अनुरोध
- JSP सर्वर प्रतिक्रिया
- JSP HTTP स्थिति कोड
JSP क्लाइंट अनुरोध
- जब वेब पेज का अनुरोध किया जाता है, तो यह HTTP हेडर में वेब सर्वर को सूचना भेजता है।
- हम HTTPServletRequest ऑब्जेक्ट का उपयोग करके इस जानकारी का उपयोग कर सकते हैं।
- ब्राउज़र द्वारा भेजी गई जानकारी HTTP अनुरोध के हेडर में संग्रहीत है।
- हम अनुरोध ऑब्जेक्ट पर जानकारी भेजने के लिए विभिन्न हेडर का उपयोग कर रहे हैं।
विभिन्न शीर्ष लेख नीचे वर्णित हैं:
हैडर | विवरण | उदाहरण |
---|---|---|
स्वीकार करना | यह MIME प्रकार निर्दिष्ट करता है जो ब्राउज़र या अन्य क्लाइंट संभाल सकते हैं | छवि / पीएनजी या छवि / जेपीईजी |
स्वीकार करें-वर्णसेट | यह जानकारी प्रदर्शित करने के लिए ब्राउज़र द्वारा उपयोग किए गए वर्ण सेट का उपयोग करता है | आईएसओ-8859-1 |
स्वीकार- एनकोडिंग | यह ब्राउज़र द्वारा नियंत्रित एन्कोडिंग के प्रकार को निर्दिष्ट करता है | Gzip या संपीड़ित |
स्वीकार करें-भाषा | यह ग्राहकों को निर्दिष्ट भाषा निर्दिष्ट करता है | एन, एन_स |
प्राधिकार | पासवर्ड सुरक्षित वेब पेजों को एक्सेस करने का प्रयास करते समय हैडर ग्राहकों द्वारा उपयोग किया जाता है | |
संबंध | यह इंगित करता है कि क्या क्लाइंट लगातार HTTP कनेक्शन को संभाल सकता है (ब्राउज़र कई फ़ाइलों को पुनः प्राप्त कर सकता है) | जिंदा रहो |
कंटेंट की लम्बाई | अनुरोध पोस्ट करने के लिए लागू है। यह बाइट्स के पोस्ट डेटा का आकार देता है | |
कुकी | सर्वर पर कुकी लौटाता है (जो पहले ब्राउज़र में भेजे गए थे) | |
मेज़बान | मूल URL के होस्ट और पोर्ट को निर्दिष्ट करता है | |
अगर बाद से संशोधित किया गया है | यह इंगित करता है कि इसे केवल एक पृष्ठ की आवश्यकता है अगर इसे बदल दिया गया है या संशोधित किया गया है | |
अगर के बाद से unmodified | यह इंगित करता है कि इसे केवल एक पृष्ठ की आवश्यकता है अगर इसे बदला या संशोधित नहीं किया गया है | |
संदर्भ | URL के संदर्भ पृष्ठ का URL दर्शाता है | |
उपभोक्ता अभिकर्ता | ब्राउज़र या क्लाइंट बनाने के अनुरोध को पहचानता है |
JSP पेज में HTTP हेडर पढ़ने के लिए निम्न विधियों का उपयोग किया जाता है:
- कुकी [] getCookies () - क्लाइंट द्वारा भेजी गई कुकी ऑब्जेक्ट वाली सरणी देता है
- गणन getAttributeNames () - अनुरोध के लिए विशेषताओं के नामों की गणना है
- गणन getHeaderNames () - हैडर के नामों की गणना है।
- गणन getParameterNames () - अनुरोध में पैरामीटर नाम प्राप्त करने की गणना है।
- HttpSessiongetSession () - अनुरोध से संबंधित वर्तमान सत्र लौटाता है या यदि सत्र नहीं है तो यह एक नया निर्माण करेगा।
- Locale getLocale () - पसंदीदा स्थान देता है जिसे क्लाइंट कंटेंट स्वीकार करेगा। इसे प्रतिक्रिया के लिए सौंपा गया है। डिफ़ॉल्ट रूप से, मान सर्वर का डिफ़ॉल्ट स्थान होगा।
- ऑब्जेक्ट getAttribute (स्ट्रिंग नाम) - एक ऑब्जेक्ट के रूप में नामित विशेषता का मान लौटाता है।
- ServletInputStreamgetInputStream () - बाइनरी डेटा के रूप में अनुरोध की पुनर्प्राप्ति।
- स्ट्रिंग getAuthType () - सर्वलेट की सुरक्षा के लिए प्रमाणीकरण योजना का नाम देता है
- स्ट्रिंग getCharacterEncoding () - अनुरोध के शरीर में उपयोग किए गए वर्ण एन्कोडिंग का नाम देता है।
- स्ट्रिंग getContentType () - अनुरोध के निकाय का MIME प्रकार लौटाता है।
- स्ट्रिंग getContextPath () - अनुरोध का हिस्सा लौटाता है URI URI के संदर्भ पथ को इंगित करता है
- स्ट्रिंग getHeader (स्ट्रिंग नाम) - एक स्ट्रिंग के रूप में अनुरोध हेडर लौटाता है
- स्ट्रिंग getMethod () - HTTP विधि का नाम देता है जैसे GET, POST
- स्ट्रिंग getParameter (स्ट्रिंग नाम) - स्ट्रिंग के रूप में अनुरोध के पैरामीटर को लौटाता है।
- स्ट्रिंग getPathInfo () - URL से जुड़ी पथ जानकारी देता है
- स्ट्रिंग getQueryString () - क्वेरी स्ट्रिंग जो अनुरोध URL से संबद्ध है, लौटाता है
- स्ट्रिंग getServletPath () - JSP को कॉल करने वाले अनुरोध के URL का हिस्सा लौटाता है
- स्ट्रिंग [] getParameterValues (स्ट्रिंग नाम) - उन स्ट्रिंग ऑब्जेक्ट्स की सरणी देता है जिसमें मान होते हैं जो पैरामीटर का अनुरोध करते हैं
उदाहरण:
नीचे दिए गए उदाहरण में, हम अनुरोध ऑब्जेक्ट का उपयोग करके विभिन्न तरीकों का उपयोग कर रहे हैं
<% @ पृष्ठ भाषा = "जावा" सामग्री<% @ पृष्ठ आयात = "java.io. * java.util। *"%><सिर><मेटा http-equiv = "सामग्री-प्रकार" सामग्री = "पाठ / html; चारसेट = ISO-8859-1"><शीर्षक> क्लाइंट अनुरोध गुरु JSP शीर्षक> head><शरीर>क्लाइंट अनुरोध गुरु JSP h2><तालिका सीमा = "1">
गुरु हेडर tr><%HttpSession गुरुद्वारा = request.getSession ();out.print (" सत्र का नाम td> " + gurusession + " td।> tr>");लोकेल गुरुलोकले = request.getLocale ();out.print (" लोकेल नाम td> " + gurulocale + " td> tr>");स्ट्रिंग पथ = request.getPathInfo ();out.print (" Path Name td> " + path + " td> tr>");स्ट्रिंग lpath = request.get ();out.print (" प्रसंग पथ td> " + lipath + " td> tr>") है;स्ट्रिंग सर्वरनाम = request.getServerName ();out.print (" Server Name td> " + servername + " td> tr>");int portname = request.getServerPort ();out.print (" Server Port td> " + portname + " td> tr>") है;गणना hnames = request.getHeaderNames ();जबकि (hnames.hasMoreElements ()) {स्ट्रिंग paramName = (स्ट्रिंग) hnames.nextElement ();out.print (" " + paramName + " td>");स्ट्रिंग paramValue = request.getHeader (paramName);out.println (" " + paramValue + " td> tr>");}%> कोड की व्याख्या:
कोड लाइन 17: अनुरोध ऑब्जेक्ट का उपयोग करके, हम उस विशेष सत्र का सत्र ऑब्जेक्ट प्राप्त कर रहे हैं, और हमें उस सत्र का ऑब्जेक्ट मान मिलता है
कोड लाइन 19: अनुरोध ऑब्जेक्ट का उपयोग करके, हम उस JSP के लिए उस विशेष सत्र का i.een_US लोकेल प्राप्त कर रहे हैं।
कोड लाइन 21: अनुरोध ऑब्जेक्ट का उपयोग करके, हम उस JSP के लिए पथ जानकारी प्राप्त कर रहे हैं। इस मामले में, यह शून्य है क्योंकि उल्लेखित URL के लिए कोई रास्ता नहीं है।
कोड लाइन 23: अनुरोध ऑब्जेक्ट का उपयोग करके, हम संदर्भ पथ, यानी रूट पथ प्राप्त कर रहे हैं
कोड लाइन 25: अनुरोध ऑब्जेक्ट का उपयोग करके, हमें सर्वर नाम मिल रहा है।
कोड लाइन 27: अनुरोध ऑब्जेक्ट का उपयोग करके, हमें सर्वर पोर्ट मिल रहा है।
कोड लाइन 29-35: अनुरोध ऑब्जेक्ट का उपयोग करके, हमें हेडर नाम मिल रहे हैं, जो एन्यूमरेशन के रूप में सामने आते हैं, और इसलिए हमें हेडर नामों में सभी हेडर मान मिलते हैं।
इसमें हमें कुकी, होस्ट, कनेक्शन, भाषा स्वीकार करने, एन्कोडिंग स्वीकार करने के रूप में सभी हेडर मान मिलते हैं।
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्न आउटपुट मिलते हैं:
आउटपुट :
हमें सत्र नाम, स्थानीय नाम, पथ नाम, सर्वर नाम, पोर्ट नाम, होस्ट, संदर्भ पथ और उस JSP के सभी हेडर मान जैसे मानों की श्रृंखला मिल रही है।
JSP सर्वर प्रतिक्रिया
- जब कोई अनुरोध संसाधित होता है और तब वेब सर्वर से प्रतिक्रिया उत्पन्न होती है। इसमें एक स्थिति रेखा, प्रतिक्रिया शीर्षलेख, एक रिक्त रेखा और दस्तावेज़ होते हैं।
- यह HTTPServletResponseclass की वस्तु है, जो एक प्रतिक्रिया वस्तु है।
- स्टेटस लाइन HTML का एक संस्करण है।
प्रतिक्रिया शीर्षलेख नीचे दिए गए हैं:
हैडर विवरण अनुमति यह GET, POST जैसे अनुरोध विधियों को निर्दिष्ट करता है जो सर्वर अनुरोध कर रहा है कैश-नियंत्रण प्रतिक्रिया दस्तावेज को कैश किया जा सकता है। यह सार्वजनिक, निजी और कोई कैश नहीं हो सकता। कोई कैश निर्दिष्ट नहीं करता है कि दस्तावेज़ कैश नहीं होना चाहिए संबंध यह निर्देश देता है कि ब्राउज़र को सहेजी गईHTHTConnections का उपयोग करना चाहिए या नहीं। क्लोज़ वैल्यू दर्शाता है कि ब्राउज़र को HTTPConnections में लगातार उपयोग नहीं करना चाहिए और "कनेक्शन को बनाए रखना" का अर्थ है लगातार कनेक्शन का उपयोग करना सामग्री-स्वभाव उपयोगकर्ता से यह पूछने के लिए कि डिस्क पर प्रतिक्रिया को सहेजना है या नहीं सामग्री एन्कोडिंग ट्रांसमिशन के दौरान पेज को इनकोड करना होता है कंटेंट की लम्बाई प्रतिक्रिया में बाइट्स की संख्या सामग्री प्रकार यह MIME प्रकार की प्रतिक्रिया को निर्दिष्ट करता है समय-सीमा समाप्त तब तक निर्दिष्ट करता है जब सामग्री को पुराना माना जाना चाहिए और कैश नहीं किया जाना चाहिए अंतिम बार संशोधित यह इंगित करता है कि जब दस्तावेज़ अंतिम बार संशोधित किया गया था स्थान इसे उन सभी प्रतिक्रियाओं के साथ शामिल किया जाना चाहिए जिनके पास स्थिति कोड है 300 स्थिति कोड के रूप में है ताज़ा करना यह निर्दिष्ट करता है कि अपडेट किए गए पृष्ठ को कैसे खोजना है। फिर से प्रयास करें इसका उपयोग ग्राहक के अनुरोध को दोहराने के लिए 503 प्रतिक्रिया के साथ किया जा सकता है सेट-कुकी पेज से जुड़े कुकी को निर्दिष्ट करता है प्रतिक्रिया ऑब्जेक्ट का उपयोग करने के तरीके निम्नलिखित हैं:
- स्ट्रिंग encodeRedirectURL (स्ट्रिंग URL) - URL को पुनर्निर्देशित विधि में एन्कोड करता है।
- स्ट्रिंग एनकोडर्एल (स्ट्रिंग URL) - सत्र आईडी सहित URL को एन्कोड करता है।
- बूलियन में हैडर (स्ट्रिंग नाम) होता है - इसमें JSP में हेडर होता है या नहीं।
- बूलियन को उत्तेजित किया गया है () - प्रतिक्रिया की गई है या नहीं।
- शून्य addCookie (कुकी कुकी) - प्रतिक्रिया में कुकी जोड़ता है
- शून्य AddDateHeader (स्ट्रिंग नाम, स्ट्रिंग मान) - प्रतिक्रिया शीर्षलेख दिनांक नाम और मान जोड़ता है
- शून्य addHeader (स्ट्रिंग नाम, स्ट्रिंग मान) - नाम और मूल्य के साथ प्रतिक्रिया हेडर जोड़ता है
- शून्य addIntHeader (स्ट्रिंग नाम, इंट वैल्यू) - नाम और पूर्णांक मान के साथ प्रतिक्रिया हेडर जोड़ता है
- शून्य फ़्लशबफ़र () - बफर में सामग्री को क्लाइंट को आउटपुट के लिए मजबूर करता है।
- शून्य रीसेट () - बफर में डेटा को साफ करता है।
- शून्य रीसेटबफ़र - स्थिति कोड साफ़ किए बिना प्रतिक्रिया में सामग्री बफर को साफ़ करता है।
- शून्य sendError (intsc, Stringmsg) - स्थिति कोड का उपयोग करके क्लाइंट को एक त्रुटि प्रतिक्रिया भेजता है।
- शून्य SendRedirect (स्ट्रिंग स्थान) - क्लाइंट को एक अस्थायी पुनर्निर्देशित प्रतिक्रिया भेजता है।
- शून्य setBufferSize (int आकार) - शरीर का बफर आकार सेट करता है
- शून्य setCharacterEncoding (स्ट्रिंग वर्णक) - वर्ण एन्कोडिंग सेट करता है
- शून्य setContentType (स्ट्रिंग प्रकार) - प्रतिक्रिया का सामग्री प्रकार सेट करता है
- शून्य सेटकैंटल लैंथ (इंटलेन) - प्रतिक्रिया की सामग्री की लंबाई निर्धारित करता है
- शून्य सेटलोकेल (लोकेल एलसीएल) - प्रतिक्रिया के स्थानीय प्रकार को निर्धारित करता है
- शून्य सेटस्टैटस (intsc) - प्रतिक्रिया की स्थिति कोड सेट करता है
उदाहरण:
इस उदाहरण में, हम विभिन्न तरीकों getLocale, flushbuffer, getWriter को कवर कर रहे हैं, ContentType, setIntHeader प्राप्त कर रहे हैं।
<% @ पृष्ठ भाषा = "जावा" सामग्री<% @ पृष्ठ आयात = "java.io. * java.util। *"%><सिर><मेटा http-equiv = "सामग्री-प्रकार" सामग्री = "पाठ / html; चारसेट = ISO-8859-1"><शीर्षक> गुरु कार्रवाई प्रतिक्रिया शीर्षक> head><शरीर><केंद्र>गुरु प्रतिक्रिया h2><%लोकेल lcl = response.getLocale ();out.println ("लोकेल है: + lcl + "\ n");response.flushBuffer ();PrintWriter आउटपुट = response.getWriter ();output.println ("यह लेखक वस्तु से है");स्ट्रिंग प्रकार = response.getContentType ();out.println ("सामग्री प्रकार: + प्रकार + "\ n");// रिफ्रेश, ऑटोलोड समय 5 सेकंड के रूप में सेट करेंresponse.setIntHeader ("ताज़ा करें", 5);// वर्तमान समय प्राप्त करेंतारीख dt = नई तारीख ();out.println ("आज की तारीख है: + dt.toString () + "\ n");%> केंद्र> शरीर> html>
कोड की व्याख्या:
कोड लाइन 13: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके, हमें इस JSP सत्र का लोकल ऑब्जेक्ट मिलता है
कोड लाइन 15: प्रतिक्रिया ऑब्जेक्ट का उपयोग करते हुए, फ़्लशबफ़र का उपयोग बफर सामग्री को क्लाइंट में मजबूर करने के लिए किया जाता है
कोड लाइन 16: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके, हमें लेखक ऑब्जेक्ट मिलता है जो आउटपुट स्ट्रीम में आउटपुट प्राप्त करता है
कोड लाइन 18: प्रतिक्रिया वस्तु का उपयोग करके, हमें सामग्री प्रकार यानी MIME प्रकार की प्रतिक्रिया वस्तु मिलती है
कोड लाइन 21: प्रतिक्रिया ऑब्जेक्ट का उपयोग करते हुए, इसे 5 सेकंड में 5 के रूप में सेट किया जाता है क्योंकि 5 को दूसरे पैरामीटर के रूप में सेट किया जाता है
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्न आउटपुट मिलते हैं:
आउटपुट:
- यहाँ हम आउटपुट प्राप्त करते हैं क्योंकि यह getWriter से लेखक ऑब्जेक्ट से है, जो हमें ऑब्जेक्ट देता है और हम आउटपुट स्ट्रीम में आउटपुट कर सकते हैं।
- हम पाठ / html के रूप में en_us और सामग्री प्रकार के रूप में स्थान प्राप्त करते हैं
- हमें 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 संस्करण समर्थित नहीं है
इसकी कुछ विधियाँ नीचे सूचीबद्ध हैं:
- सार्वजनिक शून्य सेटस्टैटस (intstatusCode)
यह जो भी हम उस JSP पेज में सेट करना चाहते हैं वह स्टेटस कोड सेट करता है। यह हमें स्टेटस कोड का संदेश देगा जो सेट किया गया है
- सार्वजनिक शून्य SendRedirect (स्ट्रिंग URL)
यह नए दस्तावेज़ का URL देने वाले स्थान शीर्षलेख के साथ 302 प्रतिक्रिया देता है
- सार्वजनिक शून्य भेजना (परिचय, स्ट्रिंग)
यह शॉर्ट मैसेज के साथ स्टेटस कोड भेजता है और इसे HTML डॉक्यूमेंट के अंदर फॉर्मेट किया जाता है।
उदाहरण:
इस उदाहरण में, हम स्पष्ट रूप से JSP पृष्ठ पर त्रुटि भेज रहे हैं।
<% @ पृष्ठ भाषा = "जावा" सामग्री<सिर><मेटा http-equiv = "सामग्री-प्रकार" सामग्री = "पाठ / html; चारसेट = ISO-8859-1"><शीर्षक> गुरु स्थिति कोड शीर्षक> head><शरीर><% response.sendError (404, "गुरु पेज नॉट फाउंड"); %> शरीर> html>कोड की व्याख्या:
कोड लाइन 10: प्रतिक्रिया ऑब्जेक्ट का उपयोग करके हम एक पेज पर दो मापदंडों के साथ त्रुटि भेज रहे हैं।
- स्थिति कोड - यह उपरोक्त में से कोई भी हो सकता है। इस मामले में, हमने 404 का वर्णन किया है
- संदेश - यह कोई भी विशिष्ट संदेश हो सकता है जिसे हम त्रुटि दिखाना चाहते हैं
यदि आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्न आउटपुट मिलते हैं:
आउटपुट:
यहां हमें 404 के रूप में त्रुटि कोड मिलता है, जो कोड से भेजा गया था और आउटपुट में देखा गया "गुरु पेज नहीं मिला" संदेश भी प्रदर्शित करता है।
सारांश:
- इस लेख में, हमने क्लाइंट अनुरोध और सर्वर प्रतिक्रिया के बारे में सीखा है कि अनुरोध को कैसे इंटरसेप्ट किया जाता है और कैसे प्रतिक्रियाओं में हेरफेर किया जाता है।
- साथ ही, हमने किसी विशेष फ़ाइल के लिए त्रुटि कोड या सफलता कोड दिखाने के लिए HTTP स्थिति कोड के बारे में सीखा है।