JSTL

JSTL(Java server page Standard Template Library) の略で、Java の仕様として用意されています。struts タグライブラリが 名の通りstruts 専用ですが、こちらはJSP2.0 の標準規格とも言えます。それゆえに機能面で重複する場合もありますが、JSTL の 方がより低水準の処理が行えるメリットがあります。struts2 でももちろん使えます。
更新日 2016-02-13

ダウンロード

実装はJakarta プロジェクトで行われています。Standard 1.1 Taglib Downloadsよりバイナリをダウンロードします。Tomcat5 の場合はJSP2.0 ならびにservlet2.4 をサポートしているので、該当する バージョン(2009/09 現在ではstandard-1.1) をダウンロードします。解凍してlib ディレクトリ内のjstl.jar とstandard.jar の 二つをWeb アプリケーションの/WEB-INF/lib にコピーします。
tld の設定は必要なく、使用したいJSP において以下のディレクティブさえ記述するだけで利用できます。

ディレクティブ例

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

core タグライブラリ

JSP での基本機能が実装されています。

c:out

値を出力します。
<c:out value="文字列" />

// EL 式も使える
<c:out value="${objItem.piece_price}" />

// っていうかJSP2.0 ならEL 式だけでもOK !?
${objItem.piece_price}

c:if、c:choose、c:when、c:otherwise

条件分岐を行います。
<c:if test="${objItem.pirce_price < 1000}">
	<c:out value="${objItem.name}" />
</c:if>

<c:choose>
	<c:when test="${objItem.piece_price < 1000}">
		AAA
	</c:when>
	<c:when test="${objItem.piece_price < 2000}">
		BBB
	</c:when>
	<c:otherwise>
		ZZZ
	</c:otherwise>
</c:choose>

c:forEach

ループできます。コレクションオブジェクトがなくてもループできるのは便利
<select name="piece_lot">
	<c:forEach begin="0" end="99" varStatus="status"> 
		<option>
			${status.index}
		</option>
	</c:forEach>
</select>

fmt タグライブラリ

書式出力ができます。

fmt:formatNumber

pattern 属性には 書式設定もできます。
// カンマ付きで出力する
<fmt:formatNumber value="19800" />