Introduction to Scriptlets: in JSP
Introduction to Scriptlets: <% Java Code %> in JSP
Scriptlets क्या होते हैं?
जब हम JSP (Java Server Pages) का use करते हैं, तो उसमें Java code को HTML में embed करने की सुविधा होती है। इस embedded Java code को Scriptlet कहा जाता है। Scriptlet को JSP page में <% ... %> टैग के अंदर लिखा जाता है।
सीधे शब्दों में कहें तो Scriptlets JSP का वो हिस्सा है जहाँ हम सीधे Java logic लिख सकते हैं जो server-side पर execute होता है। इससे हमें HTML page के अंदर dynamic content generate करने में आसानी होती है।
Scriptlet का Syntax
Scriptlet का basic syntax इस प्रकार होता है:
<%
// यहाँ Java code लिखा जाता है
int a = 10;
int b = 20;
int sum = a + b;
out.println("Sum: " + sum);
%>
ऊपर दिए गए example में, Java code server पर run होगा और उसका output browser में HTML के रूप में दिखेगा।
Scriptlet कैसे काम करता है?
जब JSP page client द्वारा request किया जाता है, तो server उस JSP को एक servlet में convert करता है। इस conversion के दौरान:
- HTML content को
out.println()statements में बदला जाता है। - Scriptlet code को servlet के
_jspService()method के अंदर रखा जाता है। - Server उस compiled servlet को run करता है और generated output को browser को भेज देता है।
इस तरह, JSP में लिखा Java code backend पर run होकर final HTML output बनाता है।
Example: JSP Scriptlet का Simple Example
<html>
<body>
<h2>Scriptlet Example</h2>
<%
int x = 5;
int y = 10;
int z = x + y;
out.println("Result: " + z);
%>
</body>
</html>
Output होगा:
Result: 15
Scriptlets के फायदे
- Dynamic content generate करने में आसान।
- HTML और Java को एक ही file में लिखने की सुविधा।
- Small scale JSP projects के लिए जल्दी development।
- JSP page को test करना आसान होता है क्योंकि logic और design एक साथ हैं।
Scriptlets की सीमाएँ
- Large projects में code maintenance मुश्किल हो जाता है।
- Business logic और presentation logic mix हो जाता है।
- Code readability घट जाती है।
- Modern JSP frameworks (जैसे JSTL, EL) में Scriptlets को discourage किया जाता है।
Scriptlet vs Declaration vs Expression
JSP में तीन मुख्य प्रकार के Java code blocks होते हैं — Scriptlet, Declaration और Expression। आइए उनके बीच का अंतर एक table में समझते हैं।
| Feature | Scriptlet (<% ... %>) | Declaration (<%! ... %>) | Expression (<%= ... %>) |
|---|---|---|---|
| Purpose | Code execute करना | Variables या methods define करना | Output को directly print करना |
| Execution Place | _jspService() method के अंदर | Class level पर | _jspService() में, output के साथ |
| Example | <% int x=5; %> | <%! int count=0; %> | <%= "Hello" %> |
Scriptlet कब Use करें?
Scriptlets को generally तब use किया जाता है जब आपको JSP page में directly Java logic डालना हो। उदाहरण के लिए:
- Loop या condition apply करनी हो।
- Database से data fetch करके HTML में दिखाना हो।
- Request या Session object से values निकालनी हों।
Example: Conditional Scriptlet
<%
String user = request.getParameter("username");
if(user != null) {
out.println("Welcome " + user);
} else {
out.println("Guest User");
}
%>
Scriptlets में Implicit Objects का उपयोग
JSP में कुछ pre-defined objects होते हैं जिन्हें Implicit Objects कहा जाता है। इन्हें बिना declare किए use किया जा सकता है। ये objects Scriptlet में बहुत काम आते हैं।
| Object Name | Type | Description |
|---|---|---|
| request | HttpServletRequest | Client request data को hold करता है। |
| response | HttpServletResponse | Server से भेजे गए response को handle करता है। |
| session | HttpSession | User session को manage करता है। |
| out | JspWriter | Output stream में data लिखने के लिए। |
| application | ServletContext | पूरे application के लिए common data रखता है। |
Example: Implicit Object का Use
<%
String ip = request.getRemoteAddr();
out.println("Your IP is: " + ip);
%>
Scriptlets के Best Practices
- Logic और presentation को अलग रखने की कोशिश करें।
- Scriptlets में केवल simple logic रखें।
- Complex operations के लिए JavaBeans या JSTL का use करें।
- Consistent indentation और commenting करें।
- Scriptlets को minimum use करें, क्योंकि maintainability कम हो जाती है।
Scriptlets के Modern Alternatives
आजकल JSP में Scriptlets की जगह Expression Language (EL) और JSTL (JSP Standard Tag Library) का use किया जाता है। ये approach cleaner, readable और maintainable है।
उदाहरण के लिए:
<c:if test="${user != null}">
Welcome ${user}
</c:if>
यह code वही काम करेगा जो Scriptlet करता है, लेकिन ज्यादा readable और maintainable तरीके से।
Real-Life Example of Scriptlet Use
मान लीजिए कि आपको user की login status check करनी है और उसी के अनुसार message दिखाना है।
<%
Boolean loggedIn = (Boolean) session.getAttribute("isLoggedIn");
if(loggedIn != null && loggedIn) {
out.println("Welcome back!");
} else {
out.println("Please log in to continue.");
}
%>
Exam Specific Important Points
- Scriptlet को
<% ... %>में लिखा जाता है। - Scriptlet का code
_jspService()method के अंदर जाता है। - Scriptlets Java code को server-side पर execute करते हैं।
- Modern JSP में Scriptlets को discourage किया गया है।
- Better alternative — JSTL और Expression Language।
Quick Notes for Students
- Primary purpose: JSP में dynamic content generate करना।
- Tag format:
<% Java code %> - Output दिखाने के लिए
out.println()का use करें। - Implicit objects को direct access किया जा सकता है।
- Complex logic JSP से बाहर Java classes में रखना चाहिए।
Summary (For Revision)
Scriptlet JSP का वो हिस्सा है जहाँ हम Java logic लिखकर web pages को dynamic बना सकते हैं। यह server पर execute होकर final HTML output देता है। हालांकि, modern development में Scriptlets को replace कर दिया गया है लेकिन academic exams में इसका concept बहुत जरूरी है।
अगर आप college exam की तैयारी कर रहे हैं तो याद रखें — Scriptlets JSP का सबसे basic लेकिन fundamental हिस्सा हैं जो आपको JSP और Servlets की working समझने में मदद करते हैं।