You are on page 1of 24

UNIT-IV

Java Server pages


JSP technology is used to create web application just like Servlet technology. It can be thought of as
an extension to servlet because it provides more functionality than servlet such as expression language,
jstl etc.
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 Tag etc.
Advantage of JSP over Servlet
There are many advantages of JSP over servlet. They are as follows:
1) Extension to Servlet
JSP technology is the extension to servlet technology. We can use all the features of 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.
2) Easy to maintain
JSP can be easily managed because we can easily separate our business logic with presentation logic.
In servlet technology, we mix our business logic with the presentation logic.
3) Fast Development: No need to recompile and redeploy
If JSP page is modified, we don't need to recompile and redeploy the project. The servlet code needs to
be updated and recompiled if we have to change the look and feel of the application.
4) Less code than Servlet
In JSP, we can use a lot of tags such as action tags, jstl, custom tags etc. that reduces the code.
Moreover, we can use EL, implicit objects etc.

Life cycle of a JSP Page


The JSP pages follows these phases:
Translation of JSP Page

Compilation of JSP Page

Classloading (class file is loaded by the classloader)

Instantiation (Object of the Generated Servlet is created).

Initialization ( jspInit() method is invoked by the container).

Reqeust processing ( _jspService() method is invoked by the container).

Destroy ( jspDestroy() method is invoked by the container).


ANATOMY OF JSP PAGE:
JSP page is a simple web page which contains the JSP elements and template text.

The template text can be scripting code such as Html, Xml or a simple plain text.

Various Jsp elements can be action tags, custom tags, JSTL library elements. These JSP elements
are responsible for generating dynamic contents.

Anatomy of JSP
When JSP request gets processed template text and JSP elements are merged together and sent to the
browser as response.
JSP Processing:
JSP pages can be processed using JSP Container only. Following are the steps that need to be followed
while processing the request for JSP page:
Client makes a request for required JSP page to server. The server must have JSP container so that
JSP request can be processed. For instance: let the client makes request for hello.jsp page.

On receiving this request the JSP container searches and then reads the desired JSP page. Then this
JSP page is converted to corresponding servlet.

Basically any JSP page is a combination of template text and JSP elements.

Every template text is converted to corresponding println statement.


Every JSP element is converted into corresponding Java code.

This phase is called Translation phase, output of it is a servlet.for instance:hello.jsp is converted to


hello_jsp.java
This servlet is compiled to generate servlet class file. Using this class response is generated. This
phase is called request processing phase.

The Jsp container thus executes servlet class file.

A requested page is then returned to client as response.

JSP Declarations TAG

The JSP declaration tag is used to declare fields and methods.

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

The syntax of the declaration tag is as follows:


<%! field or method declaration %>

Difference between JSP Scriptlet tag and Declaration tag

Jsp Scriptlet Tag Jsp Declaration Tag

The jsp scriptlet tag can only declare variables The jsp declaration tag can declare variables as well
not methods. as methods.

The declaration of scriptlet tag is placed inside The declaration of jsp declaration tag is placed
the _jspService() method. outside the _jspService() method.

Example of JSP declaration tag that declares field

In this example of JSP declaration tag, we are declaring the field and printing the value of the declared
field using the jsp expression tag.

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>
JSP directives

The jsp directives are messages that tells the web container how to translate a JSP page into the
corresponding servlet.

There are three types of directives:

o page directive
o include directive
o taglib directive

Syntax of JSP Directive

<%@ directive attribute="value" %>

A. JSP page directive

The page directive defines attributes that apply to an entire JSP page.

Syntax of JSP page directive

<%@ page attribute="value" %>

Attributes of JSP page directive

o import
o contentType
o extends
o info
o buffer
o language
o isELIgnored
o isThreadSafe
o autoFlush
o session
o pageEncoding
o errorPage
o isErrorPage

1)import

The import attribute is used to import class,interface or all the members of a package.It is similar to import
keyword in java class or interface.

Example of import attribute

1. <html>
2. <body>
3.
4. <%@ page import="java.util.Date" %>
5. Today is: <%= new Date() %>
6.
7. </body>
8. </html>

