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式のサンプル