アクション

アクションによって、オブジェクトの使用、修正、または作成を行ったり、ページの出力ストリームを修正できます。このセクションでは、JRun でサポートされているすべてのアクションについて説明します。

次の表は、全アクションの一覧です。
要素名
目的
Section
"jsp:useBean"
JavaBeans のインスタンスを定義します。
"jsp:useBean"
"jsp:setProperty"
Bean にある 1 つ以上のプロパティ値を設定します。
"jsp:setProperty"
"jsp:getProperty"
Bean プロパティの値を、文字列として out オブジェクトに自動的に書き込みます。
"jsp:getProperty"
"jsp:include"
ある JSP から別の JSP を呼び出します。アクションが完了すると、呼び出し先のページから呼び出し側のページに制御が戻されます。
"jsp:include"
"jsp:forward"
ある JSP から別の JSP を呼び出します。この呼び出しにより、呼び出し側ページの実行が終了します。
"jsp:forward"
"jsp:param" 
 
ある JSP から別の JSP に要求を転送するときに、名前/値ペアとしてパラメータを HTTP 要求に追加します。
  "jsp:param"
"jsp:plugin"
クライアント ブラウザでアプレットを起動できるようになります。
"jsp:plugin"

jsp:useBean

jsp:useBean アクションにより、JSP で JavaBeans がインスタンス化されます。インスタンス化が完了すると、JSP ファイルにある Bean が参照できるようになります。

次の例では、タイプ com.myco.myapp.MyBeanmyBean という 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 が割り当てられるようになっていなければなりません。

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

さらに、次の形式で jsp:useBean に対して本文を指定できます。

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

Bean が作成されると、本文が呼び出されます。通常、本文には新しく作成された Bean を修正するために使用されるスクリプトレット、または jsp:setProperty タグが含まれますが、本文の内容は制限されません。

<jsp:useBean> タグには次のような属性があります。

id

指定されたスコープで Bean を識別するために使用される名前と、Bean のスクリ プト変数名を指定します。名前では大文字と小文字を区別し、スクリプト言語の 変数命名規則に従って指定する必要があります。

scope

必要に応じて、Bean が使用可能なスコープを定義します。


注意

JSP で page ディレクティブにより、このページがセッションに含まれていないと 指定されている場合、session スコープを指定すると、致命的な変換エラーが発生 します。


class

Bean の実装を定義する認識可能なクラス名を設定します。クラス名では大文字と 小文字は区別されます。

class 属性と beanName 属性を省略する場合、オブジェクトは指定されたスコープ 内にある必要があります。

beanName

java.beans.Beans クラスの instantiate メソッドで認識されるように Bean 名 を指定します。

この属性の値として、要求時属性式を使用できます。

type

指定されている場合、type はスクリプト変数のタイプを表します。Bean は指定 されたタイプへのインスタンスである必要があります。

この属性を使用して、スクリプト変数のタイプを、指定された実装クラスのスク リプト変数に関連させながら、同時に区別できます。このタイプはクラス自体、 クラスのスーパークラス、または指定されたクラスにより実装されたインター フェイスになります。

このパラメータを省略した場合、タイプは class 属性の値と同じになります。

jsp:setProperty

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

次の例では、user という Bean のプロパティに値が設定されます。

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

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

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

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

jsp:setProperty の構文は次のとおりです。

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

ここで、prop_expr は次のいずれかの形式になります。

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

propertyValue には文字列定数、または式を指定する必要があります。

jsp:setProperty 要素には次のような属性があります。

name

jsp:useBean アクション、またはその他の要素により定義された Bean 名。Bean インスタンスには、設定する必要のあるプロパティが含まれます。jsp:useBean 要素は、同じファイル内にある jsp:setProperty アクションより先に記述する必要 があります。

property

設定する必要のある Bean プロパティの名前。

propertyName を * に設定すると、現在の要求パラメータに対して、
jsp:setProperty が繰り返し実行され、パラメータ名および値タイプが Bean の プロパティ名およびタイプと比較されます。一致したプロパティはそれぞれ、対応 するパラメータの値に設定されます。パラメータの値が空白文字列 ("") である 場合、対応するプロパティは変更されません。

prop_expr の先頭から 3 つの書式では、文字列として表される値が Bean プロパ ティに割り当てられます。しかし、Bean プロパティのデータ タイプが string 以 外である場合、JRun によりタイプ変換が行われます。次の表は、この変換がど のように行われるかを示します。
プロパティ タイプ
変換
boolean または Boolean
java.lang.Boolean.valueOf(String) で定義されたとおり
byte または Byte
java.lang.Byte.valueOf(String) で定義されたとおり
char または Character
java.lang.Character.valueOf(String) で定義されたとおり
double または Double
java.lang.Double.valueOf(String) で定義されたとおり
int または Integer
java.lang.Integer.valueOf(String) で定義されたとおり
float または Float
java.lang.Float.valueOf(String) で定義されたとおり
long または Long
java.lang.Long.valueOf(String) で定義されたとおり

prop_expr の 4 つめの書式では、オブジェクトが Bean プロパティに割り当てられ ます。この場合、オブジェクトは自動的に割り当て先 Bean プロパティのデータ タイプに変換されます。

param

Bean プロパティに供給する必要のある値を持つ要求パラメータ名。

アクションは paramvalue の両方を持つことはできません。

param を省略した場合、要求パラメータ名は Bean プロパティ名と同じであると 見なされます。

