アクションについて

アクションで、オブジェクトの使用、修正、または作成や、ページの出力ストリームの修正を行います。このセクションでは、JRun でサポートされているすべてのアクションについて説明します。次の表で、JSP のアクションを説明します。
アクション
目的
jsp:useBean
JavaBeans のインスタンスを定義します。
jsp:setProperty
bean にある 1 つ以上のプロパティ値を設定します。
jsp:getProperty
bean プロパティの値を、文字列として out オブジェクトに
自動的に書き込みます。
jsp:include
ある JSP から別の JSP を呼び出します。呼び出しが完了すると、デスティネーションページから呼び出し側ページに制御が戻ります。
jsp:forward
ある JSP から別の JSP を呼び出します。この呼び出しにより、呼び出し側ページの実行が終了します。
jsp:param
ある JSP から別の JSP にリクエストを転送するときに、名前/値のペアとしてパラメータを HTTP リクエストに追加します。
jsp:plugin
クライアントのブラウザでアプレットまたは他のプラグ可能コンポーネントを呼び出します。

jsp:useBean

jsp:useBean アクションにより、JSP で JavaBean がインスタンス化されます。インスタンス化が完了すると、JSP ファイル内の bean を参照できるようになります。次の例では、タイプ com.myco.myapp.MyBean の myBean と名付けられた bean を定義します。

<jsp:useBean id="myBean" class="com.myco.myapp.MyBean" />

jsp:useBean アクションのシンタックスは次のとおりです。

<jsp:useBean id="name" scope="page|request|session|application" 
typeSpec />

ここで、typespec には次のいずれかが入ります。

class="className" |
class="className" type="typeName" |
beanName="beanName" type=" typeName" |
type="typeName"

type または class を指定する必要があります。class を指定した場合は、beanName は指定できません。typeclass の両方を指定する場合は、classtype に割り当てる必要があります。

属性 beanNamea.b.c の形式で表された bean の名前です。これには、a/b/c.ser の形式でクラスまたはリソース名を指定できます。

次のシンタックスを使用して、本文を jsp:useBean アクションに指定できます。

<jsp:useBean id="name" scope="page|request|session|application" typeSpec >
  body</jsp:useBean>

JRun によって、bean の本文が呼び出されます。一般的に、本文には、新規作成された bean を修正するスクリプトレットまたは jsp:setProperty アクションが含まれます。

次の表で、jsp:useBean アクションの属性を説明します。
属性
説明
id
指定されたスコープで bean を識別するために使用される名前と、bean のスクリプト変数名を指定します。指定する名前では大文字と小文字を区別し、Java の変数のネーミング規則に準拠する必要があります。
scope
オプションで、 bean を使用できるスコープを定義します。
次のスコープを指定できます。
  • page  この bean は現在のページで使用できます。
    これがデフォルトです。
  • request  この bean は、getAttribute メソッドを使用
    して、現在のページにある request オブジェクトから使用できます。現在のクライアントのリクエストが完了すると、リファレンスは破棄されます。
  • session  この bean は、getValue メソッドを使用して、
    現在のページにある session オブジェクトから使用できます。現在のセッションが無効になると、リファレンスは破棄され
    ます。

    page ディレクティブの session 属性を false に設定して
    いる場合は、scopesession に設定できません。

  • application  この bean は、getAttribute メソッドを
    使用して、現在のページにある application オブジェクトから使用できます。
class 
bean の実装を定義する認識可能なクラス名を設定します。クラス名では大文字と小文字が区別されます。
class 属性と beanName 属性を省略する場合、オブジェクトは、指定されたスコープ内にある必要があります。
beanName 
java.beans.Beans クラスの instantiate メソッドで認識されるように bean の名前を指定します。
beanName 属性は実行時の式を利用できます。
type
指定されている場合、type はスクリプト変数のタイプを表します。bean は指定されたタイプへのインスタンスである必要があります。
この属性を使用すると、スクリプト変数のタイプを、指定された
実装クラスのスクリプト変数に関連付けながら区別することが
できます。このタイプはクラス自体、クラスのスーパークラス、または指定されたクラスによって実装されたインターフェイスでなければなりません。
type 属性は、デフォルトで class 属性の値になります。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

