Jakarta EE JSPで条件分岐を行う方法を完全解説(c:if と c:choose を基礎から学ぶ)
生徒
「Jakarta EEのJSPで、条件によって表示を変えたいんですが、Javaのif文は使えますか?」
先生
「JSPではJavaのif文を書くこともできますが、JSTLの条件分岐タグを使うのが基本です。」
生徒
「JSTLの条件分岐って、どんな書き方をするんですか?」
先生
「c:if や c:choose を使うことで、JSPを分かりやすく安全に書けます。」
1. Jakarta EE JSPにおける条件分岐の考え方
Jakarta EEのJSPでは、画面に表示する内容を条件によって切り替える場面が頻繁にあります。 例えば、ログイン状態によってメッセージを変えたり、データが存在する場合だけ一覧を表示したりします。 初心者のうちはJavaのif文をJSPに直接書きたくなりますが、これは推奨されていません。 JSPは表示を担当し、条件分岐はJSTLタグで表現することで、画面構造が分かりやすくなります。
2. JSTLを使った条件分岐のメリット
JSTLを使う最大のメリットは、JSPからJavaコードを排除できる点です。 HTMLに近い形で条件分岐を記述できるため、初心者でも画面の流れを理解しやすくなります。 また、コードの可読性が向上し、後から修正する際のミスも減ります。 Jakarta EE JSP開発では、JSTLによる条件分岐が基本スタイルとして定着しています。
3. 条件分岐で使うJSTLコアタグの準備
JSTLの条件分岐タグを使うためには、JSPファイルの先頭でタグライブラリを宣言します。 この宣言によって、c:if や c:choose といったタグが使用可能になります。 毎回書く必要がありますが、JSTLを使うための大切な設定です。
<%@ taglib prefix="c" uri="jakarta.tags.core" %>
4. cifタグによるシンプルな条件分岐
c:ifタグは、最も基本的な条件分岐タグです。 指定した条件が真の場合のみ、タグの中身が表示されます。 Javaのif文と考え方は似ていますが、表示制御に特化している点が特徴です。 単純な表示切り替えには、まずc:ifを使うと良いでしょう。
request.setAttribute("login", true);
request.getRequestDispatcher("/sample.jsp").forward(request, response);
<c:if test="${login}">
<p>ログイン中です</p>
</c:if>
5. cifタグを使う際の注意点
c:ifタグは条件が一つの場合に向いています。 複数の条件を分けて書くこともできますが、条件が増えるとJSPが読みにくくなります。 表示に関する単純な判断だけを行い、複雑なロジックはServlet側で処理することが大切です。 JSTLは表示制御の補助として使う意識を持ちましょう。
6. cchooseタグによる複数条件の分岐
複数の条件から一つを選択したい場合には、c:chooseタグを使います。 これはJavaのif文とelse if文、else文を組み合わせたような構造です。 条件が多い場合でも、構造が整理され、JSPの可読性が高まります。 実務でもよく使われる重要なタグです。
request.setAttribute("role", "admin");
request.getRequestDispatcher("/role.jsp").forward(request, response);
<c:choose>
<c:when test="${role == 'admin'}">
<p>管理者画面です</p>
</c:when>
<c:when test="${role == 'user'}">
<p>一般ユーザー画面です</p>
</c:when>
<c:otherwise>
<p>ゲスト画面です</p>
</c:otherwise>
</c:choose>
7. cchooseとcifの使い分け
条件が一つだけの場合は、c:ifを使うのがシンプルです。 複数の条件から一つを選びたい場合は、c:chooseを使うことで構造が明確になります。 無理にc:ifを並べるよりも、適切なタグを選ぶことでJSPが読みやすくなります。 初心者のうちは、この使い分けを意識するだけでも大きな成長につながります。
8. 条件分岐をJSPで行う際の設計意識
Jakarta EE JSPで条件分岐を行う場合、表示に関する判断だけを書くことが重要です。 データの加工や複雑な判定はServletで行い、結果だけをJSPに渡します。 JSTLのc:ifやc:chooseは、その結果を画面に反映するための道具です。 この役割分担を守ることで、保守性の高いWebアプリケーションを作ることができます。