0% found this document useful (0 votes)
188 views

How To Install JSTL Library

The document discusses the JavaServer Pages Standard Tag Library (JSTL), which is a collection of JSP tags that provide common functionality for JSP applications. It describes the different tag libraries in JSTL - core tags, formatting tags, SQL tags, XML tags, and functions. It then provides details on individual core tags like <c:out>, <c:set>, <c:remove>, <c:if>, <c:choose> and <c:import>, explaining their purpose, attributes and examples. The core tags are the most commonly used tags in JSTL.

Uploaded by

Balaji_SAP
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
188 views

How To Install JSTL Library

The document discusses the JavaServer Pages Standard Tag Library (JSTL), which is a collection of JSP tags that provide common functionality for JSP applications. It describes the different tag libraries in JSTL - core tags, formatting tags, SQL tags, XML tags, and functions. It then provides details on individual core tags like <c:out>, <c:set>, <c:remove>, <c:if>, <c:choose> and <c:import>, explaining their purpose, attributes and examples. The core tags are the most commonly used tags in JSTL.

Uploaded by

Balaji_SAP
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 58

The JavaServer Pages Standard Tag Library (JSTL) is a collection of useful JSP

tags which encapsulates core functionality common to many JSP


applications.
JSTL has support for common, structural tasks such as iteration and
conditionals, tags for manipulating XML documents, internationalization tags,
and SQL tags. It also provides a framework for integrating existing custom
tags with JSTL tags.
The JSTL tags can be classified, according to their functions, into following
JSTL tag library groups that can be used when creating a JSP page:
1. Core Tags
2. Formatting tags
3. SQL tags
4. XML tags
5. JSTL Functions

Install JSTL Library:


If you are using Apache Tomcat container then follow the following two
simple steps:
1. Download the binary distribution from Apache Standard Taglib and
unpack the compressed file.
2. To use the Standard Taglib from its Jakarta Taglibs distribution, simply
copy the JAR files in the distribution's 'lib' directory to your
application's webapps\ROOT\WEB-INF\lib directory.
To use any of the libraries, you must include a <taglib> directive at the top
of each JSP that uses the library.

Core Tags:
The core group of tags are the most frequently used JSTL tags. Following is
the syntax to include JSTL Core library in your JSP:
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/cor
e" %>

There are following Core JSTL Tags:

The <c:out> tag displays the result of an expression, similar to the way <%=
%> works with a difference that <c:out> tag lets you use the simpler "."
notation to access properties. For example, to access
customer.address.street just use tag is <c:out
value="customer.address.street"/>.
The <c:out> tag can automatically escape XML tags so they aren't evaluated
as actual tags.

Attribute:
The <c:out> tag has following attributes:
Attribute

Description

Require
d

Defaul
t

value

Information to output

Yes

None

default

Fallback information to output

No

body

escapeXml

True if the tag should escape special XML


characters

No

true

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:out> Tag Example</title>
</head>
<body>
<c:out value="${'<tag> , &'}"/>
</body>
</html>

This would produce following result:


<tag> ,
&

The <c:set> tag is JSTL-friendly version of the setProperty action. The tag is
helpful because it evaluates an expression and uses the results to set a value
of a JavaBean or a java.util.Map object.

Attribute:
The <c:set> tag has following attributes:
Attribute

Description

Require Defaul
d
t

value

Information to save

No

body

target

Name of the variable whose property should be


modified

No

None

property

Property to modify

No

None

var

Name of the variable to store information

No

None

scope

Scope of variable to store information

No

Page

If target is specified, property must also be specified.

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:set> Tag Example</title>
</head>
<body>
<c:set var="salary" scope="session"
value="${2000*2}"/>
<c:out value="${salary}"/>
</body>
</html>

This would produce following result:


4000

The <c:remove> tag removes a variable from either a specified scope or the
first scope where the variable is found (if no scope is specified). This action is
not normally particularly helpful, but it can aid in ensuring that a JSP cleans
up any scoped resources it is responsible for.

Attribute:
The <c:remove> tag has following attributes:
Attribute

Description

Required

Default

var

Name of the variable to remove

Yes

None

scope

Scope of the variable to remove

No

All scopes

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:remove> Tag Example</title>
</head>
<body>
<c:set var="salary" scope="session"
value="${2000*2}"/>
<p>Before Remove Value: <c:out value="$
{salary}"/></p>
<c:remove var="salary"/>
<p>After Remove Value: <c:out value="$
{salary}"/></p>
</body>
</html>

This would produce following result:


Before Remove Value:
4000
After Remove Value:

The <c:if> tag evaluates an expression and displays its body content only if
the expression evaluates to true.

Attribute:
The <c:if> tag has following attributes:
Attribute

Description

Require
d

Default

test

Condition to evaluate

Yes

None

var

Name of the variable to store the condition's result No

None

scope

Scope of the variable to store the condition's result No

page

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:if> Tag Example</title>
</head>
<body>
<c:set var="salary" scope="session"
value="${2000*2}"/>
<c:if test="${salary > 2000}">
<p>My salary is: <c:out value="${salary}"/><p>
</c:if>
</body>
</html>