jsp:setProperty

jsp:setProperty アクションは、bean の 1 つ以上のプロパティの値を設定します。このアクションを使用する前に、jsp:useBean を使用して bean を定義しておく必要があります。

jsp:setProperty アクションのシンタックスは次のとおりです。

<jsp:setProperty name="beanName" prop_expr />

prop_expr 変数は次の形式のいずれかです。

property="*" |
property="propertyName"|
property="propertyName" param="parameterName"|
property="propertyName" value="propertyValue"

propertyValue 変数は、リテラル文字列または式である必要があります。

次の例では、user と名付けられた bean のプロパティに値を設定します。

<jsp:setProperty name="user" property="user" param="username" />

次の例では、式を使用してプロパティを設定します。

<jsp:setProperty name="results" property="row" value="<%= i + 1 %>" />

単純なインデックス付きプロパティは、setProperty を使用して設定できます。インデックス付きプロパティの値には、配列を割り当てる必要があります。

次の表で、jsp:setProperty アクションの属性を説明します。
属性
説明
name
jsp:useBean アクションまたは他の要素によって定義された bean の名前。bean のインスタンスには、設定するプロパティが含まれている必要があります。jsp:useBean アクションは、同じファイル内の jsp:setProperty アクションも前に呼び出す必要があります。
property
設定する bean のプロパティの名前。
propertyName を * に設定すると、現在のリクエストパラメータに対して jsp:setProperty が繰り返し実行され、パラメータ名と値タイプが bean のプロパティ名とタイプと比較されます。一致したプロパティはそれぞれ、対応するパラメータの値に設定されます。パラメータの値が空の文字列 ("") の場合、対応するプロパティは修正されません。
前に示した prop_expr の先頭から 3 つのフォームはそれぞれ、文字列として表される値を bean のプロパティに割り当てます。ただし、bean のプロパティのデータタイプが String 以外の場合は、JRun によりタイプ変換が行われます。
前に示した4 番めの形式 prop_expr は、オブジェクトを bean のプロパティに割り当てます。この場合、オブジェクトは自動的に
割り当て先 bean プロパティのデータタイプに変換されます。
param
リクエストパラメータの名前。パラメータの値を bean プロパティに渡します。アクションは param 属性と value 属性を持つことはできません。
param を省略した場合、JRun は、リクエストパラメータ名と bean プロパティ名が同じであると見なします。
param が request オブジェクトに設定されていない場合、または値が空の文字列 ("") の場合、jsp:setProperty 要素は機能しません。
value
プロパティに割り当てられる値。アクションは param 属性と value 属性を持つことはできません。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

jsp:getProperty

jsp:getProperty アクションは、bean プロパティの値を文字列として out オブジェクトに書き込みます。このアクションを使用する前に、bean を定義しておく必要があります。

jsp:getProperty アクションのシンタックスは次のとおりです。

<jsp:getProperty name="name" property="propertyName" />

次の例では、user bean の name プロパティを書き込みます。

<jsp:getProperty name="user" property="name" />

次の表で、jsp:getProperty アクションの属性を説明します。
属性
説明
name
このプロパティで使用される bean インスタンス名を指定します。このアクションは、bean が見つからなかった場合に例外を生成
します。
property
出力する値のプロパティの名前

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

jsp:include

jsp:include アクションは、スタティックおよびダイナミックなリソースを現在のページに挿入します。挿入が完了すると、呼び出し側 JSP で処理が再開されます。

jsp:include アクションのシンタックスには、次のいずれかの形式を使用します。

<jsp:include page="path" flush="true|false"/>

または

<jsp:include page="path" flush="true|false">
  <jsp:param name="paramName" value="paramValue" /> ... 
</jsp:include>

