JSPアクション要素


JSP ディレクティブ要素とは異なり、JSP アクション要素はリクエスト処理フェーズ中に機能します。 JSP アクション要素は XML 構文で記述されます。

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

アクション要素には、XML 標準に準拠する構文が 1 つだけあります。

<jsp:action_name attribute="value" />

アクション要素は、基本的に、JSP をプレフィックスとして使用する一連の標準アクションを定義します。次のように:

構文説明
jsp:include ページがリクエストされたときにファイルをインクルードします。
jsp:useBean JavaBean を検索またはインスタンス化します。
jsp:setProperty JavaBeanのプロパティを設定します。
jsp:getProperty JavaBeanのプロパティを出力します。
jsp:forwardはリクエストを新しいページに転送します。
jsp:plugin ブラウザの種類に応じて、Java プラグインの OBJECT タグまたは EMBED タグを生成します。
jsp:element動的XML要素の定義
jsp:attribute動的に定義されたXML要素の属性を設定します。
jsp:body動的に定義された XML 要素の内容を設定します。
jsp:textJSP ページやドキュメントにテキストを記述するためのテンプレートを使用します

共通属性

すべての action 要素には、id 属性とscope 属性という 2 つの属性があります。

  • id 属性:

    id 属性は、アクション要素の一意の識別子であり、JSP ページで参照できます。 action 要素によって作成された id 値は、PageContext を通じて呼び出すことができます。


  • scope 属性:

    この属性は、アクション要素のライフサイクルを識別するために使用されます。 id 属性は、scope 属性に直接関連しており、scope 属性は、関連付けられた id オブジェクトの存続期間を定義します。スコープ属性には、(a) ページ、(b) リクエスト、(c) セッション、(d) アプリケーションの 4 つの値があります。



<jsp:include>Action要素

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

<jsp:include page="相对 URL 地址" flush="true" />

include ディレクティブは以前に導入されましたが、JSP ファイルがサーブレットに変換されるときにファイルが導入されます。ここでの jsp:include アクションは、ページの挿入時とは異なります。が要求されます。

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

属性Description
page ページ内の相対 URL アドレスが含まれます。
flushリソースを含める前にキャッシュをフラッシュするかどうかを定義するブール属性。

以下では 2 つのファイル date.jspmain.jsp を定義します。コードは次のとおりです:

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>php中文网(php.cn)</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>Action要素

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

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

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

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

クラスがロードされた後、 jsp:setProperty および jsp:getProperty アクションを通じて Bean のプロパティを変更および取得できます。

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

AttributeDescription
class Beanの完全なパッケージ名を指定します。
typeは、オブジェクト変数を参照する型を指定します。
beanName java.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 が実行されます。 。 2 番目の使用法は、以下に示すように、jsp:setProperty を jsp:useBean 要素内に置くことです:

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

このとき、jsp:setProperty は新しい Bean インスタンスを作成する場合にのみ実行され、既存のインスタンスの場合は実行されません。 jsp:setProperty が使用されます。

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

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

<jsp:getProperty>Action要素

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

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

次の表は、getProperty に関連付けられたプロパティです。

PropertyDescription
name 取得する Bean プロパティの名前。 Beanを定義する必要があります。
propertyはBeanプロパティの値を抽出することを意味します

以下の例では Bean を使用しました:

package com.php.main;

public class TestBean {
   private String message = "php中文网";
 
   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/php/main にコピーします (com/php/main パッケージ パス。手動で作成する必要はありません)。

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

6AC33FBA-0B76-4BFD-A690-E856E9E01900.jpg

以下は、Bean をロードし、そのメッセージ属性を設定/読み取りする機能です。


次に、main.jsp ファイル内の Bean を呼び出しましょう:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>

<h2>Jsp 使用 JavaBean 实例</h2>
<jsp:useBean id="test" class="com.php.main.TestBean" />
 
<jsp:setProperty name="test" 
                    property="message" 
                    value="php中文网..." />
 
<p>输出信息....</p>
 
<jsp:getProperty name="test" property="message" />

</body>
</html>

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

D7AD87A8-3392-4D4E-8731-18806B0644CD.jpg


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

jsp:forward アクションはリクエストを別のページに転送します。 jsp:forward タグには属性 page が 1 つだけあります。構文形式は次のとおりです。

<jsp:forward page="相对 URL 地址" />

以下は、 forward に関連付けられた属性です:

AttributeDescription
page page 属性には相対 URL が含まれます。ページの値は、リクエスト中に直接指定することも、動的に計算することもできます。

次の例では、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>php中文网(php.cn)</title>
</head>
<body>

<h2>forward 动作实例</h2>
<jsp:forward page="date.jsp" />
</body>
</html>

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

今天的日期是: 2016-6-25 14:37:25

<jsp:plugin>Action要素

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

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

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

以下はプラグインアクション要素の典型的な使用例です:

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

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


<jsp:要素> <jsp:属性>、 <jsp:body>アクション要素

<jsp:element> <jsp:属性>、 <jsp:body>action 要素は XML 要素を動的に定義します。動的は非常に重要です。つまり、XML 要素は静的ではなくコンパイル時に動的に生成されます。

次の例では、XML 要素を動的に定義します:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<jsp:element name="xmlElement">
<jsp:attribute name="xmlElementAttr">
   属性值
</jsp:attribute>
<jsp:body>
   XML 元素的主体
</jsp:body>
</jsp:element>
</body>
</html>

ブラウザは次のページにアクセスし、出力結果は次のようになります:

7D8C47F0-0DDE-4F1D-8BE1-B2C9C955683E.jpg


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

<jsp:text> ;Action 要素が許可されます。 JSP ページおよびドキュメントにテキストを記述するためのテンプレートを使用します。 構文形式は次のとおりです。

<jsp:text>模板数据</jsp:text>

上記のテキスト テンプレートには、他の要素を含めることはできず、テキストと EL 式のみを含めることができます (注: EL 式は で導入されます)。後続の章)。 XML ファイルでは、> 記号は無効であるため、${whatever > などの式は使用できないことに注意してください。 ${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 action</title></head>
<body>

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

</body>
</html>

を使用せずに実行することもできます。上記の例の action 要素の結果の違い。