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>

Are you a developer? Want to get a promotion, work on interesting projects, land a high paying job at a tech company or stand out from the crowd?

Then this ebook is for you!

Career Guide for Software Developers

Career Guide for Software Developers

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>

Other JSP/JSTL Resources