This would produce following result:


My salary is:
4000

The <c:choose> works like a Java switch statement in that it lets you
choose between a number of alternatives. Where the switch statement has
case statements, the <c:choose> tag has <c:when> tags. A a switch
statement has default clause to specify a default action and similar way
<c:choose> has <c:otherwise> as default clause.

Attribute:

The <c:choose> tag does not have any attribute.


The <c:when> tag has one attributes which is listed below.

The <c:otherwise> tag does not have any attribute.

The <c:when> tag has following attributes:


Attribute

Description

Required

Default

test

Condition to evaluate

Yes

None

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:choose> Tag Example</title>
</head>
<body>
<c:set var="salary" scope="session"
value="${2000*2}"/>
<p>Your salary is : <c:out value="${salary}"/></p>
<c:choose>
<c:when test="${salary <= 0}">
Salary is very low to survive.
</c:when>
<c:when test="${salary > 1000}">
Salary is very good.
</c:when>
<c:otherwise>
No comment sir...
</c:otherwise>
</c:choose>
</body>
</html>

This would produce following result:

Your salary is :
4000
Salary is very
good.

The <c:choose> works like a Java switch statement in that it lets you
choose between a number of alternatives. Where the switch statement has
case statements, the <c:choose> tag has <c:when> tags. A a switch
statement has default clause to specify a default action and similar way
<c:choose> has <c:otherwise> as default clause.

Attribute:

The <c:choose> tag does not have any attribute.


The <c:when> tag has one attributes which is listed below.

The <c:otherwise> tag does not have any attribute.

The <c:when> tag has following attributes:


Attribute

Description

Required

Default

test

Condition to evaluate

Yes

None

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:choose> Tag Example</title>
</head>
<body>
<c:set var="salary" scope="session"
value="${2000*2}"/>
<p>Your salary is : <c:out value="${salary}"/></p>
<c:choose>
<c:when test="${salary <= 0}">
Salary is very low to survive.
</c:when>
<c:when test="${salary > 1000}">
Salary is very good.
</c:when>
<c:otherwise>
No comment sir...
</c:otherwise>
</c:choose>
</body>
</html>

This would produce following result:

Your salary is :
4000
Salary is very
good.

The <c:choose> works like a Java switch statement in that it lets you
choose between a number of alternatives. Where the switch statement has
case statements, the <c:choose> tag has <c:when> tags. A a switch
statement has default clause to specify a default action and similar way
<c:choose> has <c:otherwise> as default clause.

Attribute:

The <c:choose> tag does not have any attribute.


The <c:when> tag has one attributes which is listed below.

The <c:otherwise> tag does not have any attribute.

The <c:when> tag has following attributes:


Attribute

Description

Required

Default

test

Condition to evaluate

Yes

None

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:choose> Tag Example</title>
</head>
<body>
<c:set var="salary" scope="session"
value="${2000*2}"/>
<p>Your salary is : <c:out value="${salary}"/></p>
<c:choose>
<c:when test="${salary <= 0}">
Salary is very low to survive.
</c:when>
<c:when test="${salary > 1000}">
Salary is very good.
</c:when>
<c:otherwise>
No comment sir...
</c:otherwise>
</c:choose>
</body>
</html>

This would produce following result:

Your salary is :
4000
Salary is very
good.

The <c:choose> works like a Java switch statement in that it lets you
choose between a number of alternatives. Where the switch statement has
case statements, the <c:choose> tag has <c:when> tags. A a switch
statement has default clause to specify a default action and similar way
<c:choose> has <c:otherwise> as default clause.

Attribute:

The <c:choose> tag does not have any attribute.


The <c:when> tag has one attributes which is listed below.

The <c:otherwise> tag does not have any attribute.

The <c:when> tag has following attributes:


Attribute

Description

Required

Default

test

Condition to evaluate

Yes

None

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:choose> Tag Example</title>
</head>
<body>
<c:set var="salary" scope="session"
value="${2000*2}"/>
<p>Your salary is : <c:out value="${salary}"/></p>
<c:choose>
<c:when test="${salary <= 0}">
Salary is very low to survive.
</c:when>
<c:when test="${salary > 1000}">
Salary is very good.
</c:when>
<c:otherwise>
No comment sir...
</c:otherwise>
</c:choose>
</body>
</html>

This would produce following result:

Your salary is :
4000
Salary is very
good.

The <c:import> tag provides all of the functionality of the <include> action
but also allows for inclusion of absolute URLs.
For example, using the import tag allows for inclusion of content from a
different Web site or an FTP server.

Attribute:
The <c:import> tag has following attributes:
Attribute

Description

Requir
Default
ed

url

URL to retrieve and import into the page

Yes

None

context

/ followed by the name of a local web


application

No

Current
application

charEncodi
Character set to use for imported data
ng

No

ISO-8859-1

var

Name of the variable to store imported text

No

Print to page

scope

Scope of the variable used to store imported


text

No

Page

varReader

Name of an alternate variable to expose


java.io.Reader

No

None

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:import> Tag Example</title>
</head>

