JSPディレクティブ

⚡ スマートサマリー

JSPディレクティブは、JSPコンテナへのメッセージであり、ページ全体に関するグローバルな情報を提供し、サーブレットコードへの変換時に指示を与えます。ディレクティブには、page、include、taglibの3種類があり、それぞれ特別なタグ内に記述されます。

  • 📢 指令の定義: JSPコンテナへのメッセージで、ページ全体に適用される翻訳指示を記述します。
  • 🧭 XNUMX つのタイプ: ページ、インクルード、タグライブラリのディレクティブはすべて <%@ %> タグ内に記述します。
  • 📄 ページディレクティブ: 言語、インポート、コンテンツタイプ、セッション、バッファ、エラーページ、およびその他のページ属性を設定します。
  • 📎 指示を含める: 翻訳時に、別のファイル(HTML、JSP、またはテキスト)をページにマージします。
  • 🏷️ Taglibディレクティブ: カスタムタグを有効にするためのURIとプレフィックスを指定してタグライブラリを宣言します。

JSPディレクティブ

JSP ディレクティブとは何ですか?

  • JSP ディレクティブは、JSP コンテナへのメッセージです。 これらは、JSP ページ全体に関するグローバル情報を提供します。
  • JSP ディレクティブは、JSP をサーブレット コードに変換するための特別な指示をコンテナに与えるために使用されます。
  • JSP ライフサイクル フェーズでは、JSP をサーブレットに変換する必要があります。これが変換フェーズです。
  • これらは、JSP 処理の特定の側面を処理する方法についてコンテナに指示を与えます。
  • ディレクティブには、キーと値のペアとしてカンマで区切られた多くの属性を含めることができます。
  • JSPでは、ディレクティブは次のように記述されます。 <%@ %> タグ。

ディレクティブの構文:

<%@ directive attribute="" %>

JSP のディレクティブの種類

JSP には 3 種類のディレクティブがあります。

  1. ページディレクティブ
  2. インクルードディレクティブ
  3. タグリブディレクティブ

それぞれの例を以下に詳しく説明します。

1) JSPページディレクティブ

Page ディレクティブの構文:

<%@ page…%>
  • JSP ページ全体に適用される属性を提供します。
  • スクリプト言語、エラー ページ、バッファリング要件などのページに依存する属性を定義します。
  • これは、現在の JSP ページに関連するコンテナに指示を提供するために使用されます。

以下は、ページ ディレクティブに関連付けられた属性のリストです。

  1. 言語
  2. 拡張する
  3. インポート
  4. contentType
  5. info
  6. セッション
  7. スレッドセーフです
  8. 自動フラッシュ
  9. バッファ
  10. IsErrorPage
  11. ページエンコーディング
  12. エラーページ
  13. 無視されています

各属性の詳細

1) 言語: それは定義します プログラミング言語 (基礎となる言語) ページで使用されています。

言語の構文:

<%@ page language="value" %>

ここでの値はプログラミング言語 (基礎となる言語) です。

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

コードの説明: 上記の例では、属性言語の値は次のとおりです。 Java この場合の基礎となる言語です。 したがって、式タグ内のコードは Java コンパイラを使用してコンパイルされます。

2) 拡張する: この属性は、Javaのようにクラスを拡張(継承)するために使用されます。

extends の構文:

<%@ page extends="value" %>

ここで、値は継承元のクラスを表します。

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
       pageEncoding="ISO-8859-1"%>

<%@ page extends="demotest.DemoClass" %>

コードの説明: 上記のコードでは、JSP は、demotest パッケージ内の DemoClass を拡張しており、すべてのクラス機能を拡張します。

3) インポート: この属性は、ページディレクティブ属性の中で最もよく使用される属性です。サーブレットコードを生成する際に、コンテナに他のJavaクラス、インターフェース、列挙型などをインポートするように指示するために使用されます。Javaクラスやインターフェースのimport文に似ています。

import の構文:

<%@ page import="value" %>

ここでの値は、インポートする必要があるクラスを示します。

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    import="java.util.Date" pageEncoding="ISO-8859-1"%>

コードの説明:

上記のコードでは、java.util パッケージ (すべてのユーティリティ クラス) から Date クラスをインポートしており、次のクラスのすべてのメソッドを使用できます。

4) コンテンツタイプ:

  • 文字エンコーディング スキームを定義します。つまり、コンテンツ タイプと応答の文字セットを設定するために使用されます。
  • contentTypeのデフォルトタイプは "text/html; charset=ISO-8859-1".

contentType の構文:

<%@ page contentType="value" %>

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

コードの説明:

上記のコードでは、コンテンツ タイプは text/html として設定され、JSP と生成される応答ページの文字エンコーディングが設定されます。

5) 情報

  • getServletInfo() メソッドでアクセスできる文字列を定義します。
  • この属性は、サーブレットの説明を設定するために使用されます。

情報の構文:

<%@ page info="value" %>

ここで、値はサーブレット情報を表します。

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>

コードの説明:

