Unit 1 JSP
Unit 1 JSP
A JSP page consists of HTML tags and JSP tags. The JSP pages are easier to
maintain than Servlet because we can separate designing and development.
It provides some additional features such as Expression Language, Custom
Tags, etc.
1) Extension to Servlet
JSP technology is the extension to Servlet technology. We can use all the
features of the Servlet in JSP. In addition to, we can use implicit objects,
predefined tags, expression language and Custom tags in JSP, that makes
JSP development easy.Difference between JDK, JRE, and JVM
2) Easy to maintain
JSP can be easily managed because we can easily separate our business
logic with presentation logic.
In JSP, we can use many tags such as action tags, JSTL, custom tags, etc.
that reduces the code. Moreover, we can use EL, implicit objects, etc.
The Lifecycle of a JSP Page
The JSP pages follow these phases:
Note: jspInit(), _jspService() and jspDestroy() are the life cycle methods of
JSP.
As depicted in the above diagram, JSP page is translated into Servlet by the
help of JSP translator.
The JSP translator is a part of the web server which is responsible for
translating the JSP page into Servlet.
After that, Servlet page is compiled by the compiler and gets converted into
the class file.
Moreover, all the processes that happen in Servlet are performed on JSP
later like initialization, committing response to the browser and destroy.
index.jsp
Let's see the simple example of JSP where we are using the scriptlet tag to
put Java code in the JSP page. We will learn scriptlet tag later.
1. <html>
2. <body>
3. <% out.print(2*5); %>
4. </body>
5. </html>
o scriptlet tag
o expression tag
o declaration tag
<% java source code %>
1. <html>
2. <body>
3. <% out.print("welcome to jsp"); %>
4. </body>
5. </html>
Example of JSP scriptlet tag that prints the user
name
In this example, we have created two files index.html and welcome.jsp. The
index.html file gets the username from the user and the welcome.jsp file
prints the username with the welcome message.
File: index.html
1. <html>
2. <body>
3. <form action="welcome.jsp">
4. <input type="text" name="uname">
5. <input type="submit" value="go"><br/>
6. </form>
7. </body>
8. </html>
File: welcome.jsp
1. <html>
2. <body>
3. <%
4. String name=request.getParameter("uname");
5. out.print("welcome "+name);
6. %>
7. </form>
8. </body>
9. </html>
JSP expression tag
The code placed within JSP expression tag is written to the output stream
of the response. So you need not write out.print() to write data. It is mainly
used to print the values of variable or method.
1. <html>
2. <body>
3. <%= "welcome to jsp" %>
4. </body>
5. </html>
Note: Do not end your statement with semicolon in case of expression tag.
index.jsp
1. <html>
2. <body>
3. Current Time: <%= java.util.Calendar.getInstance().getTime() %>
4. </body> </html>
Example of JSP expression tag that prints the user
name
In this example, we are printing the username using the expression tag. The
index.html file gets the username and sends the request to the welcome.jsp
file, which displays the username.
File: index.jsp
1. <html>
2. <body>
3. <form action="welcome.jsp">
4. <input type="text" name="uname"><br/>
5. <input type="submit" value="go">
6. </form>
7. </body>
8. </html>
File: welcome.jsp
1. <html>
2. <body>
3. <%= "Welcome "+request.getParameter("uname") %>
4. </body>
5. </html>
The code written inside the jsp declaration tag is placed outside the
service() method of auto generated servlet. So it doesn't get memory at
each request.
Syntax of JSP declaration tag
<%! field or method declaration %>
The jsp scriptlet tag can only declare The jsp declaration tag can declare
variables not methods. variables as well as methods.
index.jsp
1. <html>
2. <body>
3. <%! int data=50; %>
4. <%= "Value of the variable is:"+data %>
5. </body>
6. </html>
Example of JSP declaration tag that declares method
In this example of JSP declaration tag, we are defining the method which
returns the cube of given number and calling this method from the jsp
expression tag. But we can also use jsp scriptlet tag to call the declared
method.
index.jsp
1. <html>
2. <body>
3. <%!
4. int cube(int n){
5. return n*n*n*;
6. }
7. %>
8. <%= "Cube of 3 is:"+cube(3) %>
9. </body>
10.</html>
There are 9 jsp implicit objects. These objects are created by the web
container that are available to all the jsp pages.
The available implicit objects are out, request, config, session, application
etc.
A list of the 9 implicit objects is given below:
Object Type
out JspWriter
request HttpServletRequest
response HttpServletResponse
config ServletConfig
application ServletContext
session HttpSession
pageContext PageContext
page Object
exception Throwable
For writing any data to the buffer, JSP provides an implicit object named
out. It is the object of JspWriter. In case of servlet you need to write:
PrintWriter out=response.getWriter();
index.jsp
1. <html>
2. <body>
3. <% out.print("Today is:"+java.util.Calendar.getInstance().getTime()); %>
4. </body>
5. </html>
Output
It can also be used to set, get and remove attributes from the jsp request
scope.
Let's see the simple example of request implicit object where we are
printing the name of the user with welcome message.
1. <form action="welcome.jsp">
2. <input type="text" name="uname">
3. <input type="submit" value="go"><br/>
4. </form>
welcome.jsp
1. <%
2. String name=request.getParameter("uname");
3. out.print("welcome "+name);
4. %>
Output
Arun Chauhan
Welcome Arun Chauhan
Let's see the example of response implicit object where we are redirecting
the response to the Google.
1. <form action="welcome.jsp">
2. <input type="text" name="uname">
3. <input type="submit" value="go"><br/>
4. </form>
welcome.jsp
1. <%
2. response.sendRedirect("http://www.google.com");
3. %>
Output
1. <form action="welcome">
2. <input type="text" name="uname">
3. <input type="submit" value="go"><br/>
4. </form>
web.xml file
1. <web-app>
2.
3. <servlet>
4. <servlet-name>sonoojaiswal</servlet-name>
5. <jsp-file>/welcome.jsp</jsp-file>
6.
7. <init-param>
8. <param-name>dname</param-name>
9. <param-value>sun.jdbc.odbc.JdbcOdbcDriver</param-value>
10.</init-param>
11.
12.</servlet>
13.
14.<servlet-mapping>
15.<servlet-name>sonoojaiswal</servlet-name>
16.<url-pattern>/welcome</url-pattern>
17.</servlet-mapping>
18.
19.</web-app>
welcome.jsp
1. <%
2. out.print("Welcome "+request.getParameter("uname"));
3.
4. String driver=config.getInitParameter("dname");
5. out.print("driver name is="+driver); Arun Chauhan
6. Welcome Arun Chauhan
7. Driver name is = sunjdbc.odbc,Jdbc.OdbcDriver
8. %>
Output
Arun Chauhan
Welcome Arun Chauhan
Driver name is = sunjdbc.odbc,Jdbc.OdbcDriver
1. <form action="welcome">
2. <input type="text" name="uname">
3. <input type="submit" value="go"><br/>
4. </form>
web.xml file
1. <web-app>
2.
3. <servlet>
4. <servlet-name>sonoojaiswal</servlet-name>
5. <jsp-file>/welcome.jsp</jsp-file>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>sonoojaiswal</servlet-name>
10.<url-pattern>/welcome</url-pattern>
11.</servlet-mapping>
12.
13.<context-param>
14.<param-name>dname</param-name>
15.<param-value>sun.jdbc.odbc.JdbcOdbcDriver</param-value>
16.</context-param>
17.
18.</web-app>
welcome.jsp
1. <%
2.
3. out.print("Welcome "+request.getParameter("uname"));
4.
5. String driver=application.getInitParameter("dname");
6. out.print("driver name is="+driver);
7.
8. %>
Output
Arun Chauhan
Welcome Arun Chauhan
Driver name is = sunjdbc.odbc,Jdbc.OdbcDriver
In JSP, session is an implicit object of type HttpSession.The Java developer can use th
remove attribute or to get session information.
1. <html>
2. <body>
3. <form action="welcome.jsp">
4. <input type="text" name="uname">
5. <input type="submit" value="go"><br/>
6. </form>
7. </body>
8. </html>
welcome.jsp
1. <html>
2. <body>
3. <%
4.
5. String name=request.getParameter("uname");
6. out.print("Welcome "+name);
7.
8. session.setAttribute("user",name);
9.
10.<a href="second.jsp">second jsp page</a>
11.
12.%>
13.</body>
14.</html>
second.jsp
1. <html>
2. <body>
3. <%
4.
5. String name=(String)session.getAttribute("user");
6. out.print("Hello "+name);
7.
8. %>
9. </body>
10.</html> Ravi Mallick
11.Welcome Ravi Mallick
12.Second jsp page
Output
Ravi Mallick
Welcome Ravi Mallick
second jsp page
Hello Ravi Mallick
7) pageContext implicit object
In JSP, pageContext is an implicit object of type PageContext class.The pageContext
set,get or remove attribute from one of the following scopes:
o page
o request
o session
o application
1. <html>
2. <body>
3. <form action="welcome.jsp">
4. <input type="text" name="uname">
5. <input type="submit" value="go"><br/>
6. </form>
7. </body>
8. </html>
welcome.jsp
1. <html>
2. <body>
3. <%
4.
5. String name=request.getParameter("uname");
6. out.print("Welcome "+name);
7.
8. pageContext.setAttribute("user",name,PageContext.SESSION_SCOPE);
9.
10.<a href="second.jsp">second jsp page</a>
11.
12.%>
13.</body>
14.</html>
second.jsp
1. <html>
2. <body>
3. <%
4.
5. String name=(String)pageContext.getAttribute("user",PageContext.SESSION
_SCOPE);
6. out.print("Hello "+name);
7.
8. %>
9. </body>
10.</html>
Output
Ravi Mallick
Welcome Ravi Mallick
second jsp page
Hello Ravi Mallick
Object page=this;
Since, it is of type Object it is less used because you can use this object directly in jsp.For
1. <%@ page isErrorPage="true" %>
2. <html>
3. <body>
4.
5. Sorry following exception occured:<%= exception %>
6.
7. </body>
8. </html>