Revised: 17th/June/2002; Since: 16th/June/2002
JSP の記述には JSP タグと呼ばれるものを使います。特に、JSP がクライアントから要求される度に実行されるものをアクションと呼びます。これは JSP タグで記述し、標準アクションとカスタムアクションに別れます。
JSP 1.2 仕様では、標準アクションタグは次の9個が定義されています。
<jsp:useBean> | Java オブジェクトのインスタンスの利用 |
<jsp:setProperty> | Bean のプロパティをセット |
<jsp:getProperty> | Bean インスタンスのプロパティを文字列で取得して表示 |
<jsp:include> | 他のリソースを読み込み |
<jsp:forward> | 現在のリクエストを他のリソースへディスパッチして自分は終了 |
<jsp:param> | jsp:include や jsp:forward に対してパラメタを与える |
<jsp:plugin> | Applet や JavaBeans コンポーネントの実行のために、<object> or <embed> tag に置換される。 |
<jsp:params> | <jsp:plugin> 要素の直接の子要素として現われ、パラメタを与える。 |
<jsp:fallback> | <jsp:plugin> 要素の直接の子要素として現われ、実行されなかった場合の代替内容を与える。 |
動的部分は、 JSP スクリプトと呼ばれるもので記述されます。JSP の目的は、静的なテンプレートデータを、動的なコンテンツの生成から分離することなので、スクリプトの使用は推奨されません。
<%! code %>
JSP 宣言は、クラスのメンバの宣言と同じ働きをします。
<% code %>
実行可能コードの一部をページ内に埋め込む事が出来ます。JSP スクリプトレットは、複数行にわたる制御を埋め込む働きをします。必ずしも、出力ストリームへの書き込みを意味するわけではありません。
<%= expression %>
JSP 式も実行可能コードの一部ですが、結果が文字列に変換されて、出力ストリームに書き込まれます。
JSP が実行時に変換されるサーブレットの設定を記述するものであり、JSP が最初にアクセスされてサーブレットに変換されるときに処理されます。
ディレクティブの書式は <%@ directive attribute="value" %>
となります。
ページの基礎的情報を記述します。パッケージの import、継承するクラス、ページのデータタイプ、言語、エラー時のページなどを指定することになります。
他のページやアプレットを埋め込むために使います。
JSP タグと言うものが決まっていますが、ユーザが独自に振る舞いを定義するタグを作成することも出来ます。これはカスタマ JSP タグとよばれ、タグ・ライブラリと呼ばれるものにパッケージされて配布されます。これは、Java クラスで振る舞いを記述し、ライブラリ・デスクリプタで XML 要素にマップし、 JSP ページで読み込んで利用します。taglib directive は、タグ・ライブラリを読み込んで使えるようにするためのものです。
カスタムタグは、一度タグライブラリを作れば、コミュニティでシェアされますが、Struts などのフレームワーク、商用ベンダーの WebLogic, JRun などのタグライブラリのほかに、 JSTL -JSP Standard Tag Library と呼ばれる標準機能の集中化も進められています。
JSP ではアクションやスクリプトでオブジェクトを明示的に生成して、使うことができますが、幾つかの良く使うオブジェクトは JSP 仕様で事前に定義され、 JSP コンテナによって暗黙的に作成され使えるようになっています。
オブジェクト変数 | 説明 |
---|---|
request | クライアント要求。同一要求を処理するページをまたがって持続。 |
response | 要求に対する応答。当該ページ内だけ持続。 |
pageContext | 当該ページ内のオブジェクトの参照などを保持。 |
session | 当該要求に関連する ServletConfig オブジェクト。 |
application | コンテキストルートからアクセスできるサーブレットの集合。ServletContext オブジェクト。 |
out | 出力ストリームへ書き込む。 |
config | 当該ページの ServletConfig オブジェクト。 |
page | 当該ページ自身。this と同じ。 |
exception | ページ内でキャッチされなかった Throwable オブジェクト。 |
これらのオブジェクトは生成されたページから、各々のスコープと呼ばれる有効範囲内で参照可能です。