JavaServer Pages (जावासर्वर पेजेस)
JavaServer Pages (जावासर्वर पेजेस) (JSP) एक सर्वर साइड जावा तकनीक है, जो एक जावा वेब अनुप्रयोग कंटेनर (सर्वर) के लिए एक वेब ग्राहक के अनुरोध के जवाब में HTML, XML, या अन्य दस्तावेजों के प्रकारों के साथ, गतिक रूप से विकसित किये गए वेब पेज का निर्माण करने के लिए सॉफ्टवेयर का विकास करने वाले लोगों की मदद करती है। इसे सक्षम बनाने के लिए एक HTML पेज file extension .jsp को दिया जाता है और एक XML मार्क अप file extension .jspx, को दिया जाता है, ताकि जावा सर्वर (कंटेनर) यह पहचान लेगा कि फाइल को ग्राहक को भेजने से पहले JSP प्रोसेसिंग की जरुरत है। JSP पेजों को सर्वर में लोड किया जाता है और इसे एक "संरचित विशेष रूप से इन्सटाल किये गए Java server packet (जावा सर्वर पैकेट)" से ओपरेट किया जाता है जिसे "J2EE Web Application (J2EE वेब एप्लीकेशन)" कहा जाता है, इसे अक्सर एक ".war" या ".ear" फाइल संग्रह के रूप में पैक किया जाता है।
यह तकनीक जावा कोड को और विशिष्ट पूर्व परिभाषित क्रियाओं को स्टेटिक पेज सामग्री में प्रवेश करने की अनुमति देती है और हर पेज के अनुरोध पर रनटाइम पर सर्वर पर संकलन की अनुमति देती है। जावा सर्वर (J2EE विनिर्देशन) और पेज स्क्रिप्ट दोनों और/या विस्तृत कस्टमाइज्ड प्रोग्रामिंग एक विशेष पहले से इंस्टाल किये गए बेस प्रोग्राम के द्वारा ओपरेट की जाती है, यह प्रोग्राम एक आभासी या वर्चुअल मशीन कहलाता है, जो मेजबान के ऑपरेटिंग सिस्टम को एकीकृत करता है, यह प्रकार Java Virtual Machine (जावा वर्चुअल मशीन) (JVM) होता है। क्योंकि या तो, "एक Compiler-JVM set (कम्पाइलर- JVM सेट) (जो एक SDK या JDK" कहलाता है) या "लोन JVM (जो JRE, Java Runtime Environment(जावा रनटाइम एन्वायरनमेंट)" कहलाता है) या दोनों अधिकांश कंप्यूटर प्लेटफोर्म OSs के लिए बने हैं और JVM के लिए कम्पाइल किये गए प्रोग्राम विशेष जावा बाईट कोड फाइलों में कम्पाइल किये जाते हैं, इसके लिए JVM बाईट कोड फाइलें (कम्पाइल किये गए जावा प्रोग्राम के वर्ग की फाइलें) प्लेटफोर्मों के बीच प्रभावी रूप से स्थानांतरित की जा सकती हैं, जिसके लिए विशेष परिस्थितियों या वर्जनिंग कमपेटीबिलिटी के आलावा पुनः कम्पाइल करने की जरुरत नहीं होती है।
इन J2EE सर्वलेट या J2EE JSP प्रोग्रामों के लिए स्रोत कोड की आपूर्ति "लगभग हमेशा J2EE JSP सामग्री और J2EE वेब अनुप्रयोग के साथ की जाती है क्योंकि सर्वर उन्हें लोड करते समय कम्पाइलर को बुलाता है।" इन छोटे विस्तार कार्यक्रम (कस्टम टैग, सर्वलेट, बीन्स, पेज स्क्रिप्टिंग) चार होते हैं और इनके अपडेट किये जाने की संभावना होती है, या रन टाइम शुरू होने से पहले इन्हें परिवर्तित किया जा सकता है, या यह बीच बीच में किया जाता है, विशेष रूप से जब ये खुद JSP पेज अनुरोध भेजते हैं, "इसे जरुरत होती है कि JSP सर्वर" की पहुँच एक ava compiler (जावा कम्पाइलर) को हो (SDK या JDK) और आवश्यक स्रोत कोड (JVM JRE और बाईट कोड वर्ग की फाइलें साधारण रूप से नहीं) सर्व करने की विधि का सफलतापूर्वक उपयोग कर सके।
JSP सिंटेक्स के दो बुनियादी प्रकार हैं, "scriptlet (स्क्रिप्टलेट)" और "markup (मार्कअप)" हालांकि मूल रूप से पेज या तो HTML या XML मार्क अप होते हैं। Scriptlet tagging (स्क्रिप्टलेट टैगिंग) (स्क्रिप्टलेट तत्व कहलाते हैं) ("सीमांकित) मार्क अप के साथ ब्लोक्स ऑफ़ कोड" प्रभावी रूप से मार्क अप नहीं होते हैं और किसी भी API से सम्बंधित जावा सर्वर (उदाहरण सर्वर जो खुद बाइनरी को चला रहें हैं या डाटा बेस कनेक्शन API या जावा मेल API) या अधिक विशिष्ट JSP API भाषा कोड को अनुमति देते हैं कि वह JSP फाइल में अपलब्ध करायी गयी सही घोषणाओं से युक्त एक HTML या XML पेज में प्रवेश कर जाएं और पेज के फाइल एक्सटेंशन प्रयुक्त किये जाते हैं। स्क्रिप्टलेट ब्लॉक्स को खुद ब्लॉक्स में पूरा होने की जरुरत नहीं होती है, "स्टेटमेंट की जरुरत के अनुसार खुद ब्लॉक की आखिरी लाइन पूरी की जाती है, जो विश्लेषणात्मक रूप से सही" होती है, इसे "एक बाद के ब्लॉक में पूरा किया जा सकता है।" इनलाइन कोडिंग सेक्शन को विभाजित करने की यह प्रणाली "step over scripting (स्टेप ओवर स्क्रिप्टिंग)" कहलाती है, क्योंकि इसे "स्टेप ओवर करके" स्टेटिक मार्क अप के चारों और लपेटा जा सकता है। रनटाइम पर (एक ग्राहक के अनुरोध के दौरान) कोड को कम्पाइल किया जाता है और इसका मूल्यांकन किया जाता है, लेकिन कोड का कम्पाईलेशन (संकलन) आम तौर पर तब होता है जब फाइल के कोड में कोई परिवर्तन होता है।
JSP सिंटेक्स या वाक्यविन्यास में अतिरिक्त XML की तरह के टैग होते हैं, जो JSP एक्शन कहलाते हैं, इनका उपयोग निर्माणात्मक क्रियाओं में किया जाता है। इसके अतिरिक्त, प्रौद्योगिकी JSP टैग लायब्ररीज के निर्माण के लिए अनुमति देता है जो मानक HTML या XML टैग के लिए एक्सटेंशन के रूप में कार्य करता है। JVM के द्वारा ओपरेट किये गए लायब्ररी, एक वेब सर्वर की क्षमताओं के विस्तार के प्लेटफोर्म स्वतंत्र तरीके उपलब्ध कराता है।
ध्यान दें कि जावा सर्वर के सभी कम्पनी निर्माण, J2EE specification (J2EE विनिर्देशन) अनुरूप नहीं हैं। संरचनात्मक रूप से, JSP को Java servlets (जावा सर्वलेट) के उच्च स्तरीय एबस्ट्रेकशन के रूप में देखा जा सकता है। सर्वलेट और JSP दोनों मूल रूप से Sun Microsystems (सन माइक्रोसिस्टम्स) में विकसित किए गए। JSP specification (JSP विनिर्देशन) के 1.2 संस्करण के साथ शुरू करते हुए, JavaServer Pages (जावासर्वर पेजेस) का विकास जावा समुदाय प्रक्रिया के तहत किया गया है। JSR 53 JSP 1.2 और सर्वलेट 2.3 विनिर्देशों दोनों को परिभाषित करता है और JSR 152 JSP 2.0 विनिर्देश को परिभाषित करता है। मई 2006 को JSP 2.1 विनिर्देश को जावा EE 5 के भाग के रूप में JSR 245 के तहत जारी किया गया है। JSPs को एक JSP compiler (JSP कम्पाइलर) के द्वारा सर्वलेट्स में कम्पाइल किया जाता है। कम्पाइलर या तो जावा कोड में एक सर्वलेट उत्पन्न करता है जो फिर जावा कम्पाइलर के द्वारा कम्पाइल किया जाता है, या यह बाईट कोड के लिए सर्वलेट को कम्पाइल कर सकता है जो प्रत्यक्ष रूप से निष्पादित किया जा सकता है। JSPs की व्याख्या ओन-द-फ्लाई भी की जा सकती है, इससे पुनः लोड परिवर्तनों में लगने वाला समय कम हो जाता है। चाहे JSP कम्पाइलर एक सर्वलेट के लिए जावा स्रोत कोड को उत्पन्न करे या सीधे बाईट कोड को उत्पन्न करे, यह इस बात को समझने में मदद करता है की JSP कम्पाइलर कैसे पेज को जावा सर्वलेट में रूपांतरित कर देता है।
उदाहरण के लिए, निम्न इनपुट JSP पर और इसके परिणामी उत्पन्न जावा सर्वलेट पर विचार करें। इनपुट JSP
परिणामी सर्वलेट
package jsp_servlet; import java.util.*; import java.io.*; import javax.servlet. *; import javax.servlet.http.*; import javax.servlet.jsp.*;
throws javax.servlet.ServletException, Object page = this; try {सन की सिफारिश है कि मोडल-दृश्य-नियंत्रक-प्रतिरूप का उपयोग JSP फाइलों में किया जाता है ताकि request processing (अनुरोध प्रसंस्करण) और computer data storage (कंप्यूटर डेटा भंडारण)से प्रेजेंटेशन का विभाजन किया जा सके। या तो नियमित सर्वलेट्स या JSP फाइलों का उपयोग अनुरोध को प्रोसेस करने के लिए किया जाता है। अनुरोध प्रसंस्करण के पूरा हो जाने के बाद, नियंत्रण को JSP को भेज दिया जाता है जिसका उपयोग आउटपुट के निर्माण में किया जाता है। वेबटायर्स के लिए मोडल-दृश्य-नियंत्रक-प्रतिरूप पर आधारित कई प्लेटफोर्म होते हैं (जैसे Barracuda, Apache Struts, Stripes और the Spring MVC framework)।
JSP पेज एक HTML या XML दस्तावेज़ में टैग लगते हैं जिनका मूल्यांकन कम्पाइलर के द्वारा किया जाता है। इसे उन स्क्रिप्टिंग टैग का उपयोग करके किया जा सकता है, जो PHP या ASP.NET में प्रयुक्त किये जाने वाले टैग्स के समान होते हैं, या JSP टैग लाइब्रेरी के आयात के द्वारा भी इसे किया जा सकता है।
JSP डायरोक्टिव को एक JSP पेज के शीर्ष पर जोड़ा जाता है। ये निर्देश इस बात पर नियंत्रण करते हैं कि JSP कम्पाइलर कैसे सर्वलेट को उत्पन्न करता है।
निम्नलिखित डायरोक्टिव उपलब्ध हैं:
क्रियात्मक रूप से यह इस बात के समान है जैसे वह जो C प्री प्रोसेसर के द्वारा उपलब्ध कराया गया है। शामिल फाइलों में आम तौर पर एक्सटेनशन "jspf" होता है। (JSP फ्रेगमेंट के लिये):Default value (डिफ़ॉल्ट का मान) "गलत" है। फाल्स का मान, कभी कभी ही प्रयुक्त किया जाता है, यह सूचित करता है कि जब बफर अतिभारित (ओवरफ्लो) हो जाये तब एक अपवाद फेंका जाना चाहिए।
फाल्स का मान इंगित करता है कि किसी भी session का उपयोग नहीं किया जायेगा और चर session की पहुंच के प्रयास के परिणामस्वरूप उस समय त्रुटि होगी जब JSP पेज को एक सर्वलेट में अनुवादित किया जायेगा.
अभी, एकमात्र संभव मान '(java) जावा' है।
आप इस का उपयोग नहीं तब तक नहीं करेंगे जब तक आप को वास्तव में यह न पता हो कि आप क्या कर रहें हैं-यह कंटेनर के द्वारा उपलब्ध कराये गए क्लास पदानुक्रम को ओवरराइड करता है।
JSP कंटेनर कई अंतर्निहित वस्तुओं को दर्शाता है जिन्हें प्रोग्रामर द्वारा इस्तेमाल किया जा सकता है:स्क्रिप्टिंग तत्वों के "तीन" मूल प्रकार होते हैं जो जावा कोड को सीधे सर्वलेट में प्रविष्ट होने की अनुमति देता है।स्थैतिक डेटा सदस्यों को भी इसी तरह से परिभाषित किया जा सकता है। साथ ही भीतरी वर्ग भी यहां परिभाषित किये जाने चाहियें. declaration टैग परिभाषित किये जाने वाली विधि की भी अनुमति देते हैं। if(obj != null){ return "";
name: