―Servlet/JSPリファレンス―
2003/11/13
pageディレクティブタグとは |
|
ワンポイントQuestion |
JSPファイルにパッケージをインポートするためのディレクティブの指定で、正しいものはどれですか?(単一選択)
|
解説 |
ディレクティブタグは、JSPコンテナに対してさまざまな属性で指示を指定することができます。これらは、JSPファイルを変換するときに、JSPサーブレットのソースコードに埋め込まれます。
ディレクティブタグには、次の種類があります。
・pageディレクティブタグ ・includeディレクティブタグ ・taglibディレクティブタグ |
ここでは、pageディレクティブタグについて解説します。
■pageディレクティブタグ
pageディレクティブタグは、JSPファイル全体に適用されるさまざまな属性が定義でき、ディレクティブの中でも最も利用頻度が高いものです。
<%@ page [ language="スクリプト言語" ] |
属性は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.*" %> |
●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編−
|
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|