カテゴリ: jsp 更新日: 2026/01/07

JSPのディレクティブタグ<%@ %>とは?page・include・taglibの使い方を完全解説

JSPのディレクティブタグ(<%@ %>)とは?page・include・taglibを徹底解説
JSPのディレクティブタグ(<%@ %>)とは?page・include・taglibを徹底解説

先生と生徒の会話形式で理解しよう

生徒

「JSPファイルに<%@ %>って書いてあるのを見たんですけど、これは何ですか?」

先生

「それはJSPのディレクティブタグと呼ばれるもので、JSPページに対する命令を設定するために使われます。」

生徒

「ディレクティブタグには種類があるんですか?」

先生

「はい、代表的なものにpageディレクティブ、includeディレクティブ、taglibディレクティブの3つがあります。それぞれ詳しく見ていきましょう。」

1. JSPのディレクティブタグとは?

1. JSPのディレクティブタグとは?
1. JSPのディレクティブタグとは?

JSP(JavaServer Pages)の<%@ %>タグは、「ディレクティブタグ」と呼ばれ、JSPページ全体に影響を与える設定や命令を記述するために使用されます。Javaクラスのインポートやエラーページの指定、外部ファイルの読み込み、カスタムタグの登録など、JSPの動作に深く関わる要素です。

ディレクティブタグには、次の3種類があります。

  • pageディレクティブ:ページに関する設定を行う
  • includeディレクティブ:静的に別ファイルを取り込む
  • taglibディレクティブ:JSPでカスタムタグライブラリを使用する

それぞれのディレクティブタグの役割と使い方を、次のセクションで詳しく解説していきます。

2. pageディレクティブでJSPの基本設定をしよう

2. pageディレクティブでJSPの基本設定をしよう
2. pageディレクティブでJSPの基本設定をしよう

pageディレクティブは、JSPページの動作に関する基本設定を指定します。たとえば、文字エンコーディング、インポートするクラス、例外処理の設定などが可能です。

よく使われる属性には、以下のようなものがあります:

  • contentType:出力するコンテンツのMIMEタイプと文字エンコーディング
  • import:Javaのクラスをインポート
  • errorPage:エラー時に遷移するJSPの指定
  • isErrorPage:そのページがエラーページかどうか

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.util.Date, java.text.SimpleDateFormat" %>
<%@ page errorPage="error.jsp" %>
<%@ page isErrorPage="true" %>

インポートの複数指定はカンマ区切りで書けます。Javaで日付を表示するなど、実際の処理で必要なクラスを明示的に指定しましょう。

3. includeディレクティブでJSPファイルを統合しよう

3. includeディレクティブでJSPファイルを統合しよう
3. includeディレクティブでJSPファイルを統合しよう

includeディレクティブは、他のJSPファイルやHTMLファイルを静的に読み込むためのタグです。ヘッダーやフッターなど、共通部分のレイアウトを再利用するのに便利です。


<%@ include file="header.jsp" %>
<%@ include file="footer.jsp" %>

このように指定すると、header.jspfooter.jspの内容が、コンパイル時にそのまま読み込まれ、ページの一部として扱われます。

ポイント:これは静的インクルードと呼ばれ、コンパイル時に統合されるため、サーバー処理の効率も良いです。

4. taglibディレクティブでJSTLやカスタムタグを使う

4. taglibディレクティブでJSTLやカスタムタグを使う
4. taglibディレクティブでJSTLやカスタムタグを使う

taglibディレクティブは、JSTL(JSP Standard Tag Library)や独自に作成したカスタムタグを使用する際に必要な宣言です。

タグライブラリを指定するには、uriprefixの属性を設定します。


<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

上記の例では、JSTLのcoreライブラリをcというプレフィックスで使えるようにしています。たとえば以下のように使用できます。


<c:if test="${user != null}">
    <p>こんにちは、${user.name}さん</p>
</c:if>

補足:JSTLを使うには、ライブラリをプロジェクトに追加しておく必要があります。Tomcatなどの環境ではjstl.jarなどをWEB-INF/libに配置しましょう。

5. scriptletとの違いを理解して安全なコードを

5. scriptletとの違いを理解して安全なコードを
5. scriptletとの違いを理解して安全なコードを

JSPには<% %>で囲むscriptlet(スクリプトレット)というJavaコードを直接記述する方法もありますが、ディレクティブタグとは明確に異なります。

ディレクティブ:JSPの設定に使う

スクリプトレット:JSP内で処理を記述する


<% 
    String name = "Taro"; 
%>
<p>こんにちは、<%= name %>さん</p>

スクリプトレットはメンテナンス性やセキュリティの観点から非推奨です。できるだけJSTLやEL(式言語)を使うようにしましょう。

6. よくあるエラーと注意点

6. よくあるエラーと注意点
6. よくあるエラーと注意点