デフォルトでは、JSP からクライアントに送信される出力データはバッファリングされます。バッファーを使用しているため、レスポンスヘッダー情報およびその他の出力はバッファーがフラッシュされるまではクライアントに送信されません。インクルードするページの出力がバッファリングされている場合、バッファーはインクルード前にフラッシュされます。このフラッシュのために、インクルードされるページはレスポンスヘッダーを設定できません。したがって、インクルードされたページでは setCookie などのメソッドを使用できません。デフォルトは false です。

メモ:  バッファーを無効にするか、または JSP の出力バッファーのサイズを設定するには、JSP ディレクティブを使用します。page ディレクティブの詳細については、 「page ディレクティブ」 を参照してください。

次の例では、HTML ページをインクルードします。

<jsp:include page="/templates/copyright.html"/>

次の表で jsp:include アクションの属性を説明します。
属性
説明
page
インクルードするファイルのパスを指定します。
パスの詳細については、 「相対 URL の指定」 を参照してください。
flush
true に設定すると、このインクルードの前にバッファーがフラッシュされます。デフォルト値は false です。

jsp:include は、jsp:param アクションを取ることができます。このアクションにより、目的の JSP により受信される HTTP リクエストにパラメータを追加できます。詳細については、 「jsp:param」 を参照してください。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

jsp:forward

jsp:forward アクションによって、現在のページと同じアプリケーションで JSP やサーブレットが呼び出されます。jsp:forward によって、現在の JSP の実行が終了されます。

JRun でページ出力がバッファリングされている場合は、jsp:forward アクションが呼び出されるか、またはresponse オブジェクトの redirect メソッドを使用してリクエストが転送されたときに、JRun によってバッファーがクリアされます。JRun は、転送元 JSP によって設定された Cookie を破棄せずに、クライアントに送信します。

JRun でページ出力がバッファリングされておらず、何らかのデータがその出力に書き込まれている場合に jsp:forward を使用すると、IllegalStateException が投げられます。

メモ:  バッファーを無効にするか、または JSP の出力バッファーのサイズを設定するには、JSP ディレクティブを使用します。page ディレクティブの詳細については、 「page ディレクティブ」 を参照してください。

jsp:forward アクションのシンタックスでは、次の形式のいずれかを使用します。

<jsp:forward page="path" />

または

<jsp:forward page="path">
  <jsp:param name="paramName" value="paramValue" /> ... 
</jsp:forward>

次の例で、ある JSP から別の JSP を呼び出す方法を示します。

<% String whereTo = "/templates/" + someValue; %>
<jsp:forward page='<%= whereTo %>' />

次の表で、jsp:forward アクションの属性を説明します。
属性
説明
page
呼び出されるファイルのパスを指定します。パスの詳細については、
「相対 URL の指定」 を参照してください。

jsp:forward の 2 番めの形式は jsp:param アクションへの追加です。このアクションにより、目的の JSP により受信される HTTP リクエストにパラメータを追加できます。詳細については、 「jsp:param」 を参照してください。

次の例は、ある JSP から別の JSP を呼び出す方法を示しています。

デスティネーション JSP に属性を渡すには

  1. 新規テキストファイルを作成して、次のように入力します。
    <% request.setAttribute("Greeting", "Hello World"); %>
    <jsp:include page="secondpage.jsp" flush="true"/>
    
  2. Web サーバのドキュメントのルートに JSP としてファイルを保存します。
  3. 2 番めのファイルを作成して、次のように入力します。
    ご挨拶:<%= request.getAttribute("Greeting")%>
    
  4. 2 番めのページを JSP として Web サーバのドキュメントのルートに保存します。
  5. ブラウザを開いて、最初のページをリクエストします。

この例では、あるページから別のページにデータを渡します。属性の値は String に限定されません。どのようなタイプのオブジェクトでも属性として渡すことができます。

また、jsp:param アクションを使用して、Greeting をパラメータとして渡すこともできます。この場合、パラメータはデスティネーション JSP に文字列として渡されます。この処理は、デスティネーション JSP がHTTP POST メソッドを使用してリクエストされた後で情報を受け取る場合と同様です。

