JSP Implicit Objects
Introduction to JSP Implicit Objects
Implicit objects JSP engine द्वारा translation phase में create किये जाते है। इन objects को आपको explicitly create करने की आवश्यकता नहीं होती है। ये objects पहले से created होते है आप इन्हें directly यूज़ करते है। इसीलिए इन्हें implicit objects कहा जाता है।
Translation phase में जब एक JSP page servlet में convert किया जाता है तो साथ ही ये objects भी generate किये जाते है। ये objects आपके लिए हर JSP page में available रहते है। आप इन्हें scriptlet tags (<% … %>) में यूज़ कर सकते है।
JSP आपको 9 implicit objects provide करती है।
- out
- request
- response
- session
- application
- config
- page
- pageContext
- exception
आइये इन objects के बारे में detail से जानने का प्रयास करते है।
out
Out JspWriter class का object होता है। JspWriter class java की PrintWriter class का buffered version होती है। इसे JSP में information display करने के लिए create किया गया है। जैसा की आपको पता है की JSP में response client तक पहुँचने से पहले एक buffer में जाता है और उसके बाद client को deliver किया जाता है।
Out implicit object के द्वारा आप page पर कुछ print करने के लिए सबसे पहले buffer को data send करते है, बाद में यह client को display होता है। इस object के साथ आपको println() method available रहता है। इस method में आप वह string pass करते है जो आप client को display करना चाहते है।
आप अब तक इस object को कई बार यूज़ कर चुके है। आइये अब इसे एक उदाहरण के माध्यम से समझने का प्रयास करते है।
<% out.println("Hello World") %>
ऊपर दिए उदाहरण में out object पर println() method को call किया गया है और Hello World string print की गयी है।
request
जब भी कोई client किसी JSP page के लिए request करता है तो उस request को uniquely दर्शाने के लिए JSP engine द्वारा request object generate किया जाता है। ये HttpServletRequest class का object होता है।
इस object के माध्यम से आप किसी दूसरे JSP page से current JSP page में information access कर सकते है। इसके द्वारा आप client request की information प्राप्त करते है। जैसे की parameters, server information, header information आदि।
उदाहरण के लिए मान लीजिये आपके JSP page में एक form है जिसमे client अपना name fill करता है। Submit करने पर दूसरे JSP page को request भेजी जाती है। यदि आप चाहते है की इस name को आप दूसरे JSP page में प्राप्त कर ले तो इसके लिए आप request object यूज़ करते है।
इस object के साथ सबसे ज्यादा यूज़ किये जाने वाला मेथड getParameters() है। इस method में आप form field का नाम pass करते है execute होने पर उस form field की values current JSP page में access की जा सकती है।
आइये अब इसे एक उदाहरण से समझने का प्रयास करते है।
<html>
<head>
<title>User Welcome </title>
</head>
<body>
<form action="other.jsp">
<input type="text" name="name">
<input type="submit" value="Submit">
</form>
</body>
</html>
जब ऊपर दिए गए form को submit किया जायेगा तो निचे दिया गया other.jsp page execute होगा।
<html>
<head>
<title>Request_Object_Demo</title>
</head>
<body>
<%
String name = request.getParameters("name");
out.println("Hello"+name);
%>
</body>
</html>
ऊपर दिए गए JSP page में request object और getParameters method द्वारा User Welcome page में submit किये गए नाम को access किया जा रहा है और Hello string के साथ print किया जा रहा है।
response
जब JSP द्वारा एक request object generate किया जाता है तो साथ ही response object भी generate किया जाता है। ये दोनों object ही translation के बाद generate की गयी servlet class के jspService() method में argument के रूप में पास किये जाता है।
Response HttpServletResponse class का object होता है। ये class client को response send करने के लिए functionality provide करती है। Response के रूप में आप cookies भी set कर सकते है या फिर page को किसी और URL पर redirect भी कर सकते है।
इस object से आप sendRedirect() method call कर सकते है। इस method में argument के रूप में आप किसी और page का URL देते है। Execute होने पर यह दिए गए URL पर redirect हो जाता है। ये method HttpServletResponse class के साथ भी available है।
निचे इस object का उदाहरण दिया जा रहा है। सबसे पहले एक simple HTML page create किया गया है जो की form submit होने पर एक दूसरे JSP page को execute करता है। Execute होने पर JSP page response के रूप में किसी दूसरे URL पर redirect करता है।
HTML page:
<html>
<head>
<title>Hello <title>
</head>
<body>
<form action="reponseDemo.jsp">
<input type="text" name="name">
<input type="submit" value="Submit">
</form>
</body>
</html>
JSP page
<html>
<head>
<title>Respose Implicit Object Demo</title>
</head>
<body>
<% response.sendRedirect("http://www.besthinditutorials.com") %>
</body>
</html>
session
जब भी आप किसी JSP page के लिए request करते है तो JSP engine automatically एक session create करता है। हालाँकि जैसा की आपको Directive Elements की tutorial में बताया गया आप session directive के माध्यम से इस default process को disable भी कर सकते है।
ये एक HttpSession का object होता है। इस object के माध्यम से आप session attributes set कर सकते है और किसी user को कई pages visit करने के बाद भी identify कर सकते है और information के pass कर सकते है।
इस object के साथ आपको setAttribute() और getAttribute methods available रहते है जिनसे आप different page के through pass की जाने वाली user की information जैसे की उसका नाम और Id आदि set करते है।
आइये इसे एक उदाहरण के माध्यम से समझने का प्रयास करते है।
SessonDemo1.jsp:
<html>
<head>
<title>Sesson Demo </title>
</head>
<body>
<%
String Name="Best Hindi Tutorials";
session.setAttribute("User",Name);
<a href="SessonDemo2.jsp">Go to another page </a>
%>
</body>
</html>
SessionDemo2.jsp:
<html>
<head>
<title>Sesson_Demo_Page </title>
</head>
<body>
<%
String Name = (String) sesson.getAttribute("User");
out.println("Welcome Back "+Name);
%>
</body>
</html>
application
ये object उस web application को represent करता है जिससे JSP page belong करता है। ये HttpContext class का object है। ये context information (web application के बारे में) प्राप्त करने के लिए यूज़ किया जाता है। इस object के द्वारा आप errors और warning messages display कर सकते है। साथ ही इस object के द्वारा आप web application के initialization parameters को access कर सकते है।
उदाहरण के लिए इस object के द्वारा error message इस प्रकार show कर सकते है।
<% application.log("An Error Occurred!"); %>
config
ये implicit object ServletConfig class का instance होता है। इसे web.xml file से init parameters access करने के लिए यूज़ जाता है। इसका उदाहरण निचे दिया जा रहा है।
web.xml file:
<web-app>
....
....
<init-param>
<param-name>Name</param-name>
<param-value>YrName</param-value>
</init-param>
....
....
</web-app>
JSP page:
<%
String Name = config.getInitParameter("Name");
out.println("Name is :"+Name);
%>
page
ये object पुरे JSP page को represent करता है। ये Object class का implicit object होता है। JSP में ये object java के this object की तरह काम करता है। इस object को बहुत कम यूज़ किया जाता है।
pageContext
ये object दूसरे implicit objects को access करने के लिए methods provide करता है। ये PageContext class का object होता है। एक pageContext object JSP page के साथ associated सभी namespaces का access provide करता है। ये object आपको कई page attributes का भी access provide करता है। सभी implicit objects इस object के द्वारा control किये जा सकते है। pageContext object के माध्यम से आप 4 implicit objects (page, request, session, application) के attribute set कर सकते है, get भी कर सकते है और remove भी कर सकते है।
इस object के साथ आप निचे दिए गए 3 methods यूज़ कर सकते है।
- setAttribute()
- getAttribute()
- removeAttribute()
exception
यदि आपके JSP page में कोई error आती है तो आप उसे exception implicit object के द्वारा print कर सकते है। ये Throwable class का object होता है। इस object के साथ आपको 2 methods available रहते है। इस object के साथ work करने के लिए आप page directive के द्वारा page का इस isError attribute true set करते है।
- getMessage() - इस method के द्वारा आप error message print करते है।
- printStackTrace() - इस method के द्वारा exception का पूरा path print किया जाता है।
इसका उदाहरण निचे दिया जा रहा है।
<%@ page isErrorPage="true" %>
<% exception.getMessage() %>