JSTLライブラリのガイド
1. 概要
JavaServer Pagesタグライブラリ(JSTL)は、ループ、条件付き書式設定などの一般的な操作を実装するために使用できるタグのセットです。
このチュートリアルでは、JSTLのセットアップ方法と、その多数のタグの使用方法について説明します。
2. 設定
JSTL機能を有効にするには、プロジェクトにライブラリを追加する必要があります。 Mavenプロジェクトの場合、pom.xmlファイルに依存関係を追加します。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
ライブラリがプロジェクトに追加されたら、最終的なセットアップは、次のようなtaglibディレクティブを使用して、コアJSTLタグとその他のタグの名前空間ファイルをJSPに追加することです。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
次に、5つのカテゴリに大まかにグループ化されたこれらのタグを見ていきます。
3. コアタグ
JSTLコアタグライブラリには、値の出力、変数宣言、例外処理、反復の実行、条件文の宣言などの基本的な操作を実行するためのタグが含まれています。
コアタグを見てみましょう。
3.1. The 鬼ごっこ
value、default、escapeXMLの3つの属性があります。 escapeXML 属性は、value属性またはそのエンクロージャーに含まれる生のXMLタグを出力します。
の例
<c:out value="${pageTitle}"/>
3.2. The 鬼ごっこ
The
例は次の形式になります。
<c:set value="JSTL Core Tags Example" var="pageTitle"/>
3.3. The 鬼ごっこ
The
以下に、の使用例を示します
<c:remove var="pageTitle"/>
3.4. The 鬼ごっこ
The
一般的な使用法は次のようになります。
<c:catch var ="exceptionThrown">
<% int x = Integer.valueOf("a");%>
</c:catch>
そして、例外がスローされるかどうかを確認するために、
<c:if test = "${exceptionThrown != null}">
<p>The exception is : ${exceptionThrown} <br />
There is an exception: ${exceptionThrown.message}
</p>
</c:if>
3.5. The 鬼ごっこ
The
3.6. 、 と タグ
The
<c:set value="<%= Calendar.getInstance().get(Calendar.SECOND)%>" var="seconds"/>
<c:choose>
<c:when test="${seconds le 30 }">
<c:out value="${seconds} is less than 30"/>
</c:when>
<c:when test="${seconds eq 30 }">
<c:out value="${seconds} is equal to 30"/>
</c:when>
<c:otherwise>
<c:out value="${seconds} is greater than 30"/>
</c:otherwise>
</c:choose>
3.7. The 鬼ごっこ
The
url属性とvar属性を使用して、それぞれURLとURLからフェッチされたコンテンツを保持できます。 たとえば、次の方法でURLからコンテンツをインポートできます。
<c:import var = "data" url = "http://www.example.com"/>
3.8. The 鬼ごっこ
The
<c:forEach var = "i" items="1,4,5,6,7,8,9">
Item <c:out value = "No. ${i}"/><p>
</c:forEach>
3.9. The 鬼ごっこ
The
に似ている
<c:forTokens
items = "Patrick:Wilson:Ibrahima:Chris"
delims = ":" var = "name">
<c:out value = "Name: ${name}"/><p>
</c:forTokens>
3.10. と タグ
The
<c:url value = "/core_tags" var = "myURL">
<c:param name = "parameter_1" value = "1234"/>
<c:param name = "parameter_2" value = "abcd"/>
</c:url>
3.11. The 鬼ごっこ
The
<c:redirect url="/core_tags"/>
4. タグのフォーマット
JSTLフォーマットタグライブラリは、テキスト、数値、日付、時刻、およびその他の変数をフォーマットして表示を改善するための便利な方法を提供します。
JSTLフォーマットタグを使用して、Webサイトの国際化を強化することもできます。
これらのフォーマットタグを使用する前に、taglibをJSPに追加する必要があります。
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
さまざまなフォーマットタグとその使用方法を確認しましょう。
4.1. The 鬼ごっこ
The
<c:set var="now" value="<%= new java.util.Date()%>"/>
<fmt:formatDate type="time" value="${now}"/>
4.2. The 鬼ごっこ
The
違いは
日付を解析できます。
<c:set var="today" value="28-03-2018"/>
<fmt:parseDate value="${today}" var="parsedDate" pattern="dd-MM-yyyy"/>
4.3. The 鬼ごっこ
The
<c:set var="fee" value="35050.1067"/>
<fmt:formatNumber value="${fee}" type="currency"/>
4.4. The 鬼ごっこ
The
これは次のように使用できます。
<fmt:parseNumber var="i" type="number" value="${fee}"/>
4.5. The 鬼ごっこ
The
<fmt:bundle basename="com.baeldung.jstl.bundles.CustomMessage" prefix="verb.">
<fmt:message key="go"/><br/>
<fmt:message key="come"/><br/>
<fmt:message key="sit"/><br/>
<fmt:message key="stand"/><br/>
</fmt:bundle>
4.6. The 鬼ごっこ
The
<fmt:setBundle basename="com.baeldung.jstl.bundles.CustomMessage" var="lang"/>
4.7. The 鬼ごっこ
The
<fmt:setLocale value="fr_FR"/>
fr_FRは、この場合はフランス語のロケールを表します。
4.8. The 鬼ごっこ
The
このタイムゾーンパラメータは、value属性によって提供されます。 使用例を以下に示します。
<fmt:timeZone value="${zone}">
<fmt:formatDate value="${now}" timeZone="${zn}"
type="both"/>
</fmt:timeZone>
4.9. The 鬼ごっこ
The
<fmt:setTimeZone value="GMT+9"/>
4.10. The 鬼ごっこ
The
bundle属性を介して指定することもできるメッセージを検索するための特定のバンドル。
これは次のようになります。
<fmt:setBundle basename = "com.baeldung.jstl.bundles.CustomMessage" var = "lang"/>
<fmt:message key="verb.go" bundle="${lang}"/>
4.11. The 鬼ごっこ
The
使用する文字エンコードの名前は、 鍵の属性
以下の例を見てみましょう。
<fmt:requestEncoding value = "UTF-8" />
5. XMLタグ
JSTL XMLタグライブラリは、JSP内でXMLデータを操作するための便利な方法を提供します。
これらのXMLタグにアクセスできるようにするには、次の方法でタグライブラリをJSPに追加します。
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
JSTLXMLタグライブラリのさまざまなタグを見てみましょう。
5.1. The 鬼ごっこ
The
簡単な例は次のとおりです。
<x:out select="$output/items/item[1]/name"/>
上記の$output は、プリロードされたXSLファイルを指します。
5.2. The 鬼ごっこ
The
<x:parse xml="${xmltext}" var="output"/>
5.3. The 鬼ごっこ
The
<x:set var="fragment" select="$output//item"/>
5.4. The 鬼ごっこ
The
評価の結果は、var属性に保存できます。
簡単な使用例は次のようになります。
<x:if select="$output//item">
Document has at least one <item> element.
</x:if>
5.5. The 鬼ごっこ
The
ちょうどのように
したがって、次のようになります。
<ul class="items">
<x:forEach select="$output/items/item/name" var="item">
<li>Item Name: <x:out select="$item"/></li>
</x:forEach>
</ul>
5.6. 、 と タグ
The
以下に、サンプルのユースケースを示します。
<x:choose>
<x:when select="$output//item/category = 'Sneakers'">
Item category is Sneakers
</x:when>
<x:when select="$output//item/category = 'Heels'">
Item category is Heels
</x:when>
<x:otherwise>
Unknown category.
</x:otherwise>
</x:choose>
5.7. と タグ
The
XMLドキュメントまたは弦変換されるはに供給されます doc 適用されるXSLがに渡される間、属性 xslt の属性
簡単なユースケースは次の形式になります。
<c:import url="/items_xml" var="xslt"/>
<x:transform xml="${xmltext}" xslt="${xslt}">
<x:param name="bgColor" value="blue"/>
</x:transform>
6. SQLタグ
JSTL SQLタグライブラリは、リレーショナルデータベース操作を実行するためのタグを提供します。
JSTL SQLタグを有効にするには、taglibをJSPに追加します。
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
JSTL SQLタグは、MySQL、Oracle、MicrosoftSQLServerなどのさまざまなデータベースをサポートしています。
次に、使用可能なさまざまなSQLタグを確認します。
6.1. The 鬼ごっこ
The
これらの構成変数は、 ドライバー、URL、ユーザー、パスワードと情報源の属性
<sql:setDataSource var="dataSource" driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost/test" user="root" password=""/>
上記では、 var 属性は、関連付けられたデータベースを識別する値を保持します。
6.2. The 鬼ごっこ
The
<sql:query dataSource="${dataSource}" var="result">
SELECT * from USERS;
</sql:query>
6.3. The 鬼ごっこ
The
使用例は次のとおりです。
<sql:update dataSource="${dataSource}" var="count">
INSERT INTO USERS(first_name, last_name, email) VALUES
('Grace', 'Adams', '[email protected]');
</sql:update>
6.4. The 鬼ごっこ
The
<sql:update dataSource = "${dataSource}" var = "count">
DELETE FROM USERS WHERE email = ?
<sql:param value = "[email protected]" />
</sql:update>
6.5. The 鬼ごっこ
The
これは、JSPで次のように定義できます。
<sql:update dataSource = "${dataSource}" var = "count">
UPDATE Users SET registered = ? WHERE email = ?
<sql:dateParam value = "<%=registered%>" type = "DATE" />
<sql:param value = "<%=email%>" />
</sql:update>
以下のような
6.6. The 鬼ごっこ
The
<sql:transaction dataSource = "${dataSource}">
<sql:update var = "count">
UPDATE Users SET first_name = 'Patrick-Ellis' WHERE
email='[email protected]'
</sql:update>
<sql:update var = "count">
UPDATE Users SET last_name = 'Nelson' WHERE
email ='[email protected]'
</sql:update>
<sql:update var = "count">
INSERT INTO Users(first_name, last_name, email)
VALUES ('Grace', 'Adams', '[email protected]');
</sql:update>
</sql:transaction>
7. JSTL関数
JSTLメソッドは、JSP内のデータ操作のためのユーティリティです。 一部の関数は異なるデータ型を取りますが、それらのほとんどはString操作専用です。
JSPでJSTLメソッドを有効にするには、taglibをページに追加します。
<%@ taglib prefix = "fn"
uri = "http://java.sun.com/jsp/jstl/functions" %>
これらの関数とその使用方法を見てみましょう。
7.1. fn:contains()および fn:containsIgnoreCase()
fn:contains()メソッドは、 String を評価して、次のような特定のサブストリングが含まれているかどうかを確認します。
<c:set var = "string1" value = "This is first string"/>
<c:if test = "${fn:contains(string1, 'first')}">
<p>Found 'first' in string<p>
</c:if>
fn:contains()関数は2つのString引数を取ります。 最初の引数はソースStringで、2番目の引数はサブ文字列です。 評価の結果に応じてブール値を返します。
fn:containsIgnoreCase()関数は、 fn:contains()メソッドの大文字と小文字を区別しないバリアントであり、次のように使用できます。
<c:if test = "${fn:containsIgnoreCase(string1, 'first')}">
<p>Found 'first' string<p>
</c:if>
<c:if test = "${fn:containsIgnoreCase(string1, 'FIRST')}">
<p>Found 'FIRST' string<p>
</c:if>
7.3. fn:endsWith()関数
fn:endsWith()関数は、 String を評価して、そのサフィックスが別のサブストリングと一致するかどうかを確認します。 2つの引数が必要です。 最初の引数はStringであり、その接尾辞はテストされますが、2番目の引数はテストされた接尾辞です。
これは次のように定義できます。
<c:if test = "${fn:endsWith(string1, 'string')}">
<p>String ends with 'string'<p>
</c:if>
7.4. fn:escapeXml()関数
fn:escapeXML()関数は、次のように入力StringのXMLマークアップをエスケープするために使用されます。
<p>${fn:escapeXml(string1)}</p>
7.5. fn:indexOf()関数
fn:indexOf()関数は、 String を調べて、指定されたサブストリングの最初の出現のインデックスを返します。
2つの引数が必要です。 最初の引数はソースStringであり、2番目の引数は最初のオカレンスと一致して返すサブストリングです。
fn:indexOf()関数は整数を返し、次のように使用できます。
<p>Index: ${fn:indexOf(string1, "first")}</p>
7.6. fn:join()関数
fn:join()関数は、配列のすべての要素を単一の String に連結し、次のように使用できます。
<c:set var = "string3" value = "${fn:split(string1, ' ')}" />
<c:set var = "string4" value = "${fn:join(string3, '-')}" />
7.7. fn:length()関数
fn:length()関数は、指定されたコレクション内の要素数または指定されたString内の文字数を返します。
fn:length()関数は、コレクションまたは Stringのいずれかである単一のObjectを取り、次のような整数を返します。
<p>Length: ${fn:length(string1)}</p>
7.8. fn:replace()関数
fn:replace()関数は、文字列内のすべての部分文字列を別の文字列に置き換えます。
3つの引数が必要です。 ソースString、ソースで検索するサブストリング、および String は、次のようにサブストリングのすべての出現箇所を置き換えます。
<c:set var = "string3" value = "${fn:replace(string1, 'first', 'third')}" />
7.9. fn:split()関数
fn:split()関数は、指定された区切り文字を使用して、Stringに対して分割操作を実行します。 使用例は次のとおりです。
<c:set var = "string3" value = "${fn:split(string1, ' ')}" />
7.10. fn:startsWith()関数
fn:startsWith()関数は、 String のプレフィックスをチェックし、次のように指定されたサブストリングと一致する場合はtrueを返します。
<c:if test = "${fn:startsWith(string1, 'This')}">
<p>String starts with 'This'</p>
</c:if>
7.11. fn:substring()関数
fn:substring()関数は、指定された開始インデックスと終了インデックスでソースStringからサブストリングを作成します。 次のように使用します。
<c:set var = "string3" value = "${fn:substring(string1, 5, 15)}" />
7.12. fn:substringAfter()関数
fn:substringAfter()関数は、ソース String で指定されたサブストリングをチェックし、指定されたサブストリングが最初に出現した直後にStringを返します。
次のように使用します。
<c:set var = "string3" value = "${fn:substringAfter(string1, 'is')}" />
7.13. fn:substringBefore()関数
fn:substringBefore()関数は、ソース String で指定されたサブストリングをチェックし、指定されたサブストリングが最初に出現する直前にStringを返します。
JSPページでは、次のようになります。
<c:set var = "string3" value = "${fn:substringBefore(string1, 'is')}" />
7.14. fn:toLowerCase()関数
fn:to LowerCase()関数は、 String 内のすべての文字を小文字に変換し、次のように使用できます。
<c:set var = "string3" value = "${fn:toLowerCase(string1)}" />
7.15. fn:toUpperCase()関数
fn:toUpperCase()関数は、String内のすべての文字を大文字に変換します。
<c:set var = "string3" value = "${fn:toUpperCase(string1)}" />
7.16. fn:trim()関数
fn:trim()関数は、 String:の前後の空白を削除します
<c:set var = "string1" value = "This is first String "/>
9. 結論
この広範な記事では、さまざまなJSTLタグとその使用方法について説明しました。
いつものように、コードスニペットはGitHubのにあります。