JSPのディレクティブタグを使う際に注意すべき点もいくつかあります。

  • ファイルパスの誤り:includeで指定するパスはルート相対や同階層を意識する
  • エンコーディングの設定忘れ:contentTypecharset=UTF-8を明示する
  • 複数のimportをまとめるときのカンマ忘れ:スペースで区切っても認識されない
  • JSTLのURIのミス:正確なURLで指定しないと読み込めない

これらを理解しておくと、JSP開発時のトラブルを防ぎやすくなります。

まとめ

まとめ
まとめ

JSPのディレクティブタグは、JSPページ全体の動作をコントロールするために欠かせない仕組みであり、この記事で扱ったpageincludetaglibは、特に実務でも頻繁に登場する重要な要素でした。それぞれのディレクティブがどのようにページの設定に関わり、どの場面で利用されるのかを丁寧に理解しておくことで、JSPを用いたWebアプリケーション開発が格段に安定し、効率の良い実装へとつながります。

pageディレクティブでは、エンコーディングの指定やクラスのインポート、例外処理の設定など、JSPページの性質そのものを定義できるため、最初に目を通すべき設定として知られています。特にcontentTypeimporterrorPageなどは、多くのプロジェクトで繰り返し使われる基本項目です。また、JSPを運用する上ではエラーページやログ出力の設定を行うことで保守性が高まり、予期せぬ動作が起きた際の原因究明にも役立ちます。

一方のincludeディレクティブは、サイト全体のレイアウトを統一したり、共通部品を複数ページで再利用したい場面で威力を発揮します。コンパイル時に内容を統合する静的インクルードは、処理効率が高く、負荷の大きいページでも安定した動作が期待できます。ヘッダーやフッターの共通化はもちろんのこと、設定ファイルやメニューなどの定型パーツを分割して整理することで、大規模なページ構成でも見通しの良い整理しやすい構造を実現できます。

taglibディレクティブは、JSTLをはじめとしたカスタムタグを利用するための宣言に使われます。データの繰り返し処理や条件分岐、日付フォーマットなど、JSPの中でロジックに近い処理を書きたい場面でも、スクリプトレットではなくタグベースで記述できるため、読みやすさと安全性が大きく向上します。特に、c:ifc:forEachのような基本構文は、現代的なJSP開発では欠かせない技術です。

近年のWebアプリケーション開発では、テンプレートエンジンやフレームワークが普及しているものの、JSPの仕組みやディレクティブタグの役割を理解しておくことは、Webアプリケーションの基礎としてとても価値があります。実際の開発現場では、JSPを直接編集する機会が依然として多く、特に保守や改修の仕事では、既存のJSPコードの理解が求められる場面が多くあります。その際、ディレクティブがページ全体の設定にどのように作用しているのかを把握しておくことは欠かせません。

ディレクティブタグを理解するための確認サンプル


<%@ page contentType="text/html; charset=UTF-8" import="java.time.LocalDate" %>
<%@ include file="header.jsp" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
<head>
    <title>ディレクティブ確認ページ</title>
</head>
<body>

<h3>本日の日時</h3>
<p>
    <%-- Javaの処理を使って日付を表示 --%>
    <%= LocalDate.now() %>
</p>

<c:if test="${user != null}">
    <p>こんにちは、${user.name}さん</p>
</c:if>

</body>
</html>

このサンプルでは、ページ設定、共通パーツ読み込み、タグライブラリ利用という、ディレクティブの基本がすべて盛り込まれています。特に複数の技術を組み合わせることでJSPがどのように動作するのかを理解しやすくなるため、開発初心者の学習にも効果的です。共通化・整理・再利用性を高めることで、プロジェクト全体の品質が向上し、保守コストの削減にもつながるため、実践でも大いに役立ちます。

先生と生徒の振り返り会話

生徒

「ディレクティブってただの設定だと思っていましたけど、JSP全体の動きを変える大事な要素だったんですね…!」

先生

「そうです。しかもpageincludetaglibの三つは、ほぼすべてのJSPで使われると言っても過言ではありません。」

生徒

「特にincludeディレクティブが便利だと思いました!共通部分をまとめられるとページ管理がしやすそうです。」

先生

「その通りです。共通パーツを分けると、変更も一箇所で済むためミスも減ります。taglibも覚えておくとより洗練されたJSPを書けますよ。」

生徒

「今日の内容で、JSPの見え方や動作の仕組みがすごく理解しやすくなりました!」

先生

「良いですね。ディレクティブを正しく使えると、今後のJSP開発がとても楽になりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

JSPのディレクティブタグとは何ですか?初心者にも分かりやすく教えてください。

JSPのディレクティブタグは、JSPページ全体の設定や動作を制御するための特殊な命令タグで、<%@ %>という形式で記述します。文字コードやクラスのインポート、ファイルの読み込みなど、ページの振る舞いを定義できます。
関連記事:
カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.3
Java&Spring記事人気No3
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法