<body>
<c:import var="data"
url="http://www.tutorialspoint.com"/>
<c:out value="${data}"/>
</body>
</html>

Above example would fetch complete content from


tutorialspoint.com/index.htm and would store in variable data which will be
printed eventually. Try it yourself.

These tags exist as a good alternative to embedding a Java for, while, or


do-while loop via a scriptlet. The <c:forEach> tag is the more commonly
used tag because it iterates over a collection of objects. The <c:forTokens>
tag is used to break a string into tokens and iterate through each of the
tokens.

Attribute:
The <c:forEach> tag has following attributes:
Attribute

Description

Requir
ed

Default

items

Information to loop over

No

None

begin

Element to start with (0 = first item, 1 = second


item, ...)

No

end

Element to end with (0 = first item, 1 = second


item, ...)

No

Last
element

step

Process every step items

No

var

Name of the variable to expose the current item

No

None

varStatus

Name of the variable to expose the loop status

No

None

The <c:forTokens> tag has similar attributes as <c:forEach> except one


additional attribute delims which specifies sharacters to use as delimiters.

Attribute

Description

Required

Default

delims

Characters to use as delimiters

Yes

None

Example for <c:forEach>:


<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:forEach> Tag Example</title>
</head>
<body>
<c:forEach var="i" begin="1" end="5">
Item <c:out value="${i}"/><p>
</c:forEach>
</body>
</html>

This would produce following result:


Item
Item
Item
Item
Item

1
2
3
4
5

Example for <c:forTokens>:


<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:forTokens> Tag Example</title>
</head>
<body>
<c:forTokens items="Zara,nuha,roshy" delims=","
var="name">
<c:out value="${name}"/><p>
</c:forTokens>
</body>
</html>

This would produce following result:


Zara
nuha
roshy

These tags exist as a good alternative to embedding a Java for, while, or


do-while loop via a scriptlet. The <c:forEach> tag is the more commonly
used tag because it iterates over a collection of objects. The <c:forTokens>
tag is used to break a string into tokens and iterate through each of the
tokens.

Attribute:
The <c:forEach> tag has following attributes:
Attribute

Description

Requir
ed

Default

items

Information to loop over

No

None

begin

Element to start with (0 = first item, 1 = second


item, ...)

No

end

Element to end with (0 = first item, 1 = second


item, ...)

No

Last
element

step

Process every step items

No

var

Name of the variable to expose the current item

No

None

varStatus

Name of the variable to expose the loop status

No

None

The <c:forTokens> tag has similar attributes as <c:forEach> except one


additional attribute delims which specifies sharacters to use as delimiters.
Attribute

Description

Required

Default

delims

Characters to use as delimiters

Yes

None

Example for <c:forEach>:


<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:forEach> Tag Example</title>
</head>
<body>
<c:forEach var="i" begin="1" end="5">
Item <c:out value="${i}"/><p>
</c:forEach>
</body>
</html>

This would produce following result:


Item
Item
Item
Item
Item

1
2
3
4
5

Example for <c:forTokens>:


<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:forTokens> Tag Example</title>
</head>
<body>
<c:forTokens items="Zara,nuha,roshy" delims=","
var="name">
<c:out value="${name}"/><p>
</c:forTokens>
</body>
</html>

This would produce following result:


Zara

nuha
roshy

The <c:param> tag allows proper URL request parameter to be specified


with URL and it does any necessary URL encoding required.
Within a <c:param> tag, the name attribute indicates the parameter name,
and the value attribute indicates the parameter value:

Attribute:
The <c:param> tag has following attributes:
Attribute

Description

Required Default

name

Name of the request parameter to set in the URL

Yes

None

value

Value of the request parameter to set in the URL

No

Body

Example:
If you need to pass parameters to a <c:import> tag, use the <c:url> tag to
create the URL first as shown below:
<c:url value="/index.jsp" var="myURL">
<c:param name="trackingId"
value="1234"/>
<c:param name="reportType"
value="summary"/>
</c:url>
<c:import url="${myURL}"/>

Above request would pass URL as below - Try it yourself.


"/index.jsp?
trackingId=1234;reportType=summary"

The <c:redirect> tag redirects the browser to an alternate URL by providing


automatically URL rewriting, it supports context-relative URLs, and it
supports the <c:param> tag.

Attribute:
The <c:redirect> tag has following attributes:
Attribute

Description

Requir
ed

Default

url

URL to redirect the user's browser to

Yes

None

context

/ followed by the name of a local web


application

No

Current
application

Example:
If you need to pass parameters to a <c:import> tag, use the <c:url> tag to
create the URL first as shown below:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<html>
<head>
<title><c:redirect> Tag Example</title>
</head>
<body>
<c:redirect url="http://www.photofuntoos.com"/>
</body>
</html>

Above example would redirect request to http://www.photofuntoos.com - Try


it yourself.

Formatting tags:
The JSTL formatting tags are used to format and display text, the date, the
time, and numbers for internationalized Web sites. Following is the syntax to
include Formatting library in your JSP:

The <fmt:parseNumber> tag is used to parse numbers, percentages, and


currencies.

Attribute:
The <fmt:parseNumber> tag has following attributes:
Attribute