2)contentType

The contentType attribute defines the MIME(Multipurpose Internet Mail Extension) type of the HTTP
response.The default value is "text/html;charset=ISO-8859-1".

Example of contentType attribute

1. <html>
2. <body>
3.
4. <%@ page contentType=application/msword %>
5. Today is: <%= new java.util.Date() %>
6.
7. </body>
8. </html>

3)extends

The extends attribute defines the parent class that will be inherited by the generated servlet.It is rarely
used.

1. <html>
2. <body>
3.
4. <%@ include page extends=”Demo.jsp” %>
5.
6. </body>
7. </html>

4)info

This attribute simply sets the information of the JSP page which is retrieved later by using
getServletInfo() method of Servlet interface.

Example of info attribute

8. <html>
9. <body>
10.
11. <%@ page info="composed by Sonoo Jaiswal" %>
12. Today is: <%= new java.util.Date() %>
13.
14. </body>
15. </html>

The web container will create a method getServletInfo() in the resulting servlet.For example:

1. public String getServletInfo() {


2. return "composed by Sonoo Jaiswal";
3. }

5)buffer

The buffer attribute sets the buffer size in kilobytes to handle output generated by the JSP page.The
default size of the buffer is 8Kb.

Example of buffer attribute

1. <html>
2. <body>
3.
4. <%@ page buffer="16kb" %>
5. Today is: <%= new java.util.Date() %>
6.
7. </body>
8. </html>

6)language

The language attribute specifies the scripting language used in the JSP page. The default value is
"java".

7)isELIgnored

We can ignore the Expression Language (EL) in jsp by the isELIgnored attribute. By default its value is
false i.e. Expression Language is enabled by default. We see Expression Language later.
1. <%@ page isELIgnored="true" %>//Now EL will be ignored

8)isThreadSafe

Servlet and JSP both are multithreaded.If you want to control this behaviour of JSP page, you can use
isThreadSafe attribute of page directive.The value of isThreadSafe value is true.If you make it false, the
web container will serialize the multiple requests, i.e. it will wait until the JSP finishes responding to a
request before passing another request to it. If you make the value of isThreadSafe attribute like:

<%@ page isThreadSafe="false" %>

The web container in such a case, will generate the servlet as:

1. public class SimplePage_jsp extends HttpJspBase


2. implements SingleThreadModel{
3. .......
4. }

9)errorPage

The errorPage attribute is used to define the error page, if exception occurs in the current page, it will
be redirected to the error page.

Example of errorPage attribute

1. //index.jsp
2. <html>
3. <body>
4.
5. <%@ page errorPage="myerrorpage.jsp" %>
6.
7. <%= 100/0 %>
8.
9. </body>
10. </html>

10)isErrorPage

The isErrorPage attribute is used to declare that the current page is the error page.

Note: The exception object can only be used in the error page.

Example of isErrorPage attribute

//myerrorpage.jsp
<html>
<body>

<%@ page isErrorPage="true" %>

Sorry an exception occured!<br/>


The exception is: <%= exception %>

</body>
</html>

B. Jsp Include Directive

The include directive is used to include the contents of any resource it may be jsp file, html file or text
file. The include directive includes the original content of the included resource at page translation
time (the jsp page is translated only once so it will be better to include static resource).

Advantage of Include directive

Code Reusability

Syntax of include directive

<%@ include file="resourceName" %>

Example of include directive

In this example, we are including the content of the header.html file. To run this example you must
create an header.html file.

<html>
<body>

<%@ include file="header.html" %>

Today is: <%= java.util.Calendar.getInstance().getTime() %>

</body>
</html>

C. JSP Taglib directive

The JSP taglib directive is used to define a tag library that defines many tags. We use the TLD (Tag
Library Descriptor) file to define the tags.

Syntax JSP Taglib directive

1. <%@ taglib uri="uriofthetaglibrary" prefix="prefixoftaglibrary" %>

Example of JSP Taglib directive

