Java JSTLのカスタムタグの導入と使用例のサンプル(core,i18n)

JavaのJSTLのカスタムタグの導入と使用例のサンプルです。
(確認環境:Windows10,Standard Taglib 1.2.5)

目次

サンプル JSTLとは
1.jarファイルの取得
2.jarファイルの配置
<c:set>タグと<c:out>タグ
<c:if>タグ
<c:choose>タグ
<c:forEach>タグ
<fmt:formatDate>タグ

JSTLとは

  • JavaServer Pages Standard Tag Libraryの略です。
  • 5つのタグライブラリ(Core,i18n,Database,XML,Functions)からなります。
  • カスタムタグです。
    →独自に定義されたタグです。
    →JSPに標準で用意されているタグはアクションタグです。<jsp:include>等。
  • Apache Taglibs Projectが配布しています。
  • 以下は、Apache Standard Taglib 1.2.1 APIのリンクです。
    https://tomcat.apache.org/taglibs/standard/apidocs/

 

1.jarファイルの取得

以下のサイトからJSTLのjarファイルをダウンロードします。

Apache Tomcatのサイト
https://tomcat.apache.org/download-taglibs.cgi

ダウンロードするファイル
・taglibs-standard-impl-1.2.5.jar
・taglibs-standard-jstlel-1.2.5.jar
・taglibs-standard-spec-1.2.5.jar

 

2.jarファイルの配置

ダウンロードしたファイルを\WEB-INF\lib配下に配置します。
・taglibs-standard-impl-1.2.5.jar
・taglibs-standard-jstlel-1.2.5.jar
・taglibs-standard-spec-1.2.5.jar

test1.jspはWebContent配下です。

アクセスするURLは以下です。
http://localhost:8080/test1/test1.jsp

Webコンテナ

JSPを動かすためには、Web用のプロジェクトとTomcatなどのWebコンテナが必要です。
Eclipseで動的Webプロジェクトを作成する手順
EclipseにTomcatを登録する手順

 

<c:set>タグと<c:out>タグ

coreライブラリのタグです。

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>

<c:set var="color" value="赤黄青" />

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

</body>
</html>

2行目は、coreライブラリのタグを使用するときに必要です。

10行目の<c:set>タグは、colorという変数に赤黄青という値をセットしています。
12行目の<c:out>タグは、変数colorの値(赤黄青)を出力します。

 

<c:if>タグ

coreライブラリのタグです。

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>

<c:set var="num" value="3"/>

<c:if test="${num < 10 }">
10以下です
</c:if>

</body>
</html>

2行目は、coreライブラリのタグを使用するときに必要です。

12行目の<c:if>タグは、変数numの値が10より小さいかというif文です。
if文の判定はtrueになるので11行目の10以下ですという文言が表示されます。
※12行目のtestという文字は仕様で必要です。削除できません。

 

5.<c:choose>タグ

coreライブラリのタグです。

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>

<c:set var="num" value="3"/>

<c:choose>
	<c:when test="${num >= 5}">5以上</c:when>
	<c:when test="${num >= 3}">3以上</c:when>
	<c:otherwise>3より小さい</c:otherwise>
</c:choose>

</body>
</html>

2行目は、coreライブラリのタグを使用するときに必要です。

12-16行目の<c:choose>タグは、変数numの値が5以上か or 3以上か or それ以外かを判定しています。
判定の結果は3以上になるので14行目の3以上が表示されます。
※13,14行目のtestという文字は仕様で必要です。削除できません。

 

6.<c:forEach>タグ

coreライブラリのタグです。

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>

<c:forEach var="i" begin="1" end="3" step="1">
	<p>${i}.オレンジ</p>
</c:forEach>


<c:set var="color" value="赤,黄,青"/>

<c:forEach var="a" items="${color}" varStatus="s">
	<p>${s.index}-${s.count}-${a}</p>
</c:forEach>

</body>
</html>

2行目は、coreライブラリのタグを使用するときに必要です。

10-12行目は、変数iの値が1から3まで1ずつ増えて(増分1)ループします。
結果は以下のように表示されます。
1.オレンジ
2.オレンジ
3.オレンジ

17-19行目は、15行目の変数の値を1つずつ処理していきます。結果は以下のように表示されます。
0-1-赤
1-2-黄
2-3-青
indexは、0からカウントされます。
coutは、1からカウントされます。

 

7.<fmt:formatDate>タグ

i18nライブラリのタグです。

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
</head>
<body>

<c:set var="money" value="10000" />

<fmt:formatNumber value="${money}" pattern="##,###" var="a" />

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

<jsp:useBean id="date1" class="java.util.Date"/>

<p><fmt:formatDate value="${date1}" pattern="yyyy/MM/dd HH:mm:ss" /></p>
<p><fmt:formatDate value="${date1}" pattern="yyyy年MM月dd日E曜日 aKK時mm分ss秒" /></p>

</body>
</html>

3行目は、i18nライブラリのタグを使用するときに必要です。fmt:formatDateタグは表示形式を整えます。

13行目の#は数値を表示します。前ゼロの場合は表示しません。
結果は10,000と表示されます。

19行目は、年月日の表示をスラッシュ区切り、時分秒をコロン区切りで表示します。
→2018/04/01 09:46:46
20行目のEは曜日を、aは午前か午後を表します。
→2018年04月01日日曜日 午前00時46分46秒

関連の記事

Java サーブレットのセッションのサンプル(getSession)
Java サーブレット・JavaBeans・jsp・EL式のサンプル

△上に戻る