Description

Requir
Default
ed

value

Numeric value to read (parse)

No

Body

type

NUMBER, CURRENCY, or PERCENT

No

number

parseLocal
e

Locale to use when parsing the number

No

Default
locale

integerOnl
y

Whether to parse to an integer (true) or


floating-point number (false)

No

false

pattern

Custom parsing pattern

No

None

timeZone

Time zone of the displayed date

No

Default time
zone

var

Name of the variable to store the parsed


number

No

Print to page

scope

Scope of the variable to store the formatted


number

No

page

A pattern attribute is provided that works just like the pattern attribute for
the <fmt:formatNumber> tag. However, in the case of parsing, the pattern
attribute tells the parser what format to expect.

Example:
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:parseNumber Tag</title>
</head>
<body>
<h3>Number Parsing:</h3>
<c:set var="balance" value="1250003.350" />
<fmt:parseNumber var="i" type="number" value="$
{balance}" />
<p>Parsed Number (1) : <c:out value="${i}" /></p>
<fmt:parseNumber var="i" integerOnly="true"
type="number" value="${balance}" />
<p>Parsed Number (2) : <c:out value="${i}" /></p>
</body>
</html>

This would produce following result:


Number Parsing:

Parsed Number (1) :


1250003.35
Parsed Number (2) :
1250003

The <fmt:formatDate> tag is used to format dates in a variety of ways

Attribute:
The <fmt:formatDate> tag has following attributes:

Attribute

Description

Requir
ed

Default

value

Date value to display

Yes

None

type

DATE, TIME, or BOTH

No

date

dateStyle

FULL, LONG, MEDIUM, SHORT, or DEFAULT

No

default

timeStyle

FULL, LONG, MEDIUM, SHORT, or DEFAULT

No

default

pattern

Custom formatting pattern

No

None

timeZone

Time zone of the displayed date

No

Default time
zone

var

Name of the variable to store the formatted


No
date

Print to page

scope

Scope of the variable to store the formatted


No
date

page

The pattern attribute to specify even more precise handling of the date:
Code

Purpose

Sample

The era designator

AD

The year

2002

The month

April & 04

The day of the month

20

The hour(12-hour time)

12

The hour(24-hour time)

The minute

45

The second

52

The millisecond

970

The day of the week

Tuesday

The day of the year

180

The day of the week in the month

2 (2nd Wed in month)

The week in the year

27

The week in the month

The a.m./p.m. indicator

PM

The hour(12-hour time)

24

The hour(24-hour time)

The time zone

Central Standard Time

'

The escape for text

''

The single quote

Example:
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="fmt"


uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:dateNumber Tag</title>
</head>
<body>
<h3>Number Format:</h3>
<c:set var="now" value="<%=new java.util.Date()
%>" />
<p>Formatted Date (1): <fmt:formatDate type="time"
value="${now}" /></p>
<p>Formatted Date (2): <fmt:formatDate type="date"
value="${now}" /></p>
<p>Formatted Date (3): <fmt:formatDate type="both"
value="${now}" /></p>
<p>Formatted Date (4): <fmt:formatDate type="both"
dateStyle="short" timeStyle="short"
value="${now}" /></p>
<p>Formatted Date (5): <fmt:formatDate type="both"
dateStyle="medium" timeStyle="medium"
value="${now}" /></p>
<p>Formatted Date (6): <fmt:formatDate type="both"
dateStyle="long" timeStyle="long"
value="${now}" /></p>
<p>Formatted Date (7): <fmt:formatDate
pattern="yyyy-MM-dd"
value="${now}" /></p>
</body>
</html>

This would produce following result:

Date Format:

Formatted Date (1): 14:27:18


Formatted Date (2): 23-Sep-2010
Formatted Date (3): 23-Sep-2010 14:27:18
Formatted Date (4): 23/09/10 14:27
Formatted Date (5): 23-Sep-2010 14:27:18
Formatted Date (6): 23 September 2010
14:27:18 GST
Formatted Date (7): 2010-09-23

The <fmt:parseDate> tag is used to parse dates.

Attribute:
The <fmt:parseDate> tag has following attributes:
Attribute

Description

Requir
ed

Default

value

Date value to read (parse)

No

Body

type

DATE, TIME, or BOTH

No

date

dateStyle

FULL, LONG, MEDIUM, SHORT, or DEFAULT

No

Default

timeStyle

FULL, LONG, MEDIUM, SHORT, or DEFAULT

No

Default

parseLocal
e

Locale to use when parsing the date

No

Default locale

pattern

Custom parsing pattern

No

None

timeZone

Time zone of the parsed date

No

Default time

zone

var

Name of the variable to store the parsed


date

scope

Scope of the variable to store the formatted


No
date

No

Print to page

page

A pattern attribute is provided that works just like the pattern attribute for
the <fmt:formatDate> tag. However, in the case of parsing, the pattern
attribute tells the parser what format to expect.

