JSPアクション要素

JSP指令要素とは異なり、JSPアクション要素は要求処理段階で役割を果たします。JSPアクション要素はXML構文で編集されます。

JSPアクションを使用すると、ファイルを動的に挿入したり、JavaBeanコンポーネントを再利用したり、ユーザーを他のページにリダイレクトしたり、JavaプラグインのHTMLコードを生成したりできます。

action要素には、XML標準に準拠する構文が1つだけあります。

<jsp:action_name attribute="value" />

アクション要素は、基本的に事前定義された関数です。JSP仕様では、一連の標準アクションが定義されています。JSPは接頭辞として使用されます。使用可能な標準アクション要素は次のとおりです。

構文説明
jsp:includeページがリクエストされた時にファイルを導入します。
jsp:useBeanJavaBean を検索またはインスタンス化します。
jsp:setPropertyJavaBean のプロパティを設定します。
jsp:getProperty特定のJavaBeanのプロパティを出力します。
jsp:forwardリクエストを新しいページに転送します。
jsp:pluginブラウザのタイプに応じて、Javaプラグインの OBJECT または EMBEDタグを生成します。
jsp:element動的 XML 要素を定義します。
jsp:attribute動的に定義された XML 要素の属性を設定します。
jsp:body動的に定義された XML 要素のコンテンツを設定します。
jsp:textJSP ページおよびドキュメントにテキストを書き込むテンプレートを使用します。

有り触れる属性

すべてのアクション要素には、id 属性と scope 属性の 2 つの属性があります。

  • id属性:
    id 属性は、アクション要素の唯一の識別子であり、JSP ページで参照できます。 action要素によって作成されたid値は、PageContextによって呼び出すことができます。
  • scope属性:
    この属性は、アクション要素のライフサイクルを識別するために使用されます。 id属性は、scope属性に直接関連しており、scope属性は、関連付けられた ID オブジェクトの存続期間を定義します。(a) page、(b)request、(c)session、と(d) applicationの 4 つの可能な値があります。

<jsp:include>アクション要素

<jsp:include>アクション要素は、静的ファイルと動的ファイルを含めるために使用されます。このアクションは、指定されたファイルを生成中のページに挿入します。構文は次のとおりです。

<jsp:include page="相対URLアドレス" flush="true" />

include指令は前の記事に説明されたもので、JSPファイルがServletに変換される時にファイルをインポートすることであり、ここでのjsp:includeアクションは異なり、ファイルを挿入するタイミングはページがリクエストされたときです。

以下は、include アクションに関連する属性のリストです。

属性説明
pageページに含まれる相対URLアドレスです。
flushブール属性です。リソースを含める前にキャッシュを更新するかどうかを定義します。

実例

次には、date.jsp と main.jsp の 2 つのファイルを定義します。コードは次のとおりです。

date.jspファイルコード:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<p>
   今日の日付: <%= (new java.util.Date()).toLocaleString()%>
</p>

main.jspファイルコード:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>初心者チュートリアル(ceodata.com)</title>
</head>
<body>

<h2>include アクション実例</h2>
<jsp:include page="date.jsp" flush="true" />

</body>
</html>

上記の 2 つのファイルをサーバーのルートディレクトリに配置し、main.jspファイルにアクセスします。表示された結果は次のとおりです。

include アクション実例
今日の日付: 2016-6-25 14:08:17

<jsp:useBean>アクション要素

jsp:useBean アクションは、JSPページで使用されるJavaBean をロードするために使用されます。

この機能は、Javaコンポーネントの再利用を利用できるため、非常に便利です。

jsp:useBean アクションの最も簡単な構文は次のとおりです。

<jsp:useBean id="name" class="package.class" />

クラスがロードされた後、jsp:setProperty および jsp:getProperty アクションを使用して、Beanの属性を変更および取得できます。

useBeanアクションに関連する属性のリストを次のテーブルに示します。

属性説明
classBeanの完全なパッケージ名を指定します。
type参照するオブジェクト変数の型を指定します。
beanNamejava.beans.BeansのInstantiate()メソッドでBeanの名前を指定します。

具体的な例を示す前に、まず jsp:setProperty および jsp:getProperty アクション要素をご覧ください。

<jsp:setProperty>アクション要素

