The JSTL is huge. Version 1.1 has five libraries—four with custom tags, and one with a bunch of functions for String manipulation. The tags we cover in this book (which happen to be the ones you’re expected to know for the exam) are for the generic things you’re most likely to need, but it’s possible that between all five libraries, you’ll find everything you might ever need. On the next page, we’ll start looking at what happens when the tags below aren’t enough.
The “Core” library
General-purpose
<c:out> <c:set> <c:remove> <c:catch>
Conditional
<c:if> <c:choose> <c:when> <c:otherwise>
URL related
<c:import> <c:url> <c:redirect> <c:param>
Iteration
<c:forEach> <c:forTokens>
We didn’t cover this one... it lets you iterate over tokens where YOU give it the delimiter. Works a lot like StringTokenizer. We also didn’t cover <c:redirect>, but that gives you a wonderful excuse to get the JSTL docs.
The “Formatting” library
Internationalization
<fmt:message> <fmt:setLocale> <fmt:bundle> <fmt:setBundle> <fmt:param> <fmt:requestEncoding>
Formatting
<fmt:timeZone> <fmt:setTimeZone> <fmt:formatNumber> <fmt:parseNumber> <fmt:parseDate>
The “SQL” library
Database access
<sql:query> <sql:update> <sql:setDataSource> <sql:param> <sql:dateParam>
The “XML” library
Core XML actions
<x:parse> <x:out> <x:set>
XML flow control
<x:if> <x:choose> <x:when> <x:otherwise> <x:forEach>
Transform actions
<x:transform> <x:param>
Only the “core” library is covered on the exam.
The “core” library (which by convention we always prefix with “c”) is the only JSTL library covered on the exam. The rest are specialized, so we don’t go into them. But you should at least know that they’re available. The XML transformation tags, for example, could save your life if you have to process RSS feeds. Writing your own custom tags can be a pain, so make sure before you write one that you’re not reinventing the wheel.