Example:
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:parseDate Tag</title>
</head>
<body>
<h3>Date Parsing:</h3>
<c:set var="now" value="20-10-2010" />
<fmt:parseDate value="${now}"
var="parsedEmpDate"
pattern="dd-MM-yyyy" />
<p>Parsed Date: <c:out value="$
{parsedEmpDate}" /></p>
</body>
</html>

This would produce following result:


Date Parsing:

Parsed Date: Wed Oct 20 00:00:00


GST 2010

The <fmt:bundle> tag will make the specified bundle available to all
<fmt:message> tags that occur between the bounding <fmt:bundle> and

</fmt:bundle> tags. This saves you the extra step of having to specify the
resource bundle for each of your <fmt:message> tags.
For example, the following two <fmt:bundle> blocks would produce the
same output:
<fmt:bundle basename="com.tutorialspoint.Example">
<fmt:message key="count.one"/>
</fmt:bundle>
<fmt:bundle basename="com.tutorialspoint.Example"
prefix="count.">
<fmt:message key="title"/>
</fmt:bundle>

Attribute:
The <fmt:bundle> tag has following attributes:
Attribute

Description

Requir Defa
ed
ult

basename

Specifies the base name of the resource bundle that is


to be loaded.

Yes

None

prefix

Value to prepend to each key name in <fmt:message>


No
subtags

None

Example:
Resource bundles contain locale-specific objects. Resource bundles contain
key/value pairs. When your program needs a locale-specific resource, you
keep all the keys common to all the locale but you can have translated
values specific to locale. Resource bundles helps in providing content specific
to locale.
A Java resource bundle file contains a series of key-to-string mappings. The
method that we focus on involves creating compiled Java classes that extend
the java.util.ListResourceBundle class. You must compile these class files and
make them available to the classpath of your Web application.
Let us define a default resource bundle as follows:

package com.tutorialspoint;
import java.util.ListResourceBundle;
public class Example_En extends
ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
{"count.one", "One"},
{"count.two", "Two"},
{"count.three", "Three"},
};
}

Let us compile above class Example.class and make it available in the


CLASSPATH of your Web application. Now you can use the following JSTL tags
to display the three numbers as follows:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:bundle Tag</title>
</head>
<body>
<fmt:bundle basename="com.tutorialspoint.Example"
prefix="count.">
<fmt:message key="one"/><br/>
<fmt:message key="two"/><br/>
<fmt:message key="three"/><br/>
</fmt:bundle>
</body>
</html>

This would produce following result:


One
Two
Three

Try above example without prefix as follows:


<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"


prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:bundle Tag</title>
</head>
<body>
<fmt:bundle
basename="com.tutorialspoint.Example">
<fmt:message key="count.one"/><br/>
<fmt:message key="count.two"/><br/>
<fmt:message key="count.three"/><br/>
</fmt:bundle>
</body>
</html>

This would also produce following result:


One
Two
Three

The <fmt:timeZone> tag is used to specify the time zone that all tags within
its body will use.

Attribute:
The <fmt:timeZone> tag has following attributes:
Attribute

Description

Required

Default

value

Time zone to apply to the body

Yes

None

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:timeZone Tag</title>
</head>

<body>
<c:set var="now" value="<%=new java.util.Date()
%>" />
<table border="1" width="100%">
<tr>
<td width="100%" colspan="2" bgcolor="#0000FF">
<p align="center">
<b>
<font color="#FFFFFF" size="4">Formatting:
<fmt:formatDate value="${now}" type="both"
timeStyle="long" dateStyle="long" />
</font>
</b>
</p>
</td>
</tr>
<c:forEach var="zone"
items="<%=java.util.TimeZone.getAvailableIDs()
%>">
<tr>
<td width="51%">
<c:out value="${zone}" />
</td>
<td width="49%">
<fmt:timeZone value="${zone}">
<fmt:formatDate value="${now}" timeZone="${zn}"
type="both" />
</fmt:timeZone>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>

This would produce following result:

The <fmt:setTimeZone> tag is used to copy a time zone object into the
specified scoped variable.

Attribute:
The <fmt:setTimeZone> tag has following attributes:
Attribute

Description

Requir Default

ed

value

Time zone to expose as a scoped or


configuration variable

Yes

None

var

Name of the variable to store the new time


zone

No

Replace
default

scope

Scope of the variable to store the new time


zone

No

Page

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:setTimeZone Tag</title>
</head>
<body>
<c:set var="now" value="<%=new java.util.Date()
%>" />
<p>Date in Current Zone: <fmt:formatDate value="$
{now}"
type="both" timeStyle="long" dateStyle="long"
/></p>
<p>Change Time Zone to GMT-8</p>
<fmt:setTimeZone value="GMT-8" />
<p>Date in Changed Zone: <fmt:formatDate
value="${now}"
type="both" timeStyle="long" dateStyle="long"
/></p>
</body>
</html>

This would produce following result:


Date in Current Zone: 23 September 2010 15:21:37
GST
Change Time Zone to GMT-8
Date in Changed Zone: 23 September 2010
03:21:37 GMT-08:00

The <fmt:message> tag maps key to localized message and performs


parametric replacement.

Attribute:
The <fmt:message> tag has following attributes:
Attribute

Description

Require
Default
d

key