jsp:setProperty は、インスタンス化されたBeanオブジェクトのプロパティを設定するために使用されます。2 つの使用方法があります。 まず、jsp:useBean 要素の外側 (後ろに) で jsp:setProperty を使用できます。次には例を挙げます。

<jsp:useBean id="myName" ... />
...
<jsp:setProperty name="myName" property="someProperty" .../>

現在、jsp:useBeanが既存のBeanを検出するか、新しいBeanインスタンスを作成するかに関係なく、jsp:setPropertyが実行されます。他の使い方は、次に示すように、jsp:useBean要素内に jsp:setProperty を配置します。

<jsp:useBean id="myName" ... >
...
   <jsp:setProperty name="myName" property="someProperty" .../>
</jsp:useBean>

現在、jsp:setProperty は新しいBeanインスタンスが作成された時にのみ実行され、既存のインスタンスを使用した場合にはjsp:setPropertyが実行されません。

jsp:setProperty アクションには、次のテーブルに示すように、4つの属性があります。

属性説明
namename属性は必須です。属性を設定する Bean を示します。
propertyproperty属性は必須で、設定する属性を示します。 特別な使い方があり、 propertyの値が “*” の場合、名前が Beanプロパティの名前と一致するすべてのリクエストパラメータが、対応するプロパティsetメソッドに渡されることを意味します。
valuevalue属性はオプションで、Bean 属性の値を指定するために使用されます。文字列データは、標準の valueOfメソッドを介して、ターゲットクラスの数値、boolean、Boolean、 byte、Byte、char、Characterに自動的に変換されます。例えば、boolean型とBoolean型 (「true」など) の属性値は Boolean.valueOf によって変換され、int 型とInteger型 (「42」など) の属性値は Integer.valueOf によって変換されます。 valueとparamは同時に使用できませんが、どちらでも使用できます。
paramparam はオプションで、Bean 属性の値として使用するリクエストパラメータを指定します。現在のリクエストにパラメータがない場合、何も実行されず、システムは Beanプロパティのsetメソッドに nullを渡しません。これより、Beanにデフォルトの属性値を提供させ、リクエストパラメータが新しい値を明示的に指定している場合にのみデフォルトの属性値を変更できます。

<jsp:getProperty>アクション要素

jsp:getPropertyアクションは、指定されたBean属性の値を抽出し、文字列に変換して出力します。構文は次のとおりです。

<jsp:useBean id="myName" ... />
...
<jsp:getProperty name="myName" property="someProperty" .../>

次のテーブルは、getPropertyに関連する属性です。

属性説明
name検索するBean属性の名前です。 Beanを定義する必要があります。
propertyBean属性の値を抽出することを示します。

実例

次の実例では、Beanを使用します。

package com.ceodata.main;

public class TestBean {
  private String message = "初心者チュートリアル";
 
   public String getMessage() {
      return(message);
   }
   public void setMessage(String message) {
      this.message = message;
   }
}

上記の実例ファイルTestBean.java をコンパイルします。

$ javac TestBean.java

コンパイルが完了すると、現在のディレクトリに TestBean.classファイルが生成され、現在のJSPプロジェクトにあるWebContent/WEB-INF/classes/com/runoob/mainにコピーします。(com/runoob/mainパッケージパス、手動で作成する必要はありません)。

下記のは、Eclipseのディレクトリ構造です。

下記のは簡単な例です。その機能はBeanをロードし、そのmessage属性を設定/読み取ります。

main.jspファイルでBeanを呼び出します。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>初心者チュートリアル(ceodata.com)</title>
</head>
<body>

<h2>Jsp JavaBean実例を使用する</h2>
<jsp:useBean id="test" class="com.ceodata.main.TestBean" />
 
<jsp:setProperty name="test" 
                    property="message" 
                    value="初心者チュートリアル..." />

<p>出力情報....</p> 

<jsp:getProperty name="test" property="message" />

</body>
</html>

ブラウザにアクセスし、上記のファイルを実行すると、出力は次のようになります。

<jsp:forward>アクション要素

Jsp:forward アクションは、リクエストを別のページに転送します。 jsp:forward タグには 1 つの属性ページしかありません。構文は次のとおりです。

<jsp:forward page="相対URLアドレス" />

