जेएसटीएल (जेएसपी मानक टैग लाइब्रेरी)
इस JSTL ट्यूटोरियल में, हम देखेंगे कि विभिन्न JSTL टैग का उपयोग करने से JSP कोडिंग कैसे आसान हो जाएगी।
JSTL क्या है? Java?
जेएसटीएल के लिए खड़ा है Java सर्वर पेज मानक टैग लाइब्रेरी है, और यह कस्टम JSP टैग लाइब्रेरी का एक संग्रह है जो सामान्य वेब विकास कार्यक्षमता प्रदान करता है। JSTL JSP की एक मानक टैग लाइब्रेरी है।
जेएसटीएल के लाभ
जेएसटीएल के लाभ नीचे दिए गए हैं:
- मानक टैग: यह JSP पेजों की पोर्टेबल कार्यक्षमता की एक समृद्ध परत प्रदान करता है। डेवलपर के लिए कोड को समझना आसान है।
- साफ और स्वच्छ कोडचूंकि स्क्रिपलेट्स डेवलपर को भ्रमित करते हैं, इसलिए JSTL का उपयोग कोड को साफ और स्वच्छ बनाता है।
- स्वचालित Javaबीन्सइंटरस्पेक्शन समर्थन: इसमें JSP स्क्रिप्टलेट की तुलना में JSTL का एक लाभ है। JSTL अभिव्यक्ति भाषा संभालती है Javaबीन कोड को बहुत आसानी से इस्तेमाल किया जा सकता है। हमें ऑब्जेक्ट को डाउनकास्ट करने की ज़रूरत नहीं है, जिसे स्कोप्ड विशेषताओं के रूप में प्राप्त किया गया है। JSP स्क्रिप्टलेट कोड का उपयोग करना जटिल होगा, और JSTL ने उस उद्देश्य को सरल बना दिया है।
- मनुष्यों के लिए पढ़ना आसान: JSTL किस पर आधारित है एक्सएमएलजो HTML से बहुत मिलता जुलता है। इसलिए, डेवलपर्स के लिए इसे समझना आसान है।
- कंप्यूटर के लिए समझना आसान: उपकरण जैसे Dreamweaver और फ्रंट पेज अधिक से अधिक HTML कोड उत्पन्न कर रहे हैं। HTML उपकरण HTML कोड को प्रारूपित करने का एक बढ़िया काम करते हैं। HTML कोड को स्क्रिपलेट कोड के साथ मिलाया जाता है। चूंकि JSTL को XML अनुरूप टैग के रूप में व्यक्त किया जाता है, इसलिए HTML जनरेशन के लिए दस्तावेज़ के भीतर JSTL कोड को पार्स करना आसान होता है।
जेएसटीएल टैग
कोर टैग JSP में सबसे अधिक इस्तेमाल किए जाने वाले टैग हैं। वे निम्न के लिए समर्थन प्रदान करते हैं
- यात्रा
- सशर्त तर्क
- अपवाद पकड़ें
- यूआरएल आगे
- पुनर्निर्देशित करना, आदि।
कोर टैग का उपयोग करने के लिए हमें पहले टैग लाइब्रेरी को परिभाषित करना होगा और नीचे टैग लाइब्रेरी को शामिल करने का सिंटैक्स दिया गया है।
वाक्य - विन्यास :
<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>
यहाँ,
- उपसर्ग का उपयोग सभी मुख्य टैग को परिभाषित करने के लिए किया जा सकता है और
- uri taglib की लाइब्रेरी है जहां से इसे आयात किया जाता है
आइये कुछ मुख्य टैग्स को विस्तार से देखें,
1. बाहर
- अभिव्यक्ति का परिणाम आउट टैग में प्रदर्शित होता है
- यह सीधे XML टैग से बच सकता है। इसलिए, उन्हें वास्तविक टैग के रूप में मूल्यांकित नहीं किया जाता है
सिंटेक्स:
<c:out value="" default="" escapeXML="">
- यहाँ मान आउटपुट के लिए सूचना का प्रतिनिधित्व करता है, और यह अनिवार्य है
- डिफ़ॉल्ट रूप से जानकारी आउटपुट करने में विफलता होती है, और यह अनिवार्य नहीं है
- escapeXML - यदि यह XML वर्णों से बचता है तो यह सत्य है।
उदाहरण:
कोरटैग_jsp1.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>Core Tag JSP1</title> </head> <body> </body> </html>
कोड का स्पष्टीकरण:
कोड लाइन 3: यह टैगलिब उपसर्ग सभी टैग के लिए आवश्यक है और इसमें जोड़ा गया उपसर्ग 'c' है। इसलिए, इसे सभी कोरटैग के लिए उपसर्ग के रूप में इस्तेमाल किया जा सकता है।
कोड लाइन 12: यहाँ हम उपसर्ग “c” के साथ coretag out का उपयोग कर रहे हैं और यह out अभिव्यक्ति टैग में मान प्रिंट करेगा। इसलिए, आउटपुट नाम होगा
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट मिलता है:
आउटपुट:
- हम कोर टैग “आउट” से नाम के रूप में मान प्राप्त कर रहे हैं जो आउटपुट स्ट्रीम में प्रिंट होगा।
2. कैच
- यह बॉडी में होने वाले किसी भी थ्रोएबल अपवाद को पकड़ लेता है और आउटपुट के रूप में दिखाता है।
- इसका उपयोग त्रुटियों से निपटने और उन्हें पकड़ने के लिए किया जाता है।
सिंटेक्स:
<c:catchvar="">
यहाँ var उस वेरिएबल का नाम दर्शाता है, जो throwable exception को होल्ड करेगा।
उदाहरण:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!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>Core Tag JSP2</title> </head> <body> <c:catch var="guruException"> <% int num = 10/0; %> </c:catch> The Exception is : ${guruException} </body> </html>
कोड का स्पष्टीकरण:
कोड लाइन 3: यह टैगलिब उपसर्ग सभी टैग के लिए आवश्यक है और इसमें जोड़ा गया उपसर्ग 'c' है, इसलिए इसे सभी कोरटैग के लिए उपसर्ग के रूप में इस्तेमाल किया जा सकता है
कोड लाइन 11-13: कोरटैग कैच का उपयोग अपवाद को पकड़ने और अपवाद को प्रिंट करने के लिए किया जाता है। यहाँ अपवाद तब उठाया जाता है जब 10/0 होता है और उस अपवाद का नाम “गुरुएक्सेप्शन” होता है।
कोड लाइन 14: हम “guruException” प्रिंट कर रहे हैं।
जब आप कोड निष्पादित करेंगे, तो आपको निम्नलिखित आउटपुट मिलेगा:
आउटपुट:
- हमें /by zero के रूप में Arithmetic Exception मिल रहा है, और यह variable “guruException” का उपयोग करके आउटपुट में प्रिंट किया गया है
3। आयात
- हम किसी अन्य फ़ाइल की सामग्री को JSP पृष्ठ में आयात कर सकते हैं जैसा कि हमने किया था जेएसपी में कार्रवाई शामिल है.
- यहां हम URL भी शामिल कर सकते हैं और सामग्री उस पृष्ठ पर प्रदर्शित की जाएगी।
सिंटेक्स:
<c:importvar="" uri="">
यहाँ var एक चर नाम है जो एक पहचानकर्ता है, जो फ़ाइल नाम/uri रखेगा। uri सापेक्ष फ़ाइल नाम या uriname है।
coretag_jsp31.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!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>Core Tag JSP 31</title> </head> <body> <c:import var="displayfile" url="coretag_jsp32.jsp"> </c:import> <c:out value="${displayfile}"/> </body> </html>
कोरटैग_jsp32.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>Insert title here</title> </head> <body> <a>The file is diplayed after importing</a> </body> </html>
कोड का स्पष्टीकरण:
कोरटैग_jsp31.jsp
कोड लाइन 3: यह टैगलिब उपसर्ग सभी टैग के लिए आवश्यक है और इसमें जोड़ा गया उपसर्ग 'c' है, इसलिए इसे सभी कोरटैग के लिए उपसर्ग के रूप में इस्तेमाल किया जा सकता है
कोड लाइन 11-12: यहां हम import tag का उपयोग करके coretag_jsp32.jsp फ़ाइल को इस फ़ाइल में आयात कर रहे हैं
कोड लाइन 13: यहां हम out टैग का उपयोग करके coretag_jsp32.jsp फ़ाइल प्रिंट कर रहे हैं।
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट मिलता है।
आउटपुट:
- Coretag_jsp32 आउटपुट में मुद्रित होता है क्योंकि यह फ़ाइल coretag_jsp31.jsp में आयात की गई थी।
4. फॉरएच
- इसका उपयोग कथनों की श्रृंखला में तत्वों की संख्या को दोहराने के लिए किया जाता है।
- यह एक जैसा ही है Java पाश के लिए।
सिंटेक्स:
<c:forEach var="" begin="" end="">
- यहाँ var चर नाम को दर्शाता है जो काउंटर नाम रखेगा
- आरंभ काउंटर आरंभ मान का प्रतिनिधित्व करता है
- अंत इसके अंतिम मान को दर्शाएगा
उदाहरण:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!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>Core Tag JSP4</title> </head> <body> <c:forEach var="gurucount" begin="5" end="10"> <c:out value="${gurucount}"/> </c:forEach> </body> </html>
कोड का स्पष्टीकरण:
कोड लाइन 3: यह टैगलिब उपसर्ग सभी टैग के लिए आवश्यक है और इसमें जोड़ा गया उपसर्ग 'c' है, इसलिए इसे सभी कोरटैग के लिए उपसर्ग के रूप में इस्तेमाल किया जा सकता है
कोड लाइन 11-13: यहां हम "forEach" लूप का उपयोग करते हैं, जहां वेरिएबल का नाम "gurucount" है, जिसकी आरंभिक गिनती 5 और अंतिम गिनती 10 है। हम वेरिएबल gurucount को प्रिंट कर रहे हैं, जिसमें 5 से 10 तक की संख्याएं हैं।
जब आप कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट मिलता है
आउटपुट:
- हमें जो आउटपुट मिल रहा है वह 5 से 10 तक है।
5। अगर
- के उपयोग में आना परीक्षण शर्तें.
- यदि टैग का उपयोग किसी शर्त के सत्य होने या न होने का परीक्षण करने के लिए किया जाता है, तो कोड का ब्लॉक निष्पादित किया जाएगा।
सिंटेक्स:
<c:if test="${condition}></c:if>
यहां यदि शर्त सत्य है तो कथनों की श्रृंखला निष्पादित होती है।
उदाहरण:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!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>Core Tag JSP5</title> </head> <body> <c:set var="count" value="100"/> <c:if test="${count == 100}"> <c:out value="The count is 100"/> </c:if> </body> </html>
कोड का स्पष्टीकरण:
कोड लाइन 3: यह टैगलिब उपसर्ग सभी टैग के लिए आवश्यक है और इसमें जोड़ा गया उपसर्ग 'c' है, इसलिए इसे सभी कोरटैग के लिए उपसर्ग के रूप में इस्तेमाल किया जा सकता है
कोड लाइन 11: यहां हम count नामक वेरिएबल को 100 पर सेट कर रहे हैं
कोड लाइन 12-14: यहां हम "अगर स्थिति" का उपयोग कर रहे हैं जहां हम जांच कर रहे हैं कि गिनती 100 के बराबर है या नहीं। यह 100 के बराबर है तो हमें "गिनती 100 है" के रूप में आउटपुट मिलता है।
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट मिलता है
आउटपुट:
- चूँकि “if” शर्त सत्य है, हमें आउटपुट “गिनती 100 है” मिलता है।
6. पुनर्निर्देशित करें
- इसका उपयोग इस टैग का सापेक्ष URL प्रदान करके वर्तमान पृष्ठ को दूसरे URL पर पुनर्निर्देशित करने के लिए किया जाता है।
- यह संदर्भ सापेक्ष URL का समर्थन करता है
सिंटेक्स:
<c:redirect url="" context=""/>
यहां यूआरएल वह सापेक्ष यूआरएल है जिस पर इसे पुनर्निर्देशित किया जाना है तथा स्थानीय वेब अनुप्रयोग का संदर्भ नाम है।
उदाहरण:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!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>Core Tag JSP6</title> </head> <body> <c:redirect url="/"/> </body> </html>
कोड का स्पष्टीकरण:
कोड लाइन 3: यह टैगलिब उपसर्ग सभी टैग के लिए आवश्यक है और इसमें जोड़ा गया उपसर्ग 'c' है, इसलिए इसे सभी कोरटैग के लिए उपसर्ग के रूप में इस्तेमाल किया जा सकता है
कोड लाइन 11: यहां हम "रीडायरेक्ट टैग" का उपयोग करते हैं, जहां हम यूआरएल नाम निर्दिष्ट कर रहे हैं, और जब हम उस पृष्ठ पर क्लिक करते हैं तो यह उस साइट पर रीडायरेक्ट करता है जिसे रीडायरेक्ट के लिए दिया गया है।
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट मिलता है;
आउटपुट:
- हमें आउटपुट guru99.com यूआरएल मिलता है जिसे coretag_jsp6.jsp द्वारा पुनर्निर्देशित किया जाता है
जेएसटीएल कस्टम टैग
- यह एक उपयोगकर्ता-परिभाषित JSP भाषा तत्व.
- जब JSP को सर्वलेट में अनुवादित किया जाता है, तो कस्टम टैग को क्लास में परिवर्तित कर दिया जाता है जो ऑब्जेक्ट पर कार्रवाई करता है और इसे टैग हैंडलर कहा जाता है।
- जब सर्वलेट निष्पादित होता है तो वे क्रियाएं वेब कंटेनर द्वारा क्रियान्वित की जाती हैं।
- उपयोगकर्ता-परिभाषित कस्टम टैग बनाने के लिए, हमें टैग हैंडलर बनाने की आवश्यकता है जो SimpleTagSupport का विस्तार करेगा और doTag() विधि को ओवरराइड करना होगा।
- हमें TLD बनाने की आवश्यकता है जहां हमें क्लास फ़ाइल को TLD में मैप करना होगा।
JSP में कस्टम टैग के लाभ
JSP में कस्टम टैग के लाभ इस प्रकार हैं:
- पोर्टेबल: टैग लाइब्रेरी में वर्णित क्रिया किसी भी JSP कंटेनर में प्रयोग योग्य होनी चाहिए।
- सरल: अपरिष्कृत उपयोगकर्ताओं को इस तंत्र को समझने और उपयोग करने में सक्षम होना चाहिए। JSP कार्यक्षमता के विक्रेताओं को इसे उपयोगकर्ताओं के लिए क्रियाओं के रूप में उपलब्ध कराना आसान होना चाहिए।
- अभिव्यंजक: तंत्र को क्रियाओं की एक विस्तृत श्रृंखला का समर्थन करना चाहिए, जिसमें नेस्टेड क्रियाएं, क्रिया निकायों के अंदर स्क्रिप्टिंग तत्व, स्क्रिप्टिंग चरों का निर्माण, उपयोग और अद्यतन शामिल हैं।
- विभिन्न स्क्रिप्टिंग भाषाओं से प्रयोग योग्य: हालाँकि JSP विनिर्देश वर्तमान में केवल स्क्रिप्ट के लिए शब्दार्थ को परिभाषित करता है Java प्रोग्रामिंग भाषा के अलावा, हम अन्य स्क्रिप्टिंग भाषाओं की संभावना को भी खुला छोड़ना चाहते हैं।
- मौजूदा अवधारणाओं और मशीनरी पर आधारित: हम जो कुछ भी पहले से मौजूद है, उसे फिर से नहीं बनाना चाहते। साथ ही, हम भविष्य में होने वाले संघर्षों से बचना चाहते हैं, जब भी हम उनका पूर्वानुमान लगा सकते हैं।
सिंटेक्स:
मान लीजिए कि हम testGuru टैग बना रहे हैं और हम taghandlertestTag क्लास का उपयोग कर सकते हैं, जो doTag() विधि को ओवरराइड कर देगा।
<ex:testGuru/> Class testTag extends SimpleTagSupport{ public void doTag()}
इसके अलावा, हमें इस testTag क्लास को TLD (टैग लाइब्रेरी) में मैप करना होगा Descriptया) चूंकि JSP कंटेनर स्वचालित रूप से क्लास फ़ाइल और URI के बीच मैपिंग बनाएगा जिसका उल्लेख TLD फ़ाइल में किया गया है।
जेएसपी टैग इंटरफ़ेस
- इस क्लास को SimpleTagSupport क्लास का विस्तार करना होगा।
- इस क्लास को doTag() विधि को ओवरराइड करना होगा जो SimpleTagSupport क्लास का हिस्सा है (ओवरराइडिंग एक ऐसी विधि है जो पैरेंट क्लास से विरासत में प्राप्त होती है)।
- यह इंटरफ़ेस JSPTag इंटरफ़ेस का उप इंटरफ़ेस है।
- यह टैग के आरंभ और अंत में कार्य करने की विधियां प्रदान करता है।
- इसके अलावा, हमें इस क्लास को TLD यानी टैग लाइब्रेरी डिस्क्रिप्टर में मैप करना होगा
हम नीचे दिए गए उदाहरण पर विचार कर रहे हैं
टैग इंटरफ़ेस की विधि
- doTag() एक विधि है जिसे हमें ओवरराइड करना होगा जिसमें टैग की सामग्री होगी।
- यह getJSPContext() का उपयोग करके वर्तमान JSP संदर्भ लेता है
उदाहरण:
कस्टमटैग_jsp1.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="ex" uri="WEB-INF/custom.tld"%> <!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>Custom Tag</title> </head> <body> <ex:guruTag/> </body> </html>
कस्टम.tld
<taglib> <tlib-version>1.0</tlib-version> <jsp-version>2.0</jsp-version> <short-name>Test TLD</short-name> <tag> <name>guruTag</name> <tag-class>demotest.guruTag</tag-class> <body-content>empty</body-content> </tag> </taglib>
गुरुटैग.जावा(टैगहैंडलर)
package demotest; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class guruTag extends SimpleTagSupport{ public void doTag() throws JspException,IOException { JspWriter out = getJspContext().getOut(); out.println("Guru Tag"); } }
कोड का स्पष्टीकरण:
गुरुटैग.जावा(टैगहैंडलर)
कोड लाइन 6:गुरुटैग क्लास SimpleTagSupport क्लास का विस्तार कर रहा है जो javax.servlet.JSP jar में मौजूद है
कोड लाइन 7: यहां हम doTag() विधि को ओवरराइड कर रहे हैं जो JspException और IOException फेंकता है।
कोड लाइन 9-10: इस विधि में, कोड को कस्टम टैग में एम्बेड किया जाएगा जिसे कॉल किया जाएगा। हम JspWriter का ऑब्जेक्ट ले रहे हैं, और वह “गुरु टैग” प्रिंट करेगा।
कस्टम.tld
कोड लाइन 6: यहां कस्टम टैग का नाम “guruTag” है।
कोड लाइन 7:टैग क्लास taghandlerclass है, यानी, guruTag.java। यह हैंडलर फ़ाइल का पूरा पथ लेता है जिसमें फ़ाइल के स्थान का निर्देशिका पथ शामिल होता है।
कस्टमटैग_jsp1.jsp
कोड लाइन 3यह टैगलिब उपसर्ग सभी टैगों के लिए आवश्यक है और इसमें जोड़ा गया उपसर्ग 'ex' है, इसलिए इसे सभी कोरटैगों के लिए उपसर्ग के रूप में उपयोग किया जा सकता है और uri custom.tld है जो टैग हैंडलर को मैप करता है।
कोड लाइन 11: यहां हम कस्टम टैग “guruTag” को परिभाषित कर रहे हैं, जो हैंडलर क्लास doTag() विधि को कॉल करेगा और इसके भीतर कोड निष्पादित किया जाएगा।
जब आप उपरोक्त कोड निष्पादित करते हैं, तो आपको निम्नलिखित आउटपुट मिलता है
आउटपुट:
- हमें guruTag.java अर्थात TagHandler से "GuruTag" के रूप में आउटपुट मिलता है, जो doTag() विधि को ओवरराइड करता है और जो आउटपुट के रूप में "Guru Tag" प्रिंट करता है।
सारांश
- इस अनुभाग में, हमने JSP मानक टैग लाइब्रेरी के बारे में सीखा जिसमें हमने कोर टैग और कस्टम टैग किए।
- कोर टैग में for, if, redirect, import, catch टैग शामिल हैं जो JSP में बुनियादी उद्देश्यों के लिए उपयोग किए जाने वाले टैग थे।
- इसके अलावा, हमने कस्टम टैग भी बनाए हैं, जिसमें हम टैग को परिभाषित कर सकते हैं और JSP में इसका उपयोग कर सकते हैं