Message key to retrieve

No

Body

bundle

Resource bundle to use

No

Default
bundle

var

Name of the variable to store the localized


message

No

Print to page

scope

Scope of the variable to store the localized


message

No

Page

Example:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"
prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"
prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:message Tag</title>
</head>
<body>
<fmt:setLocale value="en"/>
<fmt:setBundle basename="com.tutorialspoint.Example"
var="lang"/>
<fmt:message key="count.one" bundle="$
{lang}"/><br/>
<fmt:message key="count.two" bundle="$
{lang}"/><br/>
<fmt:message key="count.three" bundle="$
{lang}"/><br/>

</body>
</html>

This would produce following result:


One
Two
Three

JSTL SQL <sql:setDataSource>


Tag
The <sql:setDataSource> tag sets the data source configuration variable or
saves the data-source information in a scoped variable that can be used as
input to the other JSTL database actions.

Attribute:
The <sql:setDataSource> tag has following attributes:
Attribute

Description

Require
d

Default

driver

Name of the JDBC driver class to be registered

No

None

url

JDBC URL for the database connection

No

None

user

Database username

No

None

password

Database password

No

None

password

Database password

No

None

No

None

dataSource Database prepared in advance

var

Name of the variable to represent the database No

Set default

scope

Scope of the variable to represent the database No

Page

Example:
Consider the following information about your MySQL database setup:

We are using JDBC MySQL driver.


We are going to connect to TEST database on local machine.

We would use user_id and mypassword to access TEST database.

All the above parameters would vary based on your MySQL or any other
database setup. Keeping above parameters in mind, following is a simple
example to use setDataSource tag:
<%@ 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>JSTL sql:setDataSource Tag</title>
</head>
<body>
<sql:setDataSource var="snapshot"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/TEST"
user="user_id" password="mypassword"/>
<sql:query dataSource="${snapshot}" sql="..."
var="result" />
</body>
</html>

You will start using <sql:setDataSource> in subsequent SQL tags.

The <sql:query> tag executes an SQL SELECT statement and saves the
result in a scoped variable.

Attribute:
The <sql:query> tag has following attributes:
Attribute

Description

Requir
Default
ed

sql

SQL command to execute (should return a


ResultSet)

No

Body

dataSource

Database connection to use (overrides the


default)

No

Default
database

maxRows

Maximum number of results to store in the


variable

No

Unlimited

startRow

Number of the row in the result at which to


start recording

No

var

Name of the variable to represent the


database

No

Set default

scope

Scope of variable to expose the result from the


No
database

Page

Example:
To start with basic concept, let us create a simple table Employees table in
TEST database and create few records in that table as follows:

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 database as follows
C:\Program Files\MySQL\bin>mysql
-u root -p
Enter password: ********
mysql>

Step 3:
Create the table Employee in 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


Finally you create few records in 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>

Now let us write a JSP which will make use of <sql:query> to execute a SQL
SELECT statement as follows:

<%@ 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>JSTL sql:query Tag</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>

The <sql:update> tag executes an SQL statement that does not return data,
for example SQL INSERT, UPDATE, or DELETE statements.

Attribute:
The <sql:update> tag has following attributes:

Attribute

Description

Requir
Default
ed

sql

SQL command to execute (should not return a


ResultSet)

No

Body

dataSource

Database connection to use (overrides the


default)

No

Default
database

var

Name of the variable to store the count of


affected rows

No

None

scope

Scope of the variable to store the count of


affected rows

No

Page

Example:
To start with basic concept, let us create a simple table Employees table in
TEST database and create few records in that table as follows:

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 database as follows
C:\Program Files\MySQL\bin>mysql
-u root -p
Enter password: ********
mysql>

Step 3:
Create the table Employee in 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


Finally you create few records in 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>

Now let us write a JSP which will make use of <sql:update> to execute a SQL
INSERT statement to create one record in the table as follows:
<%@ 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>JSTL sql:update Tag</title>
</head>
<body>

<sql:setDataSource var="snapshot"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/TEST"
user="root" password="pass123"/>
<sql:update dataSource="${snapshot}" var="count">
INSERT INTO Employees VALUES (104, 2, 'Nuha', 'Ali');
</sql:update>
<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>

Now try to access above JSP, which should display the following result:
Emp
ID

First
Name

Last
Name

Ag
e

100

Zara

Ali

18

101

Mahnaz

Fatma

25

102

Zaid

Khan

30

103

Sumit

Mittal

28

104

Nula

Ali

The <sql:param> tag used as a nested action for <sql:query> and


<sql:update> to supply a value for a value placeholder. If a null value is
provided, the value is set to SQL NULL for the placeholder.

Attribute:
The <sql:param> tag has following attributes:
Attribute

Description

Required

Default

value

Value of the parameter to set

No

Body

Example:
To start with basic concept, let us create a simple table Employees table in
TEST database and create few records in that table as follows:

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 database as follows
C:\Program Files\MySQL\bin>mysql
-u root -p
Enter password: ********
mysql>

Step 3:
Create the table Employee in 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


Finally you create few records in 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>

