
EL式では、条件分岐やループ文と組み合わせて使うことができませんでした。
そんな問題を解決してくれるタグとしては、カスタムタグの「JSTL」になります。
カスタムタグとは?
JSPの標準アクション(<jsp:include>等)では、実現できないような処理を記述できる独自のタグ(アクション)のことです。
カスタムタグのメリット
- EL式では、組み合わせれなかった条件分岐や、ループ文を実装することができる。
- スクリプトレット(<% ~ %>)より、再利用が簡単
- スクリプトレット(<% ~ %>)より、コードが見やすい。
他には、スクリプトではなく、タグなので、プログラマーと、HTMLをいじるWebデザイナーが、分業しやすいと言われていますが、実際の所どうなんでしょうね…。
(デザイナーは、基本的に、タグだとしてもスクリプト部分は触らないイメージがあります。)
JSTLとは?
ただ、実際の開発ではカスタムタグを一から書くことはほぼありません。
良く使う処理とかをサードパーティのライブラリとしての位置づけで用意した物のことを、「JSTL」と呼びます。
JSTLを使うには?
下記のJSTLを配布しているサイトにアクセスし、downloadをクリックします。
https://tomcat.apache.org/taglibs/standard/
下記の3つのJARファイルをダウンロードします。
使いたいWEBアプリのWEB-INFのlibの下に配置します。
ためしに、「Hello World」と出力してみます。JSTLの「<c:out>」というタグを使います。
<%@page contentType="text/html; charset=UTF-8" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <HTML> <HEAD> <TITLE>JSTLTest</TITLE> </HEAD> <BODY> <c:out value="Hello World" /> </BODY> </HTML>
出力結果
以下のように、「Hello World」と出力されていることを確認できました。
JSTLの種類
JSTLは、複数の機能が集まって提供されています。
タグの種類 | 説明 | 接頭辞 |
---|---|---|
Core | 一番よく使います。(変数、繰り返し、条件分岐等基本的なタグが入っています。) | c |
XML processing | XML文書の操作を行います。 | x |
I18N | 数値、日付等のフォーマットを行うタグ、国際化をサポートしている。 | fmt |
SQL | JSPで、DB接続を行えるタグ、非常に簡単にSQLの記述ができる。 | sql |
Functions | 文字列加工等の関数を提供している。 | fn |
この中でも、よく使われるJSTLとしては、Coreタグになります。
JSPでの宣言方法
下記のようにして、taglibの宣言を行う必要があります。
coreタグの場合
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core">
prefixに「c」とつけていますが、ぶっちゃけ何でもいいですが、慣習的にJSTLのコアタグを使う場合は、「c」をつけましょう。
uriは、タグライブラリのドキュメント等で、指定されていますが、コアタグであれば上記になります。
Coreタグの一覧
一番使うのは、コアタグですので、コアタグの一覧をご紹介します。
変数系
タグ | 説明 |
---|---|
c:set | スコープを変数にセットする。 |
c:remove | スコープ変数を削除する。 |
フロー制御
これが、EL式単体では実現できないため、JSTLで一番よく使うタグになるでしょう。
タグ | 説明 |
---|---|
c:if | 条件分岐 |
c:choose | 複数の条件分岐 |
c:forEach | ループ |
c:forTokens | 文字列の走査 |
具体的な、タグの使い方としては、下記の記事で解説しています。
URL管理
タグ | 説明 |
---|---|
c:import | <jsp:include>と機能は似ている。あわせて、サーバー外リソースもインクルードできる。 |
c:redirect | リダイレクトできる。 |
c:url | リンク等のURLの生成が可能。 |
その他
タグ | 説明 |
---|---|
c:catch | エラーをキャッチする。 |
c:out | 出力を行う。(EL式での出力に比べると、自動エスケープを行ってくれるので便利) |
この記事へのコメントはありません。