In this example, we are using our tag named currentDate. To use this tag we must specify the taglib
directive so the container may get information about the tag.

1. <html>
2. <body>
3.
4. <%@ taglib uri="http://www.javatpoint.com/tags" prefix="mytag" %>
5.
6. <mytag:currentDate/>
7.
8. </body>
9. </html>
Expressions

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.

Syntax of JSP expression tag

1. <%= statement %>

Example of JSP expression tag

In this example of jsp expression tag, we are simply displaying a welcome message.

1. <html>
2. <body>
3. <%= "welcome to jsp" %>
4. </body>
5. </html>

Example of JSP expression tag that prints current time

To display the current time, we have used the getTime() method of Calendar class. The getTime() is an
instance method of Calendar class, so we have called it after getting the instance of Calendar class by
the getInstance() method.

index.jsp

1. <html>
2. <body>
3. Current Time: <%= java.util.Calendar.getInstance().getTime() %>
4. </body>
5. </html>

implicit objects

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:

1.Out implicit object


For writing any data to the buffer,JSP provides an implicit object i.e.out.
In case of servlet you need to write the following
PrintWriter out=response.getwriter()

But in jsp ,you don’t need to write the above.


e.g
<html>
<body>
<% out.println(3+5); %>
</body>
</html>

2. JSP request implicit object

The JSP request is an implicit object of type HttpServletRequest i.e. created for each jsp request by
the web container. It can be used to get request information such as parameter, header information,
remote address, server name, server port, content type, character encoding etc.
3) JSP response implicit object

In JSP, response is an implicit object of type HttpServletResponse. The instance of


HttpServletResponse is created by the web container for each jsp request.

It can be used to add or manipulate response such as redirect response to another resource, send error
etc.
4) JSP config implicit object

In JSP, config is an implicit object of type ServletConfig. This object can be used to get initialization
parameter for a particular JSP page. The config object is created by the web container for each jsp
page.

5) JSP application implicit object

In JSP, application is an implicit object of type ServletContext.

The instance of ServletContext is created only once by the web container when application or project
is deployed on the server.

This object can be used to get initialization parameter from configuaration file (web.xml). It can also
be used to get, set or remove attribute from the application scope.

6) session implicit object


In JSP, session is an implicit object of type HttpSession.The Java developer can use this object to set,get or
remove attribute or to get session information.
7) pageContext implicit object
In JSP, pageContext is an implicit object of type PageContext class. The pageContext object can be used to
set, get or remove attribute from one of the following scopes:

o page
o request
o session
o application

In JSP, page scope is the default scope.

8) page implicit object:


In JSP, page is an implicit object of type Object class. This object is assigned to the reference of auto
generated servlet class. It is written as:

Object page=this;

For using this object it must be cast to Servlet type.For example:

<% (HttpServlet)page.log("message"); %>

Since, it is of type Object it is less used because you can use this object directly in jsp.For example:

<% this.log("message"); %>

9) exception implicit object


In JSP, exception is an implicit object of type java.lang.Throwable class. This object can be used to print the
exception. But it can only be used in error pages.It is better to learn it after page directive. Let's see a simple
example:

Example of exception implicit object:

error.jsp

<%@ page isErrorPage="true" %>


<html>
<body>

Sorry following exception occured:<%= exception %>

</body>
</html>

Beans in JSP Pages

A JavaBean is a specially constructed Java class written in the Java and coded according to the
JavaBeans API specifications.
Following are the unique characteristics that distinguish a JavaBean from other Java classes −
 It provides a default, no-argument constructor.
 It should be serializable and that which can implement the Serializable interface.
 It may have a number of properties which can be read or written.
 It may have a number of "getter" and "setter" methods for the properties.

jsp:useBean action tag

The jsp:useBean action tag is used to locate or instantiate a bean class. If bean object of the Bean class
is already created, it doesn't create the bean depending on the scope. But if object of bean is not
created, it instantiates the bean.

Syntax of jsp:useBean action tag


<jsp:useBean id= "instanceName" scope= "page | request | session | application"
class= "packageName.className" type= "packageName.className"
beanName="packageName.className | <%= expression >" >
</jsp:useBean>