Now let us write a JSP which will make use of <sql:update> to execute a SQL
DELETE statement to delete one record with id = 103 from the table as
follows:
<%@ 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>JSTL sql:param Tag</title>
</head>

<body>
<sql:setDataSource var="snapshot"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/TEST"
user="root" password="pass123"/>
<c:set var="empId" value="103"/>
<sql:update dataSource="${snapshot}" var="count">
DELETE FROM Employees WHERE Id = ?
<sql:param value="${empId}" />
</sql:update>
<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>

Now try to access above JSP, which should display the following result:
Emp
ID

First
Name

Last
Name

Ag
e

100

Zara

Ali

18

101

Mahnaz

Fatma

25

102

Zaid

Khan

30

The <sql:dateParam> tag is used as a nested action for <sql:query> and


<sql:update> supply a date and time value for a value placeholder. If a null
value is provided, the value is set to SQL NULL for the placeholder.

Attribute:
The <sql:dateParam> tag has following attributes:
Attribute

Description

Requir
Default
ed

value

Value of the date parameter to set (java.util.Date)

No

Body

type

DATE (date only), TIME (time only), or TIMESTAMP


(date and time)

No

TIMESTAM
P

Example:
To start with basic concept, let us create a simple table Students table in
TEST database and create few records in that table as follows:

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 database as follows
C:\Program Files\MySQL\bin>mysql
-u root -p
Enter password: ********
mysql>

Step 3:
Create the table Employee in TEST database as follows:
mysql> use TEST;
mysql> create table Students
(
id int not null,
first varchar (255),
last varchar (255),
dob date
);
Query OK, 0 rows affected
(0.08 sec)
mysql>

Create Data Records


Finally you create few records in Employee table as follows:
mysql> INSERT INTO Students
VALUES (100, 'Zara', 'Ali',
'2002/05/16');
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO Students
VALUES (101, 'Mahnaz', 'Fatma',
'1978/11/28');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Students
VALUES (102, 'Zaid', 'Khan',
'1980/10/10');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Students


VALUES (103, 'Sumit', 'Mittal',
'1971/05/08');
Query OK, 1 row affected (0.00 sec)
mysql>

Now let us write a JSP which will make use of <sql:update> along with
<sql:param> and <sql:dataParam> to execute a SQL UPDATE statement to
update date of birth for Zara:
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page
import="javax.servlet.http.*,javax.servlet.*" %>
<%@ page import="java.util.Date,java.text.*" %>
<%@ 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>JSTL sql:dataParam Tag</title>
</head>
<body>
<sql:setDataSource var="snapshot"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/TEST"
user="root" password="pass123"/>
<%
Date DoB = new Date("2001/12/16");
int studentId = 100;
%>
<sql:update dataSource="${snapshot}" var="count">
UPDATE Students SET dob = ? WHERE Id = ?
<sql:dateParam value="<%=DoB%>" type="DATE" />
<sql:param value="<%=studentId%>" />
</sql:update>
<sql:query dataSource="${snapshot}" var="result">
SELECT * from Students;
</sql:query>
<table border="1" width="100%">
<tr>
<th>Emp ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>DoB</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.dob}"/></td>
</tr>
</c:forEach>
</table>
</body>
</html>

Now try to access above JSP, which should display the following result after
updating dob from 2002/05/16 to 2001/12/16 for the record with ID=100:
Emp
ID

First
Name

Last
Name

DoB

100

Zara

Ali

2001-1216

101

Mahnaz

Fatma

1978-1128

102

Zaid

Khan

1980-1010

103

Sumit

Mittal

1971-0508

The <sql:transaction> tag is used to group <sql:query> and <sql:update>


into transactions. You can put as many <sql:query> and <sql:update> as
statements inside <sql:transaction> to make them a single transaction.
It ensures that the database modifications performed by the nested actions
are either committed or rolled back if an exception is thrown by any nested
action.

Attribute:
The <sql:transaction> tag has following attributes:

Attribute

Description

Requir
Default
ed

dataSource

Database connection to use (overrides the


default)

No

Default
database

isolation

Transaction isolation (READ_COMMITTED,


READ_UNCOMMITTED, REPEATABLE_READ, or
SERIALIZABLE)

No

Databases
default

Example:
To start with basic concept, let us create a simple table Students table in
TEST database and create few records in that table as follows:

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 database as follows
C:\Program Files\MySQL\bin>mysql
-u root -p
Enter password: ********
mysql>

Step 3:
Create the table Employee in TEST database as follows:
mysql> use TEST;
mysql> create table Students
(
id int not null,
first varchar (255),

last varchar (255),


dob date
);
Query OK, 0 rows affected
(0.08 sec)
mysql>

Create Data Records


Finally you create few records in Employee table as follows:
mysql> INSERT INTO Students
VALUES (100, 'Zara', 'Ali',
'2002/05/16');
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO Students
VALUES (101, 'Mahnaz', 'Fatma',
'1978/11/28');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Students
VALUES (102, 'Zaid', 'Khan',
'1980/10/10');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Students
VALUES (103, 'Sumit', 'Mittal',
'1971/05/08');
Query OK, 1 row affected (0.00 sec)
mysql>