paramrequest オブジェクトに設定されていない場合、または値が空の文字列 ("") である場合、jsp:setProperty 要素は何の効力も持ちません。

value

プロパティに割り当てられる値。

アクションは paramvalue の両方の値を持つことはできません。

jsp:getProperty

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

次の例では、user Bean の name プロパティが書き込まれます。

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

このアクションの構文は次のとおりです。

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

このプロパティで使用される Bean インスタンス名を指定します。

このアクションは、Bean が見つからなかった場合に例外を生成します。

property

出力する必要のある値を持つプロパティ名。

jsp:include

現在のページに静的なリソースおよび動的なリソースを含めます。組み込みが完了すると、呼び出し側 JSP で処理が再開されます。

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


メモ

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


次の例では、HTML ページが含められます。

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

jsp:include の構文は次のとおりです。

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

または

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

含められるファイルのパスを指定します。/ で始まる パス は JSP のアプリケー ションに関連付けられています。パス名の先頭に / が付いていない場合、このパス は変換中の JSP のパスに関連付けられていると見なされます。

パスの詳細については、"JSP における相対 URL の指定"を参照してください。

flush

この属性を true に設定すると、バッファがフラッシュされます。JSP 1.1 では、 値に false を指定できません。

既定値は true です。

jsp:include の 2 番目の書式は、jsp:param アクションへの追加です。このアクションにより、目的の JSP により受信される HTTP 要求にパラメータを追加できます。詳細については、"jsp:param"を参照してください。

jsp:forward

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

ページ出力がバッファリングされた場合、jsp:forward アクションを呼び出すか、response オブジェクトの redirect メソッドを使用して要求を転送した場合に、バッファは消去され、内容が破棄されます。このルールの唯一の例外は、 JSP を転送することによって設定されたクッキーが破棄されず、クライアントに送信されることです。

ページ出力がバッファリングされず、ページ出力に何かが書き込まれている場合、jsp:forward を使用しようとすると、IllegalStateException になります。


メモ

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


次の例では、ある JSP から別の JSP が呼び出されます。

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

jsp:forward の構文は次のとおりです。

<jsp:forward page="path" />

または

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

呼び出されるファイルのパスを指定します。/ で始まるパスは JSP に含まれるアプ リケーションに関連付けられています。パス名の先頭に / が付いていない場合、 このパスは変換中の JSP のパスに関連付けられていると見なされます。

パスの詳細については、"JSP における相対 URL の指定"を参照してください。

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

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:include または jsp:forward の目的の JSP です。つまり、含められたページからオリジナルの JSP に戻ってきた後、新しいパラメータと値が要求から削除されます。

jsp:plugin

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

この要素は要求元ユーザ エージェントに応じて、<object> タグまたは <embed> タグで置き換えられ、応答の出力ストリームに書き込まれます。次の例では、クライアントにある 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 の構文は次のとおりです。

<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>

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

type

コンポーネントのタイプを Bean またはアプレットとして指定します。

code

アプレットを含むクラス ファイル名、またはクラスへのパスを指定します。

codebase

archive 属性で指定された相対パスを解釈するために使用される基本パスを指定 します。この値を省略すると、<jsp:plugin> を呼び出した JSP ファイルのパスが 使用されます。

詳細については、次の URL にある HTML 4.0 仕様書を参照してください。

http://www.w3.org/TR/REC-html40/
align

Bean またはアプレットの場所を指定します。align に次のような値を指定した 場合、周囲のテキストに相対させてオブジェクトの場所が決められます。

archive

オブジェクトのリソースを含むアーカイブを表す URI を、スペースで区切られた リストとして指定します。一般的に、アーカイブをあらかじめロードしておくと、 オブジェクトのロード時間を削減できます。相対 URI として指定されたアーカ イブは codebase 属性に相対しているものとして解釈されます。

詳細については、次の URL にある HTML 4.0 仕様書を参照してください。

http://www.w3.org/TR/REC-html40/

height

既定の Bean またはアプレットの高さを書き換えて、指定された値を使用します。 値は次のように指定できます。

hspace

Bean またはアプレットの左右に挿入される空白の量を指定します。値は次のよう に指定できます。

jreversion

コンポーネントが動作するために必要な JRE 仕様のバージョン番号を表します。 既定値は 1.1 です。

name

アプレットの名前を指定します。これにより、このアプレットを JavaScript から 参照したり、同じページにある別のアプレットを参照できるようになります。

vspace

Bean またはアプレットの上下に挿入される空白の量を指定します。値は次のよう に指定できます。

title

アプレットに関する記述情報を指定します。

詳細については、次の URL にある HTML 4.0 仕様書を参照してください。

http://www.w3.org/TR/REC-html40/

width

Bean やアプレットについて、既定のオブジェクト幅を書き換え、指定された値を 使用します。値は次のように指定できます。

nspluginurl

Netscape Navigator 用 JRE プラグインをダウンロードできる URL を指定します。 既定値は実装によって異なります。

iepluginurl

Internet Explorer 用 JRE プラグインをダウンロードできる URL を指定します。 既定値は実装によって異なります。

jsp:param

アプレット コンポーネントまたは JavaBeans コンポーネントにパラメータを設定 します。詳細については、"jsp:param"を参照してください。

jsp:fallback

プラグインが起動できなかったときに、クライアント ブラウザにより表示される コンテンツを指定します。プラグインは起動できても、アプレット コンポーネント または JavaBeans コンポーネントが見つからなかったり、起動できなかった場合は、 プラグイン固有のメッセージがユーザに送られます。