request オブジェクト内でパラメータを使用して情報を 2 番めのページに渡すことによって 2 番めのページを直接クライアントのリクエストにレスポンスできるようにするか、または別の JSP から呼び出すことができるように、2 番めのページを作成できます。

次の例では、jsp:param アクションを使用して、Greeting パラメータを渡します。

<jsp:include page="page1.jsp" flush="true">
  <jsp:param name="Greeting" value="Hello World" />
</jsp:include>

インクルードされるページでは、次のように、request.getParameter メソッドを使用してパラメータにアクセスします。

ご挨拶:<%= request.getParameter("Greeting") %>

呼び出し側ページと同様に、デスティネーション JSP も、JSP out オブジェクトを使用してクライアントにデータを返すことができます。ただし、呼び出し側ページの出力がバッファリングされている場合、JRun は、呼び出し前にバッファーをフラッシュします。このフラッシュのために、デスティネーションページはレスポンスヘッダーを設定できません。

また、デスティネーションページは、request オブジェクトを使用して呼び出し側ページに情報を返すこともできます。たとえば、デスティネーションページは何らかの値を決定して、setAttribute メソッドを使用してそれを request オブジェクトに書き込むことができます。デスティネーションページから呼び出し側ページに制御が戻されたとき、呼び出し側ページは request オブジェクトの getAttribute メソッドを使用してその情報にアクセスできます。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

jsp:param

jsp:param アクションにより、ある JSP から別の JSP にリクエストが転送されるときに、パラメータが名前/値のペアとして HTTP リクエストに追加されます。このアクションと併用できるのは、jsp:includejsp:forward、および jsp:plugin アクションだけです。

jsp:include または jsp:forward とともに jsp:param を使用すると、デスティネーションページにより、オリジナルのリクエストパラメータを持つオリジナルの HTTP リクエストと、jsp:param で指定された新規パラメータがすべて受信されます。jsp:param により、リクエストに既に入っているパラメータが追加された場合、新規パラメータ値は既存の値の前に入ります。

たとえば、リクエストにパラメータ myParm=a が含まれているときに、jsp:param を使用して myParm=b を追加すると、転送されたリクエストには myParm=b, a が含まれます。ここで、新規パラメータがリストの先頭に追加されていることに注意してください。

新規パラメータのスコープは、jsp:includejsp:forward のデスティネーション JSP です。つまり、インクルードされたページからオリジナルの JSP に返された後、新規パラメータと値がリクエストから削除されます。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。

jsp:plugin

jsp:plugin アクションを使用して、クライアントブラウザでアプレットを呼び出すことができます。このアクションで、適切なクライアントブラウザ依存のコンストラクト (OBJECT または EMBED) を含む HTML テキストが生成されます。この構成体により、Java プラグインがダウンロードされ、続いてアプレットや JavaBean が実行されます。

JRun では、リクエスト元ユーザーエージェントに応じて、この要素が object タグまたは embed タグのいずれかで置き換えられ、レスポンスの出力ストリームに書き込まれます。

jsp:plugin アクションのシンタックスは次のとおりです。

<jsp:plugin
  type="bean|applet"
  code="objectCode"
  codebase="objectCodebase"
  { align="alignment" }
  { archive="archiveList" }
  { height="height" }
  { hspace="hspace" }
  { jreversion="jreversion" }
  { name="componentName" }
  { vspace="vspace" }
  { width="width" }
  { nspluginurl="url" }
  { iepluginurl="url" } >
  { <jsp:params>
    { <jsp:param name=" paramName" value="paramValue" /> }+
  </jsp:params> }
  { <jsp:fallback> arbitrary_text </jsp:fallback> } >
</jsp:plugin>

中括弧 ({}) で囲まれた要素はオプションです。

次の例では、クライアントにある MyPlugin.class を呼び出します。

