Interstage Studio プログラマーズガイド |
目次 索引 |
第2部 Java編 | > 第3章 Webアプリケーションを開発する | > 3.3 Webアプリケーションのプログラミングについて |
ここでは、JSPタグと属性およびその意味について説明します。
JSPエディタでは、タグパレットからのドラッグ&ドロップや、テキストの入力補完機能でJSPタグの入力を簡単に行うことができます。
JSPディレクティブは、JSPページをサーブレットに翻訳するときに利用する情報をJSPコンテナに指示するものです。JSPディレクティブは、"<%@ ディレクティブ名 属性=値... %>" の形式で記述されます。
JSPディレクティブとしては以下の3つのディレクティブが挿入できます。
Pageディレクティブは、JSPページ全体に関する設定をします。
Pageディレクティブは、JSPページ内に複数書けますが、インポートするパッケージ名(import)以外の指定は1つのページ内で1度ずつしかできません。
Includeディレクティブは、JSP記述の静的なインクルードに使用されます。JSPページの変換時、この記述のある箇所には、指定したファイルの内容が挿入され、全体が1つのJSPページとしてサーブレットプログラムに変換されます。
全体が1つのJSPページとして変換されるため、挿入後の結果がJSPの仕様を満足する必要があります。
JSPページ内に記述した拡張タグを解釈して実行するアプリケーションでは、アプリケーション固有の拡張タグの定義をタグライブラリとして提供します。Taglib ディレクティブは、タグライブラリを指定し、JSPページ内で拡張タグの使用を可能にします。
スクリプト要素は、JSPページ内にサーバ上で実行される手続きを記述するもので、Java言語の構文を使用して記述します。
スクリプト要素内では、jsp:useBeanで定義したアプリケーションオブジェクトまたは暗黙オブジェクトを使用することができます。
スクリプト要素は、ページ内の必要な箇所に複数記述することができます。
変数宣言タグは、ページ内のJava式やスクリプトレットで使用する変数、メソッドの宣言に使用します。タグ内の記述は、Java言語の構文にしたがいます。
<%! int count = 0; protected int getCount() { return count++; } %> <%! int count = 0; %> <%! int count, user, passwd; %>
jsp:useBeanで定義したオブジェクト(ID)、暗黙オブジェクトおよびServlet APIについては、この宣言なしで使用することができます。
Javaコードタグでは、スクリプトレットを記述します。スクリプトレットは、Java言語の構文で記述します。
スクリプトレットを使用して、jsp:useBeanで定義したオブジェクト(アプリケーション)の実行や、Java式タグに使用される変数への代入、クライアントに出力するHTMLデータの切り替えなどを行うことができます。
<% String text = getParameter(request, "text"); session.setAttribute("text", text); if (text == null) { nextPage = "jsp02Error.jsp"; } %> <% if (Myapp.getUserID() == null) { %> <br><font color="#ff0000">認証失敗</font> <% } %>
スクリプトレットでは、jsp:useBeanで定義したオブジェクト(ID)および暗黙オブジェクトも使用可能です。
HTMLタグ、JSPタグ内では、Javaコードタグを使用することはできません。タグ属性値を動的に変更する場合は、Java式タグを使用してください。
Java式タグで記述した式は、String型の値に変換されてクライアントに送信されます。
<%= new java.util.Date() %> <jsp:forward page="<%= nextPage %>"> Total : <%= count1 + count2 %>
Java式タグでは、jsp:useBeanで定義したオブジェクト(ID)および暗黙オブジェクトも使用できます。
式は1行で記述します。文の終わりを示すセミコロン(;)は指定しないでください。
クライアントに送信されないコメントです。実行時には何も意味をもちません。
<%-- This is a comment. --%>
以下のオブジェクトは、事前の定義なしにスクリプトレットと式で利用できます。
スコープは、Beanのインスタンスおよび変数が有効な範囲を指定します。
変数名 |
スコープ |
オブジェクトの型 |
---|---|---|
application |
application |
ServletContext |
config |
page |
ServletConfig |
exception |
page 注) |
Throwable |
out |
page |
JspWriter |
page |
page |
Object |
pageContext |
page |
PageContext |
request |
request |
ServletRequest |
response |
page |
ServletResponse |
session |
session |
HttpSession |
注) errorPageでだけ有効です。
<% String text = getParameter(request, "text"); session.setAttribute("text", text); if (text == null) { nextPage = "jsp02Error.jsp"; } %>
以下の引用規約がJSPページに適用されます。
アクションは、JSPページの実行にともなって、暗黙オブジェクトの設定や、クライアントへの出力を動的に変更するために使用されます。
標準アクションには以下のものがあります。
jsp:useBeanタグは、JSPページでJavaBeanを利用可能にします。
jsp:setPropertyタグは、jsp:useBeanタグで宣言したBeanのプロパティを設定します。文字列や式を指定する方法と、HTTPリクエストの設定値(リクエストを発行したページのFORM入力の内容)を使う方法があります。
jsp:getPropertyタグは、jsp:useBeanタグで宣言したBeanのプロパティをページに表示(クライアントに送信)します。
jsp:forwardタグは、クライアントからのリクエストをほかのHTMLファイル、JSPファイル、サーブレットへ転送します。jsp:forward以降に記述しているJSPファイルの記述は処理されません。
jsp:pluginタグは、プラグインを使用して画面内にアプレットやJavaBeanを表示する場合に使用します。jsp:pluginのサブエレメントでjsp:paramを使用するときには、必ずjsp:paramsタグが必要です。
jsp:includeタグは、Includeディレクティブと異なり、動的なインクルードを可能にします。この記述のある箇所には、指定したファイルの内容がJSPページの実行時に(リクエスト処理時に)挿入されます。指定されたURLがJSPページまたはサーブレットなどの場合には、そのURLにリクエストを発行した結果が挿入されます。
挿入されるページで新規にセションを生成することはできません。
jsp:elementタグは、XMLに指定した要素を追加します。要素の属性はjsp:attributeタグで、ボディ部はjsp:bodyで指定します。
jsp:attributeタグは、指定した名前の属性値を設定してカスタムタグに送ります。ボディ部は必ずjsp:bodyタグで記述します。
jsp:bodyタグは、カスタムタグのボディ部を設定します。
目次 索引 |