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 クラス、インターフェイスのインポート ステートメントに似ています。

インポートの構文:

<%@ 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 Directive 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) ここでは無視されます。以下の例では、1つの属性を使用しています(コード行2-XNUMX)

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>

コードの説明:

コード行 1 ~ 2: ここでは XNUMX つの属性を定義しました。

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

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

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

JSPページディレクティブ

出力:

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

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

  • JSP「インクルード ディレクティブ」(コードライン 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:

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

Directive_header_jsp3.jsp:

コード行 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>

コードの説明:

コード行 3: ここで、「taglib」は属性 uri と prefix で定義されています。

コード行 9: 「gurutag」は定義されたカスタムタグであり、どこでも使用できます