上記のコードでは、文字列「Guru ディレクティブ「JSP」は、getServletInfo() を使用してサーブレットインターフェースから取得できます。

6) セッション

  • JSP ページはデフォルトでセッションを作成します。
  • JSP でセッションを作成する必要がない場合もあります。その場合は、この属性を false に設定できます。セッション属性のデフォルト値は true で、セッションが作成されます。false に設定すると、デフォルトでセッションを作成しないようにコンパイラに指示できます。

セッションの構文:

<%@ page session="true/false"%>

この場合、セッション属性は true または false に設定できます。

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    session="false"%>

コードの説明:

上の例では、セッション属性が「false」に設定されているため、この JSP でセッションを作成したくないことを示しています。

7) スレッドセーフ:

  • 生成されたサーブレットのスレッド モデルを定義します。
  • これは、ページに実装されているスレッド セーフティのレベルを示します。
  • デフォルト値はtrueなので、同時に
  • この属性を使用して、生成されたサーブレットに SingleThreadModel インターフェイスを実装できます。
  • false に設定すると、SingleThreadModel が実装され、共有オブジェクトにアクセスできるようになり、不整合が生じる可能性があります。

isThreadSafe の構文:

<% @ page isThreadSafe="true/false" %>

ここで、true または false は、同期が存在するかどうかを表し、同期が存在する場合は true に設定し、同期が存在する場合は false に設定します。

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    isThreadSafe="true"%>

コードの説明:

上記のコードでは、isThreadSafe が「true」に設定されているため、同期が行われ、複数のスレッドを使用できます。

8) 自動フラッシュ:

この属性は、バッファリングされた出力を自動的にフラッシュするかどうかを指定します。この属性のデフォルト値は true です。値が false に設定されている場合、バッファは自動的にフラッシュされず、いっぱいの場合は例外が発生します。バッファがない場合、false は不正であり、バッファリングは行われないため、自動的にフラッシュされます。

autoFlush の構文:

<% @ page autoFlush="true/false" %>

ここでtrue/falseはバッファリングを行う必要があるかどうかを表します

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    autoFlush="false"%>

コードの説明:

上記のコードでは、自動フラッシュが false に設定されているため、バッファリングは実行されず、出力が手動でフラッシュされます。

9) Buffer:

  • この属性を使用すると、出力応答オブジェクトをバッファリングできます。
  • この属性を使用してバッファリングのサイズを定義できます。デフォルトのサイズは 8KB です。
  • 応答オブジェクトに書き込む前に、サーブレットにバッファを書き込むように指示します。

バッファの構文:

<%@ page buffer="value" %>

ここでの値は定義する必要があるバッファのサイズを表します。バッファがない場合はnoneと記述できます。値を何も指定しない場合は、デフォルトは8KBです。

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    buffer="16KB"%>

コードの説明:

上記のコードでは、バッファサイズは16KBと記載されており、バッファはそのサイズになります。

10) isErrorPage:

  • errorPage を持つ JSP ページが別の JSP ページでチェックされることを示します
  • 「isErrorPage」属性で宣言された JSP ファイルは、エラー ページがある他の JSP ページから例外を受け取ることができます。
  • 例外はこれらのページでのみ利用可能です。
  • デフォルト値は false です。

isErrorPage の構文:

<%@ page isErrorPage="true/false"%>

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    isErrorPage="true"%>

コードの説明:

上記のコードでは、isErrorPage が true に設定されています。 したがって、他の JSP に errorPage (次の属性で説明) 属性が設定されており、例外を処理できるかどうかがチェックされます。

11) ページエンコーディング:

「pageEncoding」属性は、JSP ページの文字エンコーディングを定義します。他に指定がない場合は、デフォルトで「ISO-8859-1」が指定されます。

pageEncoding の構文:

<%@ page pageEncoding="vaue" %>

ここでの value は、JSP の文字セット値を指定します。

例:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isErrorPage="true"%>

コードの説明:

上記のコードでは、「pageEncoding」がデフォルトの文字セット ISO-8859-1 に設定されています。

12) エラーページ:

この属性は、JSP が例外をスローし、例外ページにリダイレクトする場合に、JSP ページのエラー ページを設定するために使用されます。

errorPage の構文:

<%@ page errorPage="value" %>

ここでの値は、エラー JSP ページの値を表します。

例:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    errorPage="errorHandler.jsp"%>

コードの説明:

上記のコードでは、例外を処理するために errroHandler.jsp を使用しています。

13) 無視される:

  • IsELIgnored は、EL タグを無視するかどうかを決定する必要があるフラグ属性です。
  • データ型は Java enum で、デフォルト値は false であるため、EL はデフォルトで有効になります。

isELIgnored の構文:

<%@ page isELIgnored="true/false" %>

ここで、true/falseはELを無視するかどうかの値を表します。

例:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isELIgnored="true"%>

コードの説明:

上記のコードでは、isELIgnored は true であるため、 表現言語(EL) ここでは無視されます。以下の例では、4つの属性を使用しています(コード行1~2)。