Attributes and Usage of jsp:useBean action tag

1. id: is used to identify the bean in the specified scope.


2. scope: represents the scope of the bean. It may be page, request, session or application. The
default scope is page.
o page: specifies that you can use this bean within the JSP page. The default scope is
page.
o request: specifies that you can use this bean from any JSP page that processes the same
request. It has wider scope than page.
o session: specifies that you can use this bean from any JSP page in the same session
whether processes the same request or not. It has wider scope than request.
o application: specifies that you can use this bean from any JSP page in the same
application. It has wider scope than session.
3. class: instantiates the specified bean class (i.e. creates an object of the bean class) but it must
have no-arg or no constructor and must not be abstract.
4. type: provides the bean a data type if the bean already exists in the scope. It is mainly used
with class or beanName attribute. If you use it without class or beanName, no bean is
instantiated.
5. beanName: instantiates the bean using the java.beans.Beans.instantiate() method.

Simple example of jsp:useBean action tag

In this example, we are simply invoking the method of the Bean class.
O/P:-

Code Snnipet

JSP code snippets. A JSP code snippet is a code sample that shows you how to add WebSphere Commerce
functionality to your store. jsp file displays the customization information according to the display customization
terms and conditions for the a user's current session logon ID, store ID, and the selected language ID.

Snippet is a programming term for a small region of re-usable source code, machine code, or text. Ordinarily,
these are formally defined operative units to incorporate into
larger programming modules. Snippet management is a feature of some text editors, program
source code editors, IDEs, and related software.

Program to print the date using JSP


<%@ page import="java.util.Date" %>

<html>
<body>
<%
Date d=new Date();
out.println(d);
%>

</body>
</html>

O/P

Cookies in JSP:-

Cookies are text files stored on the client computer and they are kept for various information tracking
purposes. JSP transparently supports HTTP cookies using underlying servlet technology.
There are three steps involved in identifying and returning users −
• Server script sends a set of cookies to the browser. For example, name, age, or identification
number, etc.
• Browser stores this information on the local machine for future use.
• When the next time the browser sends any request to the web server then it sends those
cookies information to the server and server uses that information to identify the user or may
be for some other purpose as well.
Setting Cookies with JSP
Setting cookies with JSP involves three steps −

Step 1: Creating a Cookie object

You call the Cookie constructor with a cookie name and a cookie value, both of which are strings.
Cookie cookie = new Cookie("key","value");

Step 2: Setting the maximum age

You use setMaxAge to specify how long (in seconds) the cookie should be valid. The following code
will set up a cookie for 24 hours.
cookie.setMaxAge(60*60*24);

Step 3: Sending the Cookie into the HTTP response headers

You use response.addCookie to add cookies in the HTTP response header as follows
response.addCookie(cookie);

Program
Loginform.html

<!DOCTYPE html>
<html>
<body>
<form action="FirstForm.jsp">

Enter your name<input type="text" name="uname">


Password<input type="password" name="pwd">
<input type="submit">

</form>
</body>
</html>

For setting cookies for request.


Firstcookie.JSP
<html>
<body>
<%
Cookie ck1=new Cookie("Name","Shreya");
ck1.setMaxAge(60*60);
response.addCookie(ck1);
%>
</body>
</html>

For retrieving cookies from user browser


Secondcookie.jsp

<html>
<body>
<br>
<%

Cookie[] array=request.getCookies();
for(int i=0;i<array.length;i++)
{
out.println(array[i].getName());
out.println(array[i].getValue());
}

%>
</body>
</html>

Session Tracking in JSP


HTTP is a "stateless" protocol which means each time a client retrieves a Webpage, the client opens a
separate connection to the Web server and the server automatically does not keep any record of
previous client request.

Session tracking

Cookies

A webserver can assign a unique session ID as a cookie to each web client and for subsequent
requests from the client they can be recognized using the received cookie.
This may not be an effective way as the browser at times does not support a cookie. It is not
recommended to use this procedure to maintain the sessions.