下記のは、forwardに関連する属性です。

属性説明
pagepage属性には相対URLが含まれます。ページの値は、リクエストに応じて直接または動的に計算して指定でき、JSPページまたはJava Servletにすることができます。

実例

次の実例では、date.jspとmain.jspの2つのファイルを使用します。

date.jspのファイルコードは次のとおりです。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<p>
  今日の日付: <%= (new java.util.Date()).toLocaleString()%>
</p> 

main.jspファイルコード:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>初心者チュートリアル(ceodata.com)</title>
</head>
<body>

<h2>forward アクション実例</h2>
<jsp:forward page="date.jsp" />
</body>
</html>

上記の2つのファイルをサーバーのルートディレクトリに配置し、main.jspファイルにアクセスします。表示される結果は次のとおりです。

今日の日付: 2016-6-25 14:37:25

<jsp:plugin>アクション要素

jsp:plugin アクションは、ブラウザのタイプに応じて、JavaプラグインによってJava Appletを実行するために必要な OBJECT またはEMBED要素を挿入するために使用されます。

必要なプラグインが存在しない場合、プラグインがダウンロードされ、Javaコンポーネントが実行されます。Javaコンポーネントは、appletまたは JavaBeanにすることができます。

pluginアクションには、Javaコンポーネントをフォーマットするための HTML要素に対応する複数の属性があります。param要素を使用して、パラメータをAppletまたはBeanに渡すことができます。

下記のは、pluginアクション要素の典型的な実例です。

<jsp:plugin type="applet" codebase="dirname" code="MyApplet.class"
                           width="60" height="80">
   <jsp:param name="fontcolor" value="red" />
   <jsp:param name="background" value="black" />
 
   <jsp:fallback>
      Unable to initialize Java Plugin
   </jsp:fallback>
 
</jsp:plugin>

興味がある場合、appletを使用して jsp:plugin アクション要素をテストできます。 <fallback>要素は、コンポーネントが失敗した時、ユーザーにエラー メッセージを送信する新しい要素です。

<jsp:element>、<jsp:attribute>、<jsp:body>アクション要素

<jsp:element>、<jsp:attribute>、<jsp:body>アクション要素は、XML要素を動的に定義します。動的は非常に重要です。つまり、XML要素はコンパイル時に静的ではなく動的に生成されることを意味します。

次の実例では、XML要素を動的に定義しています。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>初心者チュートリアル(ceodata.com)</title>
</head>
<body>
<jsp:element name="xmlElement">
<jsp:attribute name="xmlElementAttr">
 属性値
</jsp:attribute>
<jsp:body>
 XML要素の本体
</jsp:body>
</jsp:element>
</body>
</html>

ブラウザで次のページにアクセスし、出力結果は次の通りです。

<jsp:text>アクション要素

<jsp:text>アクション要素を使用すると、JSPページおよびドキュメントにテキストを書き込むためのテンプレートを使用できます。構文は次のとおりです。

<jsp:text>テンプレートデータ</jsp:text>

上記のテキストテンプレートには、繰り返し要素を含めることはできません。テキストとEL式のみを含めることができます (ヒント: EL 式は、後続の記事で説明します)。 XMLファイルでは、> 記号が不正であるため、${whatever> 0} などの式を使用できないことに注意してください。CDATAセクションに埋め込まれた ${whatever gt 0} 式または値を使用できます。上記のテキストテンプレートには、繰り返し要素を含めることはできません。テキストとEL式のみを含めることができます (ヒント: EL 式は、後続の記事で説明します)。 XMLファイルでは、> 記号が不正であるため、${whatever> 0} などの式を使用できないことに注意してください。CDATAセクションに埋め込まれた ${whatever gt 0} 式または値を使用できます。

<jsp:text><![CDATA[<br>]]></jsp:text>

XHTMLでDOCTYPEを宣言する必要がある場合、アクション要素を使用する必要があります。実例は次のとおりです。

<jsp:text><![CDATA[<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd">]]>
</jsp:text>
<head><title>jsp:text action</title></head>
<body>

<books><book><jsp:text>  
    Welcome to JSP Programming
</jsp:text></book></books>

</body>
</html>

上記の実例の <jsp:text>を使用する又は、アクション要素を使用しないの違いをやってみてください。

Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です