JSP ディレクティブ要素とは異なり、JSP アクション要素はリクエスト処理フェーズ中に機能します。 JSP アクション要素は XML 構文で記述されます。
JSP アクションを使用して、ファイルを動的に挿入し、JavaBean コンポーネントを再利用し、ユーザーを他のページにリダイレクトし、Java プラグイン用の HTML コードを生成します。
アクション要素の構文は 1 つだけであり、XML 標準に準拠しています。
<jsp:action_name 属性="値" />
アクション要素は基本的に事前定義された関数であり、JSP 仕様では接頭辞として JSP を使用する一連の標準アクションが定義されています。 使用可能な標準アクション要素は次のとおりです。
文法 | 説明する |
---|---|
jsp:インクルード | ページが要求されたときにファイルをインポートします。 |
jsp:useBean | JavaBean を検索またはインスタンス化します。 |
jsp:setProperty | JavaBeanのプロパティを設定します。 |
jsp:getProperty | JavaBeanのプロパティを出力します。 |
jsp:転送 | リクエストを新しいページに送信します。 |
jsp:プラグイン | ブラウザの種類に応じて、Java プラグインの OBJECT タグまたは EMBED タグを生成します。 |
jsp:要素 | 動的XML要素を定義する |
jsp:属性 | 動的に定義された XML 要素の属性を設定します。 |
jsp:ボディ | 動的に定義された XML 要素のコンテンツを設定します。 |
jsp:テキスト | JSP ページおよびドキュメントにテキストを記述するテンプレートの使用 |
すべての action 要素には、id 属性とscope 属性という 2 つの属性があります。
ID 属性:
id 属性はアクション要素の一意の識別子であり、JSP ページで参照できます。 action 要素によって作成された id 値は、PageContext を通じて呼び出すことができます。
スコープ属性:
この属性は、アクション要素のライフサイクルを識別するために使用されます。 id 属性は、scope 属性に直接関連しており、scope 属性は、関連付けられた id オブジェクトの存続期間を定義します。スコープ属性には、(a) ページ、(b) リクエスト、(c) セッション、(d) アプリケーションの 4 つの値があります。
<jsp:include> アクション要素は、静的ファイルと動的ファイルをインクルードするために使用されます。このアクションにより、指定されたファイルが生成中のページに挿入されます。構文形式は次のとおりです。
<jsp:include page="相対URL" flash="true" />
include ディレクティブは以前に導入されましたが、JSP ファイルがサーブレットに変換されるときにファイルが導入されます。ここでの jsp:include アクションは、ページがリクエストされたときとは異なります。
以下は、include アクションに関連するプロパティのリストです。
財産 | 説明する |
---|---|
ページ | ページに含まれる相対 URL アドレス。 |
フラッシュ | リソースを含める前にキャッシュをフラッシュするかどうかを定義するブール型プロパティ。 |
以下では、2 つのファイル date.jsp と main.jsp を定義します。コードは次のとおりです。
date.jsp ファイルのコード:
<p> 今日の日付: <%= (new java.util.Date()).toLocaleString()%></p>
main.jsp ファイルのコード:
<html><head><title>インクルード アクションの例</title></head><body><center><h2>インクルード アクションの例</h2><jsp:include page="date.jsp" flash ="true" /></center></body></html>
次に、上記 2 つのファイルをサーバーのルート ディレクトリに配置し、main.jsp ファイルにアクセスします。表示される結果は次のとおりです。
include アクションの例今日の日付: 12-Sep-2013 14:54:22
jsp:useBean アクションは、JSP ページで使用される JavaBean をロードするために使用されます。
この機能は、JSP とサーブレットを区別する利便性の損失を回避しながら、Java コンポーネントの再利用を活用できるため、非常に便利です。
jsp:useBean アクションの最も単純な構文は次のとおりです。
<jsp:useBean id="名前" />
クラスがロードされた後、 jsp:setProperty および jsp:getProperty アクションを通じて Bean のプロパティを変更および取得できます。
以下は、useBean アクションに関連するプロパティのリストです。
財産 | 説明する |
---|---|
クラス | Bean の完全なパッケージ名を指定します。 |
タイプ | オブジェクト変数を参照する型を指定します。 |
豆名 | Bean の名前は、java.beans.Beans の instantiate() メソッドで指定します。 |
具体的な例を示す前に、まず jsp:setProperty および jsp:getProperty アクション要素を見てみましょう。
jsp:setProperty は、インスタンス化された Bean オブジェクトのプロパティを設定するために使用されます。使用方法は 2 つあります。まず、次のように jsp:useBean 要素の外側 (後ろ) で jsp:setProperty を使用できます。
<jsp:useBean id="myName" ... />...<jsp:setProperty name="myName" property="someProperty" .../>
このとき、jsp:useBean が既存の Bean を見つけた場合でも、新しい Bean インスタンスを作成した場合でも、jsp:setProperty が実行されます。 2 番目の使用法は、次に示すように、jsp:setProperty を jsp:useBean 要素内に配置することです。
<jsp:useBean id="myName" ... >... <jsp:setProperty name="myName" property="someProperty" .../></jsp:useBean>
このとき、jsp:setPropertyはBeanインスタンスを新規作成する場合のみ実行されます。既存のインスタンスを使用する場合、jsp:setPropertyは実行されません。
財産 | 説明する |
---|---|
名前 | name 属性は必須です。どの Bean にプロパティを設定するかを示します。 |
財産 | プロパティ属性は必須です。どのプロパティを設定するかを示します。特別な使用法があります。プロパティの値が「*」の場合、名前が Bean プロパティ名と一致するすべてのリクエスト パラメータが、対応するプロパティ セット メソッドに渡されることを意味します。 |
価値 | value 属性はオプションです。このプロパティは、Bean プロパティの値を指定するために使用されます。文字列データは、ターゲット クラスの標準の valueOf メソッドを通じて、数値、ブール値、ブール値、バイト、バイト、文字、および文字に自動的に変換されます。例えば、boolean および Boolean 型の属性値(「true」など)は Boolean.valueOf で変換され、int および Integer 型の属性値(「42」など)は Integer.valueOf で変換されます。 Value と param を同時に使用することはできませんが、どちらか一方を使用することは可能です。 |
パラメータ | param はオプションです。どのリクエストパラメータをBeanプロパティの値として使用するかを指定します。現在のリクエストにパラメータがない場合は何も行われず、システムは Bean プロパティの set メソッドに null を渡しません。したがって、Bean にデフォルトのプロパティ値自体を提供させ、リクエスト パラメータで明示的に新しい値が指定されている場合にのみデフォルトのプロパティ値を変更することができます。 |
jsp:getProperty アクションは、指定された Bean プロパティの値を抽出し、文字列に変換して出力します。構文形式は次のとおりです。
<jsp:useBean id="myName" ... />...<jsp:getProperty name="myName" property="someProperty" .../>
次の表は、getProperty に関連付けられたプロパティです。
財産 | 説明する |
---|---|
名前 | 取得する Bean プロパティの名前。 Beanを定義する必要があります。 |
財産 | Beanプロパティの値を抽出することを示します |
次の例では Bean を使用します。
/* ファイル: TestBean.java */package action; public class TestBean { private String message = "メッセージが指定されていません"; public String getMessage() { return(message) } public void setMessage(String message);メッセージ; }}
上記の例をコンパイルし、TestBean.class ファイルを生成します。このファイルを、変更後に自動的にロードできるクラス用に予約されているディレクトリ (C:apache-tomcat など) ではなく、サーバーが正式に Java クラスを格納するディレクトリにコピーします。 -7.0.2 webappsWEB-INFclassesaction ディレクトリ、CLASSPATH 変数にはこのパスが含まれている必要があります)。たとえば、Java Web サーバーの場合、Bean と Bean によって使用されるすべてのクラスは、classes ディレクトリに配置するか、jar ファイルにカプセル化して lib ディレクトリに配置する必要がありますが、サーブレットの下に配置しないでください。 以下は非常に単純な例です。その機能は、Bean をロードし、そのメッセージ プロパティを設定/読み取りすることです。
次に、main.jsp ファイルで Bean を呼び出しましょう。
<html><head><title>JSP での JavaBeans の使用</title></head><body><center><h2>JSP での JavaBeans の使用</h2> <jsp:useBean id="test" /> < jsp:setProperty name="test" property="message" value="Hello JSP..." /> <p>メッセージを受信しました....</p> <jsp:getProperty name="test" property="message " /> </center></body></html>
上記のファイルを実行すると、出力は次のようになります。
JSPGot メッセージでの JavaBeans の使用....Hello JSP...
jsp:forward アクションは、リクエストを別のページに転送します。 jsp:forward タグには属性 page が 1 つだけあります。構文形式は次のとおりです。
<jsp:forward page="相対URL" />
以下は、forward に関連付けられた属性です。
財産 | 説明する |
---|---|
ページ | page 属性には相対 URL が含まれます。ページの値は、直接指定することも、リクエスト中に動的に計算することもできます。JSP ページまたは Java サーブレットにすることができます。 |
次の例では、date.jsp と main.jsp という 2 つのファイルを使用します。
date.jsp ファイルのコードは次のとおりです。
<p> 今日の日付: <%= (new java.util.Date()).toLocaleString()%></p>
main.jsp ファイルのコード:
<html><head><title>転送アクションの例</title></head><body><center><h2>転送アクションの例</h2><jsp:forward page="date.jsp" / ></center></body>
次に、上記 2 つのファイルをサーバーのルート ディレクトリに配置し、main.jsp ファイルにアクセスします。表示される結果は次のとおりです。
今日の日付: 2010 年 9 月 12 日 14:54:22
jsp:plugin アクションは、ブラウザの種類に応じて、Java プラグインを介して Java アプレットを実行するために必要な OBJECT 要素または EMBED 要素を挿入するために使用されます。
必要なプラグインが存在しない場合は、プラグインをダウンロードして Java コンポーネントを実行します。 Java コンポーネントはアプレットまたは JavaBean にすることができます。
プラグイン アクションには、Java コンポーネントのフォーマットに使用される HTML 要素に対応する複数の属性があります。 param 要素を使用して、アプレットまたは Bean にパラメータを渡すことができます。
以下は、プラグイン アクション要素の一般的な使用例です。
<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class" > <jsp:param name="fontcolor" value="red" /> <jsp:param name="background" value=" black" /> <jsp:fallback> Java プラグインを初期化できません </jsp:fallback> </jsp:plugin>
興味がある場合は、アプレットを使用して jsp:plugin アクション要素をテストしてみてください。 <fallback> 要素は、コンポーネントが失敗すると、ユーザーにエラー メッセージが送信されます。
<jsp:element>、<jsp:attribute>、<jsp:body> アクション要素は、XML 要素を動的に定義します。動的は非常に重要です。つまり、XML 要素は静的ではなくコンパイル時に動的に生成されます。
次の例では、XML 要素を動的に定義します。
<%@page language="java" contentType="text/html"%><html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun. com/JSP/Page"><head><title>XML 要素の生成</title></head><body><jsp:element name="xmlElement"><jsp:attribute name="xmlElementAttr">属性</jsp:attribute><jsp:body> XML 要素の本文</jsp:body></jsp:element></body></html>
実行中に生成される HTML コードは次のとおりです。
<html xmlns="http://www.w3c.org/1999/xhtml" xmlns:jsp="http://java.sun.com/JSP/Page"> <head><title>XML 要素の生成</ title></head><body><xmlElement xmlElementAttr="属性の値"> XML 要素の本文</xmlElement></body></html>
<jsp:text> アクション要素を使用すると、JSP ページおよびドキュメントにテキストを記述するためのテンプレートを使用できます。構文形式は次のとおりです。
<jsp:text>テンプレート データ</jsp:text>
上記のテキスト テンプレートには他の要素を含めることはできませんが、テキストと EL 式のみを含めることができます (注: EL 式については後続の章で紹介します)。 > 記号は不正であるため、XML ファイルでは ${whatever > 0} などの式を使用できないことに注意してください。 ${whatever gt 0} 式または CDATA セクションに埋め込まれた値を使用できます。
<jsp:text><![CDATA[<br>]]></jsp:text>
XHTML で DOCTYPE を宣言する必要がある場合は、<jsp:text> アクション要素を使用する必要があります。例は次のとおりです。
<jsp:text><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">]]></jsp:text>< head><title>jsp:text アクション</title></head><body><books><book><jsp:text> JSP へようこそプログラミング</jsp:text></book></books></body></html>
上記の例を試して、 <jsp:text> を使用した場合とこのアクション要素を使用しない場合の実行結果の違いを確認できます。