7.1 c:if、c:forEach
Java コードの代わりにタグを使用したコードが全員に気に入ったため、範囲を拡大することにしました。しかし、プログラミングはオブジェクトの作成とそのプロパティの読み取りだけに限定されません。オブジェクトのメソッドを呼び出し、データベースや他のサービスを操作する必要があります。何をすべきか?
各 Java ステートメントをタグとして表す必要があるだけです。だっif
た、これからだ<if>
、だっfor
た、<for>
だろうなど。わかった、わかった、冗談だよ、そんなことはなかった。まあ、人々が実際にそうすることを決定することはできません。でも、いや、もしかしたら!
プログラマーはコードにタグを追加することができました。基本的には心配する必要はありません。JSP は拡張可能な標準です。しかし、彼らはさらに進んで、JSP 標準タグ ライブラリ (JSTL) をリリースしました。このページは次のようになります。
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> JSTL Example</title>
</head>
<body>
<c:set var = "salary" scope = "session" value = "${2000*5}"/>
<c:if test = "${ salary > 2000}">
<p>My salary is: <c:out value = "${salary}"/><p>
</c:if>
</body>
</html>
将来のプロジェクトでそのようなコードに遭遇する可能性は十分にあります。そこでいくつか説明します。
7.2 JSTL関数
JSTL 関数は 5 つのカテゴリに分類されます。
- 主なタグ。
- タグの書式設定。
- SQL タグ。
- XML タグ。
- 関数の呼び出し。
すべてをリストするわけではありませんが、最も人気のあるものをリストします。主要なタグから始めましょう:
1 | <c:out> |
指定された式を出力します - <%= %> に相当します |
2 | <c:set> |
式の結果を変数に書き込みます |
3 | <c:remove> |
変数を削除します |
4 | <c:catch> |
例外をキャッチします |
5 | <c:if> |
if の類似物 |
6 | <c:choose> |
アナログスイッチ |
7 | <c:when> |
選択と一緒に使用されます |
8 | <c:otherwise> |
選択と一緒に使用されます |
9 | <c:import> |
コードにコンテンツを含めることができます (インポート ディレクティブと同等) |
10 | <c:forEach> |
ループごとに |
十一 | <c:param> |
インポートのオプションを設定できます |
12 | <c:redirect> |
リダイレクト |
13 | <c:url> |
パラメータを使用して URL を作成します |
一つだけ例を挙げて終わりにします。原則として、ある程度のスキルがあれば、そのようなコードを読むことはかなり可能です。しかし、書くことはお勧めしません。
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> Each Tag Example&</title>
</head>
<body>
<c:forEach var = "i" begin = "1" end = "5">
Item <c:out value = "${i}"/><p>
</c:forEach>
</body>
</html>
考えてみてください。Java コードはタグの形式で記述されているため、JSP パーサーはこれらのタグを Java コードに変換します。この世界では何かが間違っています。
ちなみに、独自のタグ ライブラリを作成することもできます。私も彼らがいるプロジェクトで働いたこともあります。素晴らしい経験です。ライブラリに変更が加えられると、すぐに JSP 全体が壊れます。
なんでしょう?コンパイラはそのような変更を追跡しません。これらは、生成された HTML ページを表示するときにのみ視覚的に見つけることができます。そして、これらが重要な状況で発生するまれなシナリオであるとしたら...バックエンド開発と静的型付けに神のご加護がありますように!