XNUMX つの属性の例

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isELIgnored="false"%>
 <%@page import="java.util.Date" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Directive Guru JSP1</title>
</head>
<body>
<a>Date is:</a>
<%= new java.util.Date() %>
</body>
</html>

コードの説明:

Code 1〜2行目: ここでは XNUMX つの属性を定義しました。

  • 言語: として設定されています Java プログラミング言語として
  • contentType: text/html として設定して、html 形式である必要があることをコンパイラーに伝えます。
  • pageEncoding: デフォルトの文字セットはこの属性に設定されます
  • isELIgnored: 式タグは false であるため無視されません

Code ライン3: ここではimport属性を使用しており、これは「Dateクラス」をインポートしています。 Java util パッケージを使用して、コード内で現在の日付を表示しようとしています。

上記のコードを実行すると、次の出力が得られます。

JSPページディレクティブ

出力:

  • 日付: date クラスの date メソッドを使用した現在の日付

2) JSPインクルードディレクティブ

  • JSPの「includeディレクティブ」(コード行8)は、あるファイルを別のファイルに含めるために使用されます。
  • インクルードされるファイルは、HTML、JSP、テキストファイルなどです。
  • また、ユーザービューを含むテンプレートを作成したり、ページをヘッダーとフッター、サイドバーのアクションに分割したりする際にも役立ちます。
  • 翻訳フェーズ中にファイルが含まれます

include ディレクティブの構文:

<%@ include….%>

例:

Directive_jsp2.jsp(メインファイル)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ include file="directive_header_jsp3.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Directive JSP2</title>
</head>
<body>
<a>This is the main file</a>
</body>
</html>

Directive_header_jsp3.jsp (メインファイルに含まれています)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

</head>
<body>
<a>Header file : </a>
<%int count =1; count++;
out.println(count);%> :
</body>
</html>

コードの説明:

ディレクティブ_jsp2.jsp:

Code ライン3: このコードでは、include タグを使用して、ファイル directive_header_jsp3.jsp をメインファイル (_jsp2.jsp) に含め、メインファイルとインクルードされたファイルの両方の出力を取得します。

Directive_header_jsp3.jsp:

Code 11〜12行目: 変数countを1で初期化し、その後インクリメントしました。これにより、メインファイルに以下のような出力が得られます。

上記のコードを実行すると、次の出力が得られます。

JSP インクルードディレクティブ

出力:

  • 出力はヘッダー ファイルです: 2 : これはメイン ファイルです
  • 出力は directive_jsp2.jsp ファイルから実行され、directive_header_jsp3.jsp に含まれるファイルが最初にコンパイルされます。
  • インクルードされたファイルが完了した後、メインファイルが実行され、「これがメインファイルです」というメインファイルからの出力が行われます。 したがって、_jsp2.jsp からは「Header file: 3」、_jsp2.jsp からは「This is main file」として出力が得られます。

3) JSP タグライブラリディレクティブ

  • JSPのtaglibディレクティブは、プレフィックスとして「taglib」を付けたタグライブラリを定義するために使用されます。これは、 JSP.
  • 詳細については、「JSP カスタム タグ」セクションで説明します。
  • JSP taglib ディレクティブは、JSP 標準タグ ライブラリを使用する JSP ページで使用されます。
  • 一連のカスタム タグを使用してライブラリの場所を特定し、JSP ページ内のカスタム タグを識別する手段を提供します。

taglib ディレクティブの構文:

<%@ taglib uri="uri" prefix="value"%>

ここで、「uri」属性はタグライブラリ記述子の一意の識別子であり、「prefix」属性はタグ名です。

例:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="gurutag" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Directive JSP</title>
<gurutag:hello/>
</head>
<body>
</body>
</html>

コードの説明:

Code ライン3: ここで、「taglib」は属性 uri と prefix で定義されています。

Code ライン9: 「gurutag」は定義されたカスタムタグであり、どこでも使用できます

よくあるご質問

include ディレクティブは翻訳時にファイルをマージするため、変更を加えると再コンパイルが必要になります。一方、jsp:include アクションはリクエスト時にファイルのレスポンスをインクルードするため、動的で頻繁に変更されるコンテンツに適しています。

import 属性はコンテナに Java サーブレットコードを生成する際にインポートするクラス、インターフェース、またはパッケージ。通常のインポート文と同様。 Java クラスなので、そのメソッドはページ内で利用できます。

JSPディレクティブは、JSPページがサーブレットに変換される際の変換時に処理されます。これらは、各リクエスト時に出力を生成するのではなく、サーブレットの生成方法に影響を与えます。

AI は、平易な言葉による説明から適切な属性を持つ正しいページ、インクルード、またはタグライブラリディレクティブを提案し、各属性を説明し、よくある間違いを指摘することができます。ping 初心者でもJSPページをより速く、より正確に設定できます。

はい。AI は JSP ファイルをスキャンして、無効な属性値、バッファが none で autoFlush false のような競合する設定、欠落したエラー ページ、重複したディレクティブなどを検出できます。ping 開発者はデプロイ前に設定上の問題を特定します。