カテゴリ: Jakarta EE 更新日: 2025/12/29

Jakarta EE JSPで条件分岐を行う方法を完全解説(c:if と c:choose を基礎から学ぶ)

Jakarta EE JSPで条件分岐を行う方法(<c:if>, <c:choose>)
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における条件分岐の考え方

1. Jakarta EE JSPにおける条件分岐の考え方
1. Jakarta EE JSPにおける条件分岐の考え方

Jakarta EEのJSPでは、画面に表示する内容を条件によって切り替える場面が頻繁にあります。 例えば、ログイン状態によってメッセージを変えたり、データが存在する場合だけ一覧を表示したりします。 初心者のうちはJavaのif文をJSPに直接書きたくなりますが、これは推奨されていません。 JSPは表示を担当し、条件分岐はJSTLタグで表現することで、画面構造が分かりやすくなります。

2. JSTLを使った条件分岐のメリット

2. JSTLを使った条件分岐のメリット
2. JSTLを使った条件分岐のメリット

JSTLを使う最大のメリットは、JSPからJavaコードを排除できる点です。 HTMLに近い形で条件分岐を記述できるため、初心者でも画面の流れを理解しやすくなります。 また、コードの可読性が向上し、後から修正する際のミスも減ります。 Jakarta EE JSP開発では、JSTLによる条件分岐が基本スタイルとして定着しています。

3. 条件分岐で使うJSTLコアタグの準備

3. 条件分岐で使うJSTLコアタグの準備
3. 条件分岐で使うJSTLコアタグの準備

JSTLの条件分岐タグを使うためには、JSPファイルの先頭でタグライブラリを宣言します。 この宣言によって、c:if や c:choose といったタグが使用可能になります。 毎回書く必要がありますが、JSTLを使うための大切な設定です。


<%@ taglib prefix="c" uri="jakarta.tags.core" %>

4. cifタグによるシンプルな条件分岐

4. cifタグによるシンプルな条件分岐
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タグを使う際の注意点

5. cifタグを使う際の注意点
5. cifタグを使う際の注意点

c:ifタグは条件が一つの場合に向いています。 複数の条件を分けて書くこともできますが、条件が増えるとJSPが読みにくくなります。 表示に関する単純な判断だけを行い、複雑なロジックはServlet側で処理することが大切です。 JSTLは表示制御の補助として使う意識を持ちましょう。

6. cchooseタグによる複数条件の分岐

6. cchooseタグによる複数条件の分岐
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の使い分け

7. cchooseとcifの使い分け
7. cchooseとcifの使い分け

条件が一つだけの場合は、c:ifを使うのがシンプルです。 複数の条件から一つを選びたい場合は、c:chooseを使うことで構造が明確になります。 無理にc:ifを並べるよりも、適切なタグを選ぶことでJSPが読みやすくなります。 初心者のうちは、この使い分けを意識するだけでも大きな成長につながります。

8. 条件分岐をJSPで行う際の設計意識

8. 条件分岐をJSPで行う際の設計意識
8. 条件分岐をJSPで行う際の設計意識

Jakarta EE JSPで条件分岐を行う場合、表示に関する判断だけを書くことが重要です。 データの加工や複雑な判定はServletで行い、結果だけをJSPに渡します。 JSTLのc:ifやc:chooseは、その結果を画面に反映するための道具です。 この役割分担を守ることで、保守性の高いWebアプリケーションを作ることができます。

関連記事:
カテゴリの一覧へ
新着記事
New1
Play Framework
Play Frameworkでフォームデータをコントローラで扱う方法を完全解説|Java初心者向けコントローラ入門
New2
Jakarta EE
Jakarta EE JSPにおけるJSTLとスクリプトレットの違いと使い分けを初心者向けに徹底解説
New3
Play Framework
Play Frameworkでクエリパラメータをコントローラで処理する方法を完全解説|Java初心者向け入門
New4
Play Framework
Play FrameworkとSpring Bootの違いを徹底比較!初心者でもわかるJavaフレームワーク入門
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEのリリースサイクルとバージョンの進化をやさしく解説!
No.2
Java&Spring記事人気No2
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.3
Java&Spring記事人気No3
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.4
Java&Spring記事人気No4
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識
No.5
Java&Spring記事人気No5
Jakarta EE
Jakarta EE JSPでJSTL SQLタグを使った簡易データベースアクセスをやさしく解説
No.6
Java&Spring記事人気No6
Jakarta EE
Jakarta EE JSPにおけるJSTL国際化タグ(fmt:message)の使い方を初心者向けに完全解説
No.7
Java&Spring記事人気No7
Jakarta EE
Jakarta EE JSPでJSTLを使ったJSONやREST APIレスポンス処理を初心者向けにやさしく解説
No.8
Java&Spring記事人気No8
Play Framework
Play Frameworkでリクエストデータの受け取り方を完全解説|Java初心者向けコントローラ入門