Now let us write a JSP which will make use of <sql:update> along with
<sql:transaction> to execute a SQL UPDATE statement. Here code inside
<sql:transaction> either would be exeucted completely or not at all:
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page
import="javax.servlet.http.*,javax.servlet.*"%>
<%@ page import="java.util.Date,java.text.*" %>
<%@ 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>JSTL sql:transaction Tag</title>
</head>

<body>
<sql:setDataSource var="snapshot"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/TEST"
user="root" password="cohondob"/>
<%
Date DoB = new Date("2001/12/16");
int studentId = 100;
%>
<sql:transaction dataSource="${snapshot}">
<sql:update var="count">
UPDATE Students SET last = 'Ali' WHERE Id = 102
</sql:update>
<sql:update var="count">
UPDATE Students SET last = 'Shah' WHERE Id = 103
</sql:update>
<sql:update var="count">
INSERT INTO Students
VALUES (104,'Nuha', 'Ali', '2010/05/26');
</sql:update>
</sql:transaction>
<sql:query dataSource="${snapshot}" var="result">
SELECT * from Students;
</sql:query>
<table border="1" width="100%">
<tr>
<th>Emp ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>DoB</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.dob}"/></td>
</tr>
</c:forEach>
</table>
</body>
</html>

Now try to access above JSP, which should display the following result:
Emp

First

Last

DoB

ID

Name

Name

100

Zara

Ali

2001-1216

101

Mahnaz

Fatma

1978-1128

102

Zaid

Ali

1980-1010

103

Sumit

Shah

1971-0508

104

Nuha

Ali

2010-0526

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

Following is the list of Formatting JSTL Tags:

The <fmt:formatNumber> tag is used to format numbers, percentages, and


currencies.

Attribute:
The <fmt:formatNumber> tag has following attributes:
Attribute

Description

Requir
Default
ed

value

Numeric value to display

Yes

None

type

NUMBER, CURRENCY, or PERCENT

No

Number

pattern

Specify a custom formatting pattern


for the output.

No

None

currencyCode

Currency code (for type="currency")

No

From the default


locale

currencySymb
Currency symbol (for type="currency") No
ol

From the default


locale

groupingUsed

Whether to group numbers (TRUE or


FALSE)

No

true

maxIntegerDi
gits

Maximum number of integer digits to


print

No

None

minIntegerDigi Minimum number of integer digits to


ts
print

No

None

maxFractionDi Maximum number of fractional digits


gits
to print

No

None

minFractionDi
gits

Minimum number of fractional digits to


No
print

None

var

Name of the variable to store the


formatted number

No

Print to page

scope

Scope of the variable to store the


formatted number

No

page

If the type attribute is percent or number, then you can use several
number-formatting attributes. The maxIntegerDigits and
minIntegerDigits attributes allow you to specify the size of the
nonfractional portion of the number. If the actual number exceeds
maxIntegerDigits, then the number is truncated.
Attributes are also provided to allow you to determine how many
decimal places should be used. The minFractionalDigits and
maxFractionalDigits attributes allow you to specify the number of
decimal places. If the number exceeds the maximum number of
fractional digits, the number will be rounded.

Grouping can be used to insert commas between thousands groups.


Grouping is specified by setting the groupingIsUsed attribute to either
true or false. When using grouping with minIntegerDigits, you must be
careful to get your intended result.

You may select to use the pattern attribute. This attribute lets you
include special characters that specify how you would like your number
encoded. Following table shows these codes.

Symbol

Description

Represents a digit.

Represents in exponential form.

Represents a digit; displays 0 as absent.

Serves as a placeholder for a decimal separator.

Serves as a placeholder for a grouping separator.

Separates formats.

Used as the default negative prefix.

Multiplies by 100 and displays as a percentage.

Multiplies by 1000 and displays as per mille.

Represents the currency sign; replaced by actional currency


symbol.

Indicates that any other characters can be used in the prefix or


suffix.

'

Used to quote special characters in a prefix or suffix.

Example:
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:formatNumber Tag</title>
</head>
<body>
<h3>Number Format:</h3>
<c:set var="balance" value="120000.2309" />
<p>Formatted Number (1): <fmt:formatNumber
value="${balance}"
type="currency"/></p>
<p>Formatted Number (2): <fmt:formatNumber
type="number"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (3): <fmt:formatNumber
type="number"
maxFractionDigits="3" value="${balance}" /></p>
<p>Formatted Number (4): <fmt:formatNumber

type="number"
groupingUsed="false" value="${balance}" /></p>
<p>Formatted Number (5): <fmt:formatNumber
type="percent"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (6): <fmt:formatNumber
type="percent"
minFractionDigits="10" value="${balance}" /></p>
<p>Formatted Number (7): <fmt:formatNumber
type="percent"
maxIntegerDigits="3" value="${balance}" /></p>
<p>Formatted Number (8): <fmt:formatNumber
type="number"
pattern="###.###E0" value="${balance}" /></p>
<p>Currency in USA :
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="${balance}"
type="currency"/></p>
</body>
</html>

This would produce following result:

You might also like