इस article में सम्बंधित अथवा बाहरी कड़ियाँ अनुभाग में सन्दर्भों की एक सूची है, लेकिन इनलाइन उद्धरणों की कमी के कारण इसके स्रोत स्पष्ट नहीं हैं। कृपया उपयुक्त स्थानों पर उचित सन्दर्भ देकर लेख को सुधारने में मदद करें। (November 2007) |
This article needs reorganization to meet Wikipedia's quality standards. There is good information here, but it is poorly organized; editors are encouraged to be bold and make changes to the overall structure to improve this article. (November 2007) |
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.*;
import javax.servlet.jsp.tagext.*;
import com.foo.bar; // <%@ page import="com.foo.bar" %> के परिणाम के रूप में आयातित
import …
class _myservlet javax.servlet का क्रियान्वयन करता है।Servlet, javax.servlet.jsp.HttpJspPage {
// के रूप में डाली गयीं
// <%! का परिणाम int serverInstanceVariable = 1;%>
int serverInstanceVariable = 1;
...
public void _jspService(javax.servlet.http.HttpServletRequest अनुरोध,
javax.servlet.http.HttpServletResponse प्रतिक्रिया)
throws javax.servlet.ServletException,
java.io.IOException
(
javax.servlet.ServletConfig config = …; // Get the servlet config
Object page = this;
PageContext pageContext = …; // इस अनुरोध के लिए page context प्राप्त करें.
javax.servlet.jsp.JspWriter out = pageContext.getOut();
HttpSession session= request.getSession (true);
try {
out.print("<html>\r\n");
out.print("<head>\r\n");
...
// <% int localStackBasedVariable = 1; %> से
int localStackBasedVariable = 1;
...
out.print ("<table><td>\r\n");
out.print (" <tr><td>");
// From <%= toStringOrBlank("expanded inline data " + 1) %>
out.print(toStringOrBlank("expanded inline data " + 1));
out.print (" </td></tr><td>\r\n");
...
} catch (Exception _exception) {
// Clean up and redirect to error page in <%@ page errorPage="myerror.jsp" %>
}
}
}
सन की सिफारिश है कि मोडल-दृश्य-नियंत्रक-प्रतिरूप का उपयोग 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 फ्रेगमेंट के लिये):
<%@ include file="somefile.jspf" %>
import (इंपोर्ट)
स्टेटमेंट में परिणामों को परिणामी फाइल में डाला जा रहा है।
Default value (डिफ़ॉल्ट का मान) गलत है।
फाल्स का मान, कभी कभी ही प्रयुक्त किया जाता है, यह सूचित करता है कि जब बफर अतिभारित (ओवरफ्लो) हो जाये तब एक अपवाद फेंका जाना चाहिए।
बफर का उपयोग करते समय भी फाल्स का मान गैर कानूनी होता है="कोई नहीं"
फाल्स का मान इंगित करता है कि किसी भी session का उपयोग नहीं किया जायेगा और चर session की पहुंच के प्रयास के परिणामस्वरूप उस समय त्रुटि होगी जब JSP पेज को एक सर्वलेट में अनुवादित किया जायेगा.
अभी, एकमात्र संभव मान '(java) जावा' है।
आप इस का उपयोग नहीं तब तक नहीं करेंगे जब तक आप को वास्तव में यह न पता हो कि आप क्या कर रहें हैं-यह कंटेनर के द्वारा उपलब्ध कराये गए क्लास पदानुक्रम को ओवरराइड करता है।
<%@ page import="java.util.*" %> <%-- example import --%> <%@ page contentType="text/html" %> <%-- example contentType --%> <%@ page isErrorPage="false" %> <%-- example for non error page --%>
<%@ page isThreadSafe="true" %> <%-- example for a thread safe JSP --%> <%@ page session="true" %> <%-- example for using session binding --%>
<%@ page autoFlush="true" %> <%-- example for setting autoFlush --%> <%@ page buffer="20kb" %> <%-- example for setting Buffer Size --%>
<%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %>
JSP कंटेनर कई अंतर्निहित वस्तुओं को दर्शाता है जिन्हें प्रोग्रामर द्वारा इस्तेमाल किया जा सकता है:
JspWriter
का उपयोग प्रतिक्रिया स्ट्रीम में डेटा लिखने के लिए किया जाता है।
PageContext
उदाहरण जिसमें पूरे पेज से सम्बंधित डाटा शामिल होता है।एक दिया HTML पेज एकाधिक JSPs में पारित किया जा सकता है।
HttpServletRequest
ऑब्जेक्ट जो HTTP अनुरोध की जानकारी प्रदान करता है।स्क्रिप्टिंग तत्वों के तीन मूल प्रकार होते हैं जो जावा कोड को सीधे सर्वलेट में प्रविष्ट होने की अनुमति देता है।
स्थैतिक डेटा सदस्यों को भी इसी तरह से परिभाषित किया जा सकता है। साथ ही भीतरी वर्ग भी यहां परिभाषित किये जाने चाहियें.
% <! int serverInstanceVariable = 1; %>
declaration टैग परिभाषित किये जाने वाली विधि की भी अनुमति देते हैं।
% <! / ** * एक ऑब्जेक्ट को एक स्ट्रिंग में बदल देता है या यदि * ऑब्जेक्ट नल है, यह खाली स्ट्रिंग में लौट जाता है। * / public String toStringOrBlank(Object obj){
if(obj != null){
return obj.toString();
} return ""; }
%>
_jspService()
के अन्दर होता है।<% int localStackBasedVariable = 1; out.println(localStackBasedVariable); %>
expression को एक अर्ध विराम के साथ ख़त्म नहीं किया जाना चाहिए.
<%= "expanded inline data " + 1 %>
JSP actions (JSP एकशन्स) XML टैग्स होते हैं जो बिल्ट-इन वेब सर्वर क्रियाशीलता को बढ़ावा देते हैं।
वे रनटाइम पर क्रियान्वित होते हैं। कुछ मानक और कुछ कस्टम होते हैं। (जिनका विकास जावा डेवलपर्स द्वारा किया जाता है) निम्नलिखित सूची में मानक वाले शामिल हैं:
इसके बाद नियंत्रण चालू JSP को लौट जाता है, एक बार जब अन्य JSP पूरा हो चुका होता है। इस का प्रयोग करते हुए, JSP कोड को डुप्लीकेट के बजाय, अन्य एकाधिक JSP के बीच शेयर किया जायेगा.
एक पैरामीटर को निर्दिष्ट करता है जिसे अनुरोध के चालू मानकों में जोड़ दिया जायेगा.
नियंत्रण कभी भी वर्तमान JSP को नहीं लौटेगा.
<html>
<head></head>
<body>
<jsp:include page="mycommon.jsp" >
<jsp:param name="extraparam" value="myvalue" />
</jsp:include>
name:<%=request.getParameter("extraparam")%>
</body>
</html>
<jsp:forward page="subpage.jsp" >
<jsp:param name="forwardedFrom" value="this.jsp" />
</jsp:forward>
इस अग्रेषण उदाहरण में, अनुरोध को "subpage.jsp" को अग्रेषित किया जाता है। अनुरोध हैंडलिंग इस पृष्ठ पर वापस नहीं लौटती है।
<jsp:plugin type=applet height="100%" width="100%"
archive="myjarfile.jar,myotherjar.jar"
codebase="/applets"
code="com.foo..MyApplet" >
<jsp:params>
<jsp:param name="enableDebug" value="true" />
</jsp:params>
<jsp:fallback>
आपका ब्राउज़र एप्लेट्स का समर्थन नहीं करता.
</jsp:fallback>
</jsp:plugin>
प्लगइनउदाहरण एक वेब पेज में एपलेट्स को प्रविष्ट करने का एक <html> समान तरीका बताते हैं। <OBJECT > टैग के आने से पहले, एपलेट्स को प्रविष्ट करने का कोई सामान्य तरीका नहीं था।
वर्तमान में, jsp:plugin टैग गतिशीलता की अनुमति नहीं देता है जिसे एपलेट कहते हैं। उदाहरण के लिए, jsp: params का उपयोग एक चार्टिंग एपलेट के साथ नहीं किया जा सकता है जिसे मानकों के रूप में देता बिन्दुओं को पास करने की आवश्यकता होती है, जब तक डाटा बिन्दुओं की संख्या स्थिर है।
उदाहरण के लिए आप jsp:param टैग्स के निर्माण के लिए एक ResultSet के माध्यम से लूप नहीं कर सकते हैं।
प्रत्येक jsp: param टैग हस्त कोडित होना चाहिए। हालांकि, उन में से प्रत्येक jsp: param टैग का एक गतिशील नाम और एक गतिशील मान हो सकता है।
पूर्ण परिभाषित JSP एक्शन्स के अतिरिक्त, डेवलपर्स JSP टैग एक्सटेंशन API का उपयोग करते हुए अपने खुद के कस्टम एक्शन्स को जोड़ सकते हैं। डेवलपर्स एक जावा वर्ग को लिखते हैं जो एक टैग इंटरफेस का क्रियान्वयन करती है और एक टैग लायब्ररी XML वर्णन फाइल उपलब्ध करती है जो टैग्स और जावा वर्गों को विशिष्टीकृत करती है और टैग्स का क्रियान्वयन करती है।
निम्नलिखित JSP पर विचार करें।
<%@ taglib uri="mytaglib.tld" prefix="myprefix" %>
... <myprefix:myaction> <%-- The start tag %> ... </myprefix:myaction> <%-- The end tag %> ...
JSP कम्पाइलर mytaglib.tld XML फाइल को लोड करेगा और देखेगा कि टैग 'myaction' का क्रियान्वयन 'MyActionTag' जावा वर्ग के द्वारा किया जा रहा है।
पहली बार जब टैग को फाइल में प्रयोग किया जाता है, यह 'MyActionTag' का एक उदाहरण निर्मित करता है। तब (और प्रत्येक अतिरिक्त समय जिसका टैग के द्वारा प्रयोग किया जाता है), यह विधि doStartTag को लागू करेगा (), जब इसका सामना शुरुआत करने वाले टैग से होता है। यह स्टार्ट टैग के परिणाम को देखता है और निर्धारित करता है कि टैग के निकाय की प्रक्रिया कैसे होती है।
निकाय प्रारंभिक टैग और अंतिम टैग के बीच का पाठ्य है। DoStartTag () विधि निम्न में से एक पर वापसी कर सकती हैं:
नोट: यदि टैग विस्तृत होता है तो निकाय टैग वर्ग का समर्थन करता है, doAfterBody () विधि का उपयोग तब किया जायेगा जब doEndTag की शुरुआत से पहले निकाय का प्रसंस्करण किया जाता है।
इस विधि का उपयोग लूपिंग सरंचना के क्रियान्वयन में किया जाता है।
जब यह अंतिम टैग का सामना करता है, यह doEndTag () विधि को बढ़ावा देता है।
यह विधि इन दो में से एक मान पर लौट सकती है।
इस उपर्युक्त myaction टैग में क्रियान्वयन वर्ग होगा जो कुछ निम्न के जैसा दिखाई देगा:
public class MyActionTag extends TagSupport {
// Releases all instance variables.
public void release() {…}
public MyActionTag() { … }
// Called for the start tag
public int doStartTag() { … }
// Called at the end tag
public int doEndTag(){ … }
}
निकाय टैग विवरण जोड़ें.
यदि आप निकाय के इट्रेशन की पुनरावृति करना चाहते हैं, तो जावा वर्ग (टैग हेन्डलर) इट्रेशन टैग इंटरफेस का क्रियान्वयन करता है।
यह EVAL_BODY_AGAIN पर लौट जाता है जिसका अर्थ है निकाय को फिर से लागू करना।
JavaServer Pages (जावासर्वर पेजेस) मानक टैग लाइब्रेरी (JSTL) जावा EE वेब अनुप्रयोग विकास प्लेटफोर्म का एक घटक है। यह सामान्य कार्यों के लिए JSP टैग्स के एक टैग लायब्ररी को जोड़ कर JSP विशिष्टीकरण का विस्तार करता है, जैसे XML डाटा प्रसंस्करण, सशर्त निष्पादन, लूप्स और अंतर्राष्ट्रीयकरण.
JSP में अंतर्राष्ट्रीयकरण उसी तरह से प्राप्त किया जाता है जैसे सामान्य जावा अनुप्रयोग में, ऐसा स्रोत बण्डल का उपयोग करके किया जाता है।
JSP specification (JSP विनिर्देशन) के नए संस्करण में नयी विशेषताएं शामिल हैं, जो प्रोग्रामर की उत्पाकता में सुधर लाती हैं।
नामतः
Hello, ${param.visitor} <%-- Same as: Hello, <%=request.getParameter("visitor")%> --%>
कुछ बीन्स पर विचार करें।
class Person {
String name;
// Person nests an organization bean.
Organization organization;
public String getName() { return this.name; }
public Organization getOrganization() { return this.organization; }
}
class Organization {
String name;
public String getName() { return this.name; }
}
तो, यदि एक व्यक्ति के नाम के नीचे विशेषता अनुरोध पर एक "व्यक्ति" का उदाहरण रखा जाना था।
Hello, ${person.name}, of company ${person.organization.name}
<%-- Second expression same as
<% Person p = (Person) request.getAttribute("person");
if (p != null) {
Organization o = p.getOrganization();
if (o != null) {
out.print(o.getName());
}
}
%>
--%>
Java EE 5 का ध्यान जावा भाषा एनोटेशन के उपयोग के द्वारा विकास पर केन्द्रित रहा है जिसे J2SE 5.0 के द्वारा शुरू किया गया था। JSP 2.1 इस लक्ष्य में सहायता करता है, इसके लिए वह JSP टैग संचालकों और संदर्भ श्रोताओं पर निर्भरता इंजेक्शन के लिए एनोटेशन को परिभाषित करता है।
Java EE 5 विनिर्देशन का एक अन्य प्रमुख सन्दर्भ है इसकी वेब टायर तकनीकों का संरेखन, नामतः JavaServer Pages (जावासर्वर पेजेस) (JSP), JavaServer Faces (जावा सर्वर फेसेज) (JSF) और JavaServer Pages Standard Tag Library (जावा सर्वर पेजेस स्टेनडर्ड टैग लाइब्रेरी) (JSTL)।
इस संरेखण प्रयास के परिणाम एकीकृत अभिव्यक्ति भाषा (EL) हैं, जो JSP 2.0 और JSF 1.1 द्वारा परिभाषित अभिव्यक्ति भाषाओं को एकीकृत करता है।
एकीकृत EL के लिए मुख्य कुंजी जोड़ जो कि संरेखण के काम से बाहर आया, वह है:
जावा वस्तुओं में चर संदर्भ को हल करने और इन जावा वस्तुओं पर लागू संपत्तियों को हल करने के लिए के लिए एक pluggable API,
आस्थगित अभिव्यक्ति के लिए सहायता, जिसका मूल्यांकन एक टैग हेन्डलर के द्वारा आवश्यकता पड़ने पर किया जाता है, इसके विरीत उनके अभिव्यक्ति समकक्ष, जिनका मूल्यांकन तुंरत किया जाता है जब एक पेज का क्रियान्वयन किया जाता है।
lvalue अभिव्यक्ति के लिए सहयोग, जो असाइन्मेंट आपरेशन के बाईं ओर दिखाई देता है। जब इसे एक lvalue, के रूप में प्रयुक्त किया जाता है, एक EL अभिव्यक्ति एक डाटा सरंचना के लिए एक सन्दर्भ का प्रतिनिधित्व करती है, उदाहरण के लिए: एक जावा बीन प्रोपर्टी, जो किसी यूजर इनपुट को सौंपी जाती है।
नई एकीकृत EL को इसके अपने विनिर्देशन दस्तावेज में परिभाषित किया जाता है, जिसे JSP 2.1 विनिर्देश के साथ डिलीवर किया जाता है।
एकीकृत EL, JSTL टैग, जैसे JSTL इट्रेशन टैग्स का धन्यवाद, जिनका उपयोग अब JSF अवयवों के साथ एक सहज तरीके से किया जा सकता है।
JSP 2.1 leverages the Servlet 2.5 विनिर्देश इसके वेब सिमेन्टिक्स के लिए।
विकिपुस्तक पर Java Programming/JSP से सम्बन्धित एक किताब है। |