<jsp:plugin type=applet code="MyPlugin.class" codebase="/html" >
  <jsp:params>
    <jsp:param name="myplugin" value="Greetings"/>
  </jsp:params>
  <jsp:fallback>
    <p> unable to load Plugin </p>
  </jsp:fallback>
</jsp:plugin>

次の表で jsp:plugin アクションの属性を説明します。
属性
説明
type
コンポーネントのタイプを bean またはアプレットとして指定します。
code
アプレットを含むクラスファイル名、またはクラスへのパスを指定
します。
codebase
archive 属性で指定された相対パスを解決するために使用されるベースパスを指定します。この値を省略すると、jsp:plugin を呼び出した JSP ファイルのパスが使用されます。
align
bean またはアプレットの場所を指定します。align に次の値を指定すると、周囲のテキストとの関係でオブジェクトの位置が決まります。
  • bottom オブジェクトの最下部が、現在のベースラインに対して垂直に揃えられます。これがデフォルトです。
  • middle オブジェクトの中心が、現在のベースラインに対して、
    垂直に揃えられます。
  • top オブジェクトの最上部が、現在のテキストラインの最上部に対して垂直に揃えられます。
  • left および right イメージが現在の左マージンまたは右マージンに移動します。
archive
オブジェクトのリソースを含むアーカイブを表す URI を、スペースで区切られたリストとして指定します。一般的に、アーカイブをあらかじめロードしておくと、オブジェクトのロード時間を削減できます。相対 URI として指定されたアーカイブは、codebase 属性に相対的であると解釈されます。
height
デフォルトの bean またはアプレットの高さを書き換えて、指定された値を使用します。この値は次の形式で指定できます。
  • ピクセルを表す整数値 (N)
  • 使用可能な垂直スペースのパーセント値 (N%)
  • 使用可能な垂直スペースの部分 (N*)
hspace
bean またはアプレットの左右に挿入される余白の量を指定します。
この値は次の形式で指定できます。
  • ピクセルを表す整数値 (N)
  • 使用可能な水平スペースのパーセント値 (N%)
  • 使用可能な水平スペースの部分 (N*)
jreversion
コンポーネントが動作するために必要な JRE 仕様のバージョン番号を表します。デフォルトは 1.1 です。
name
アプレットの名前を指定します。これにより、このアプレットを JavaScript から参照したり、同じページにある別のアプレットを
参照できるようになります。
vspace
bean またはアプレットの上下に挿入される余白の量を指定します。
この値は次の形式で指定できます。
  • ピクセルを表す整数値 (N)
  • 使用可能な垂直スペースのパーセント値 (N%)
  • 使用可能な垂直スペースの部分 (N*)
title
アプレットに関する記述情報を指定します。
width
bean やアプレットについて、デフォルトのオブジェクト幅を書き換え、指定された値を使用します。この値は次の形式で指定できます。
  • ピクセルを表す整数値 (N)
  • 使用可能な水平スペースのパーセント値 (N%)
  • 使用可能な水平スペースの部分 (N*)
nspluginurl
Netscape Navigator 用 JRE プラグインをダウンロードできる URL を指定します。デフォルトは実装によって異なります。
iepluginurl
Internet Explorer 用 JRE プラグインをダウンロードできる URL を指定します。デフォルトは実装によって異なります。
jsp:param
アプレットコンポーネントまたは JavaBeans コンポーネントにパラメータを設定します。詳細については、 「jsp:param」 を参照してください。
jsp:fallback
プラグインが起動できなかったときに、クライアントブラウザにより
表示されるコンテンツを指定します。プラグインは起動できても、アプレットコンポーネントまたは JavaBeans コンポーネントが見つからなかったり、起動できなかったりした場合は、プラグイン固有のメッセージがユーザーに送られます。

HTML 関連の属性の詳細については、HTML 4.0 仕様 (http://www.w3.org/TR/REC-html40/) をご覧ください。

サンプルの JSP を表示するには、samples JRun サーバを起動し、ブラウザで
http://localhost:8200/techniques を開きます。