ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
taglib とは
JSP(JavaServer Pages)の taglib ディレクティブは、独自または標準のタグライブラリを JSP に読み込むための宣言です。スクリプトレット(<% %>)の代わりにタグで処理を書けるため、HTML が読みやすくなります。
<%@ page contentType="text/html;charset=UTF-8" %>
<%-- JSTL Core を読み込む(Jakarta EE 9+) --%>
<%@ taglib uri="jakarta.tags.core" prefix="c" %>
<%-- Java EE 8 までは下記 --%>
<%-- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> --%>
こんにちは、 さん
JSTL(JSP Standard Tag Library)
標準的に使われる 5 つのタグライブラリの総称。最も使うのは Core (c) です。
| ライブラリ | prefix | 用途 |
|---|---|---|
| Core | c | 制御構造、変数、出力 |
| Formatting | fmt | 日付・数値・国際化 |
| SQL | sql | SQL 実行(非推奨) |
| XML | x | XML 処理 |
| Functions | fn | 文字列関数 |
Core タグの主要な使い方
<%@ taglib uri="jakarta.tags.core" prefix="c" %>
<%-- 変数セット --%>
<%-- 出力(HTML エスケープあり) --%>
<%-- エスケープ無効 --%>
<%-- if --%>
成人です
<%-- if-else --%>
優
良
不可
<%-- ループ --%>
${status.index}. ${item.name}
<%-- 数値ループ --%>
${i}
<%-- URL 生成 --%>
プロフィール
<%-- リダイレクト --%>
<%-- 例外処理 --%>
<%-- 危険な処理 --%>
エラー: ${err.message}
Formatting タグ(fmt)
<%@ taglib uri="jakarta.tags.fmt" prefix="fmt" %>
<%-- 日付フォーマット --%>
<%-- 数値フォーマット --%>
<%-- 国際化(i18n) --%>
Functions タグ(fn)— 文字列関数
<%@ taglib uri="jakarta.tags.functions" prefix="fn" %>
文字数: ${fn:length(user.name)}
小文字: ${fn:toLowerCase(email)}
含む: NG ワードあり
置換: ${fn:replace(text, '\n', '
')}
分割: ${t}
独自タグの作成: TLD ファイル
JSTL に無い処理は自分でタグを作れます。Java クラス + TLD(Tag Library Descriptor)ファイルで定義:
// src/main/java/com/example/tags/HelloTag.java
package com.example.tags;
import jakarta.servlet.jsp.JspException;
import jakarta.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
public class HelloTag extends SimpleTagSupport {
private String name;
public void setName(String name) { this.name = name; }
@Override
public void doTag() throws JspException, IOException {
getJspContext().getOut().write("Hello, " + name + "!");
}
}
1.0
my
http://example.com/mytags
hello
com.example.tags.HelloTag
empty
name
true
true
<%-- 使う側 --%>
<%@ taglib uri="http://example.com/mytags" prefix="my" %>
<%-- 出力: Hello, 山田! --%>
.tag ファイル(Java を書かないタグ)
Java クラスを書かず、JSP 風のテンプレートでタグを定義する方法もあります:
<%-- WEB-INF/tags/userCard.tag --%>
<%@ tag pageEncoding="UTF-8" %>
<%@ attribute name="user" required="true" type="com.example.User" %>
${user.name}
<%-- 使う側(tagdir で読み込み) --%>
<%@ taglib tagdir="/WEB-INF/tags" prefix="t" %>
Spring MVC の form タグ
Spring MVC では専用の spring-form.tld でフォームバインディングが書けます:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
氏名
JSP / JSTL の限界 → Thymeleaf へ
2026 年現在、新規 Java Web プロジェクトは Thymeleaf や React/Vue + REST が主流。JSP は保守案件で見かけるレベルです。
| 項目 | JSP + JSTL | Thymeleaf |
|---|---|---|
| HTML として開ける | ×(JSP タグが混ざる) | ○(純粋な HTML5) |
| 属性ベース | ×(タグ要素) | ○(th:if 等) |
| Spring Boot 標準 | × | ○ |
| 学習コスト | 普通 | 低い |
こんにちは、山田 さん
- サンプル
JSF (JavaServer Faces) との違い
| 項目 | JSP | JSF |
|---|---|---|
| テンプレート | HTML 混在の .jsp | XHTML(Facelets) |
| 状態管理 | セッションに自前で持つ | マネージドビーン |
| イベント | POST + パラメータ自前 | サーバーサイドイベント |
| 使用シーン | シンプルな表示 | 業務系の大規模 UI |
FAQ
Q: Jakarta EE 9 で uri が変わった?
A: はい。javax.* → jakarta.* 移行に伴い http://java.sun.com/jsp/jstl/core → jakarta.tags.core へ。Tomcat 10+ で必須。
Q: JSTL の jar はどこから取る?
A: Maven Central から jakarta.servlet.jsp.jstl-api + jakarta.servlet.jsp.jstl。Jakarta EE 9+ では jakarta.* 系を必ず選択。
Q: スクリプトレット(<% %>)は使うべき?
A: 非推奨です。ロジックはサーブレット / コントローラ側に書き、JSP は JSTL + EL のみで構成するのが現代的なベストプラクティス。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- include
- taglib
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?