Hidden Form Fields

A web server can send a hidden HTML form field along with a unique session ID as follows −
<input type = "hidden" name = "sessionid" value = "12345">

This entry means that, when the form is submitted, the specified name and value are automatically
included in the GET or the POST data. Each time the web browser sends the request back,
the session_id value can be used to keep the track of different web browsers.
This can be an effective way of keeping track of the session but clicking on a regular (<A HREF...>)
hypertext link does not result in a form submission, so hidden form fields also cannot support general
session tracking.

URL Rewriting

You can append some extra data at the end of each URL. This data identifies the session; the server
can associate that session identifier with the data it has stored about that session.
For example, with http://tutorialspoint.com/file.htm;sessionid=12345, the session identifier is
attached as sessionid = 12345 which can be accessed at the web server to identify the client.
URL rewriting is a better way to maintain sessions and works for the browsers when they don't
support cookies. The drawback here is that you will have to generate every URL dynamically to
assign a session ID though page is a simple static HTML page.
The session Object
Apart from the above mentioned options, JSP makes use of the servlet provided HttpSession
Interface. This interface provides a way to identify a user across.
• a one page request or
• visit to a website or
• store information about that user
By default, JSPs have session tracking enabled and a new HttpSession object is instantiated for each
new client automatically. Disabling session tracking requires explicitly turning it off by setting the
page directive session attribute to false as follows −
<%@ page session = "false" %>

Example

Login.html
<html>
<body>
<form action="FirstForm.jsp">
Enter your name<input type="text" name="uname">
Password<input type="password" name="pwd">
<input type="submit">

</form>
</body>
</html>

Firstsession.jsp
<html>
<body>
<%
String name=request.getParameter("uname");
String pwd=request.getParameter("pwd");

session.setAttribute("username",name);
out.print("welcome"+name);
%>
<a href="SecondForm.jsp">second page</a>
</body>
</html>

Secondsession.jsp
<html>
<head>
<body>
<%=session.getAttribute("username") %>
</body>
</html>

Output:
connecting to database in JSP.

Step 1

Open a Command Prompt and change to the installation directory as follows −


C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>

Step 2

Login to the database as follows −


C:\Program Files\MySQL\bin>mysql -u root -p
Enter password: ********
mysql>

Step 3

Create the Employee table in the TEST database as follows − −


mysql> use TEST;
mysql> create table Employees
(
id int not null,
age int not null,
first varchar (255),
last varchar (255)
);
Query OK, 0 rows affected (0.08 sec)
mysql>
Create Data Records
Let us now create a few records in the Employee table as follows − −
mysql> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali');
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO Employees VALUES (101, 25, 'Mahnaz', 'Fatma');


Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan');


Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal');


Query OK, 1 row affected (0.00 sec)

mysql>

SELECT Operation
Following example shows how we can execute the SQL SELECT statement using JTSL in JSP
programming −
<%@ page import = "java.io.*,java.util.*,java.sql.*"%>
<%@ page import = "javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix = "c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix = "sql"%>

<html>
<head>
<title>SELECT Operation</title>
</head>

<body>
<sql:setDataSource var = "snapshot" driver = "com.mysql.jdbc.Driver"
url = "jdbc:mysql://localhost/TEST"
user = "root" password = "pass123"/>

<sql:query dataSource = "${snapshot}" var = "result">


SELECT * from Employees;
</sql:query>

<table border = "1" width = "100%">


<tr>
<th>Emp ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Age</th>
</tr>

<c:forEach var = "row" items = "${result.rows}">


<tr>
<td><c:out value = "${row.id}"/></td>
<td><c:out value = "${row.first}"/></td>
<td><c:out value = "${row.last}"/></td>
<td><c:out value = "${row.age}"/></td>
</tr>
</c:forEach>
</table>

</body>
</html>
Access the above JSP, the following result will be displayed –

Emp ID First Name Last Name Ag

100 Zara Ali 18

101 Mahnaz Fatma 25

102 Zaid Khan 30

103 Sumit Mittal 28

You might also like