―Servlet/JSPリファレンス―

@ITハイブックス編
2003/11/13
Javaプログラミング
ワンポイントレクチャーについて

  pageディレクティブタグとは


本記事は、@ITハイブックスシリーズ『サン・マイクロシステムズ技術者認定試験「J2EEラーニングブック Web Component Developer for J2EE Platform編」』(技術評論社)から、許可を得て一部を転載したものです。同書籍に関する詳しい情報については、本記事の最後に掲載しています。
   ワンポイントQuestion

 JSPファイルにパッケージをインポートするためのディレクティブの指定で、正しいものはどれですか?(単一選択) 

 

A <%@ import package="java.util.*, cart.*" %>
B <%@ page import="java.util.*, cart.*" %>
C <%@ include page="java.util.*; cart.*" %>
D <%@ page import="java.util.*; cart.*" %>
E import java.util.*; import cart.*;
F <%@ tablib uri="java.util.*; cart.*" %>

   解説

 ディレクティブタグは、JSPコンテナに対してさまざまな属性で指示を指定することができます。これらは、JSPファイルを変換するときに、JSPサーブレットのソースコードに埋め込まれます。

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

・pageディレクティブタグ
・includeディレクティブタグ
・taglibディレクティブタグ

 ここでは、pageディレクティブタグについて解説します。

■pageディレクティブタグ

 pageディレクティブタグは、JSPファイル全体に適用されるさまざまな属性が定義でき、ディレクティブの中でも最も利用頻度が高いものです。

<%@ page [ language="スクリプト言語" ]
         [ extends="パッケージ名.クラス名" ]
         [ import="インポートするパッケージ名" ]
         [ session="true | false" ]
         [ buffer="none | sizekb" ]
         [ autoFlush="true | false" ]
         [ isThreadSafe="true | false" ]
         [ info="info_text" ]
         [ errorPage="error_url" ]
         [ isErrorPage="true | false" ]
         [ contentType="MIMEタイプ[;charset=キャラクタセット]" ]
         [ pageEncoding="peinfo" ]
%>

 属性は12個ありますが、ここでは、language属性からinfo属性までを解説します。

●language属性

 宣言、スクリプトレット、式で使用するスクリプト言語を指定します。デフォルトで使用できる言語は“java”です。

●extends属性

 JSPサーブレットが継承するスーパークラスを指定します。これは、JSPファイルをJSPサーブレットに変換するときに使用されます。Java言語のextendsに相当します。通常、デフォルト以外のものを使用するケースは多くありません。

●import属性

 宣言、スクリプトレット、式で使用するパッケージをインポートします。Java言語のimportに相当し、とてもよく利用される属性です。

 language属性がデフォルトの“java”の場合、JSPファイルの変換のときに、デフォルトで以下のパッケージがインポートされます。

・java.lang
・javax.servlet
・javax.servlet.http
・javax.servlet.jsp

 アプリケーションサーバによって、これら以外のパッケージがデフォルトでインポートされる場合もあります。

 複数のパッケージやクラスを指定したい場合は、“,(カンマ)”区切りを利用してください。

,(カンマ)区切りを利用した例
<%@ page import="java.io.*" %>
<%@ page import="java.io.*, java.util.Date" %>

●session属性

 JSPファイルでセッション・トラッキングを使用するかどうかを指定します。

true
セッション・トラッキングを使用します。この場合、定義済みオブジェクトのsessionオブジェクトを利用することができます(デフォルト)。

false
セッション・トラッキングを使用しません。したがって、定義済みオブジェクトのsessionオブジェクトも利用することができません。

●buffer属性

 クライアントへの出力ストリームは自動的にJspWriterレベルでバッファリングできます。そのバッファサイズを指定することができます。デフォルトは8KBです。

 noneの場合、JspWriterレベルでバッファは使用されず、ServletResponseのPrintWriterに直接出力されます。

p<%@ page buffer="16kb" %>

 バッファサイズが大きければ、出力情報を実際のクライアントに送信する前に、より多くの内容を書き込むことができます。したがって、適切なステータスコードやヘッダを設定したり、生成した出力情報をすべて取り消して別のWebリソースの情報に入れ替えたりすることが可能になり、errorPage属性や<jsp:forward>タグと組み合わせて利用できます。

 バッファサイズが小さいと、サーバのメモリ負荷が小さくなり、クライアントは素早くデータ受信を始めることができます。

 通常、デフォルトの8KBで十分ですが、大量のコンテンツを表示するページがある場合は、その出力量を見積もりバッファサイズで指定をしてください。

●autoFlash属性

 バッファリングされたデータを自動的にフラッシュするかどうかを指定します。デフォルトはtrueです。

 trueの場合、バッファがいっぱいになると自動的にフラッシュされ、Webブラウザに送信されます。その後、JSPページの処理が再開され、出力情報は再びバッファに格納されます。

 バッファがフラッシュされると、レスポンスヘッダの設定や別のWebリソースへの転送ができません。したがって、これらについてはJSPファイルの早い段階で行ってください。

 falseの場合、バッファがいっぱいになっても自動的にフラッシュせず、例外を発生させてWebブラウザにエラーページを返します。falseを使用する場合は、buffer属性で十分なバッファサイズを確保しておいてください。

 buffer="none"の場合、autoFlash="false"を指定してはいけません。

<%@ page autoFlash="false" %>

●isThreadSafe属性

 JSPファイルから変換されたJSPサーブレットが、複数のクライアントからのリクエストに対して同時に処理できるかどうかを指定できます。デフォルトはtrueです。

true
それぞれのリクエストに対して新しいスレッドが生成され、複数の並行なクライアントからのリクエストを同時に処理できます。ただし、この場合、宣言、pageスコープで指定されているJavaBeansコンポーネント、pageスコープオブジェクトの属性で作成されているオブジェクトのようなページレベルで定義されている共有オブジェクトへのアクセスが、正しく同期化されていることを確認する必要があります。

false
単一スレッドモデルで実装され、リクエストを1つずつ受信した順番に処理します。ページレベルでオブジェクトへのアクセスは制御する必要はありません。ただし、sessionまたはapplicationスコープを持つJavaBeansコンポーネントと、sessionまたはapplicationのスコープオブジェクトの属性へのアクセスが、正しく同期化されていることを確認する必要があります。

●info属性

 作成者、バージョン、版権などの情報を追加するときに利用します。デフォルトはからの文字列です。ServletインターフェイスのgetServletInfo()メソッドで返される文字列を指定します。

<%@ page info="Tomcat information page, Copyright 2003 by atmarkit." %>

POINT
pageディレクティブのimport属性は、Java言語のimportに相当し、とてもよく利用される属性です。

KEYWORD
■ディレクティブ
JSPコンテナに対してさまざまな属性で指示を指定することができます。ディレクティブには、pageディレクティブ、includeディレクティブ、taglibディレクティブがあります。

■pageディレクティブ
JSPファイル全体に適用されるさまざまな属性が定義できます。

   ワンポイントQuestionの解答

正解 B

J2EEラーニングブック −Web Component Developer編−

本記事は@ITハイブックスシリーズ「J2EEラーニングブック −Web Component Developer編−」(技術評論社)から、一部の内容を編集し転載したものです。本書の詳細は「@ITハイブックス」サイトでご覧いただけます。

 

Javaプログラミング・ワンポイントレクチャー INDEX





Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間