Introduction to JSP Standard Tag Library (JSTL Basics)

Tag libraries to include in your .jsp page

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

Include file (Java)

<%@ include file="/WEB-INF/jsp/common/date.jsp" %>

Include file (JSP)

<jsp:include page="/WEB-INF/jsp/common/date.jsp">
	<jsp:param name="title" value="Date and Time"/>
</jsp:include>

Import a URL

<c:import url="http://www.google.com">
	<jsp:param name="title" value="Google"/>
</c:import>

Set a variable to be used within the page

<c:set var="title" value="Web Developmenent Blog"/>

This can be used inside the jsp page by calling ${title}

For each loop

<c:forEach items="${result}" varStatus="status" var="item">
	${item.title}
</c:forEach>

For each loop with a pre-determined limit

Display the first 3 items

<c:forEach items="${result}" varStatus="status" 
var="item" begin="0" end="2">
	...
</c:forEach>

Check if it is the last item in the loop

<c:forEach items="${items}" var="item" varStatus="status">
	${item}<c:if test="${not status.last}">, </c:if>
</c:forEach>

If condition

<c:if test="${not empty title}">
	Title isn't empty
</c:if>

If condition with more than one possible result

<c:choose>
   	<c:when test="${linkNameLen > 18}">
   		<c:set var='linkNameShort' value='${fn:substring(link.linkName, 0, 18)}...'/>
   	</c:when>
   	<c:otherwise>
    		<c:set var='linkNameShort' value='${link.linkName}'/>  				
   	</c:otherwise>
</c:choose>

Display a subset of a string

Display only the first 80 characters

${fn:substring(url, 0, 80)}

Count the total number of characters in a string

<c:if test="${fn:length(url) > 80}">...</c:if>

Replace certain characters in a string

<c:set var="description" 
value="${fn:replace(string, 'Old Text', 'New Text')}" />

Convert string to all lowercases

${fn:toLowerCase(string)}

Check if a string contains certain value

<c:if test="${not empty param.gender && 
fn:contains(param.gender,'Female')}"> checked="checked"</c:if>

Split a string into an array

Eg: Split 14/10/2009

<c:set var="date" value="${fn:split(start_date, '/')}" />  
<c:set var="day" value="${date[0]}" />
<c:set var="month" value="${date[1]}" />
<c:set var="year" value="${date[2]}" />

Check if a string starts with certain characters

<c:choose>
	<c:when test="${fn:startsWith(website,'http') }">
		<a href="${website}">${website}</a>
	</c:when>
	<c:otherwise>
		<a href="http://${website}">http://${website}</a>
	</c:otherwise>
</c:choose>

Display text with html values escaped

<c:out value="${summary}"/>

Display text with html values

<c:out value="${cat.name}" escapeXml="false"/>

Escape html values (same result as using <c:out>)

${fn:escapeXml(summary)}

OR operator

<c:if test="${(title == 'null') || (empty title)}">
	...
</c:if>

AND operator

<c:if test="${(title != 'null') && (title == 'Page 1')}">
	...
</c:if>

Maths operators

Addition

<c:if test="${counter + 2 == 4}">

Subtraction

<c:if test="${counter - 2 == 0}">

Multiplication

<c:if test="${counter * 2 == 4}">

Division

<c:if test="${counter / 2 == 4}">

Remainder

<c:if test="${counter % 2 == 0}">

Form a URL with parameters

<c:url value="http://www.google.com/search" var="google_search">
	<c:param name="q" value="web development blog"/>
	<c:param name="hl" value="en"/>
</c:url>
<c:out value="${google_search}"/>

Check a parameter from URL

<c:if test="${param.name != 'null' && not empty param.name}">
	...
</c:if>

Check session

<c:when test="${not empty sessionScope['javax.portlet.userinfo']}">

Check if form is submitted

<c:if test="${pageContext.request.method == 'POST'}">
	...
</c:if>

Recommended Books

Other JSP/JSTL Resources

Profile PicHello! Welcome to Web development blog! My name is Ei Sabai and on this blog, I write about web development, mobile app development, latest web technologies and the likes. Read more about me or have a look at some of the tips & resources I've written.
Subscribe to our newsletter to receive tips, resources and special offers related to web development & design.
We do NOT spam.
Your name:  
Your email:  

Tips & Resources

Tips & Resources
WordPress Web Hosting
Recommended web hosting providers for WordPress 3.0
iPhone Native App Development
Important steps into iPhone app development for beginners
iPhone Web App Development
Tips for iPhone web app development
Coupons for Web Developers
Get discounts on web hosting, domain names, templates, etc
10 Useful jQuery Snippets
Easy-to-use jQuery snippets for any website
HTML Email Newsletter
Step-by-step tutorial on how to code an HTML email newsletter
  • bluehost Hosting $6.95/month
  • Joomla Templates