JSP-アクション
この章では、JSPでのアクションについて説明します。これらのアクションは、XML構文の構成を使用して、サーブレットエンジンの動作を制御します。ファイルを動的に挿入したり、JavaBeansコンポーネントを再利用したり、ユーザーを別のページに転送したり、JavaプラグインのHTMLを生成したりできます。
Action要素はXML標準に準拠しているため、構文は1つだけです。
<jsp:action_name attribute = "value" />
アクション要素は基本的に事前定義された関数です。次の表に、使用可能なJSPアクションを示します-
S.No. | 構文と目的 |
---|---|
1 | jsp:include ページが要求されたときにファイルが含まれます。 |
2 | jsp:useBean JavaBeanを検索またはインスタンス化します。 |
3 | jsp:setProperty JavaBeanのプロパティを設定します。 |
4 | jsp:getProperty JavaBeanのプロパティを出力に挿入します。 |
5 | jsp:forward リクエスターを新しいページに転送します。 |
6 | jsp:plugin JavaプラグインのOBJECTまたはEMBEDタグを作成するブラウザ固有のコードを生成します。 |
7 | jsp:element XML要素を動的に定義します。 |
8 | jsp:attribute 動的に定義されたXML要素の属性を定義します。 |
9 | jsp:body 動的に定義されたXML要素の本体を定義します。 |
10 | jsp:text JSPページおよびドキュメントにテンプレートテキストを書き込むために使用されます。 |
共通の属性
すべてのアクション要素に共通する2つの属性があります。 id 属性と scope 属性。
Id属性
id属性はAction要素を一意に識別し、JSPページ内でアクションを参照できるようにします。アクションがオブジェクトのインスタンスを作成する場合、id値を使用して、暗黙的なオブジェクトPageContextを介してそれを参照できます。
スコープ属性
この属性は、Action要素のライフサイクルを識別します。id属性とscope属性は直接関連しています。これは、scope属性がidに関連付けられたオブジェクトの存続期間を決定するためです。scope属性には、次の4つの値があります。(a) page, (b)request, (c)session、および (d) application。
<jsp:include>アクション
このアクションにより、生成されているページにファイルを挿入できます。構文は次のようになります-
<jsp:include page = "relative URL" flush = "true" />
とは異なり include JSPページがサーブレットに変換されるときにファイルを挿入するディレクティブ。このアクションは、ページが要求されたときにファイルを挿入します。
次の表に、インクルードアクションに関連する属性を示します-
S.No. | 属性と説明 |
---|---|
1 | page 含まれるページの相対URL。 |
2 | flush boolean属性は、インクルードされたリソースがインクルードされる前にバッファーがフラッシュされるかどうかを決定します。 |
例
次の2つのファイルを定義しましょう (a)date.jsp そして (b) main.jsp 次のように-
以下は、の内容です date.jsp ファイル-
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
以下は、の内容です main.jsp ファイル-
<html>
<head>
<title>The include Action Example</title>
</head>
<body>
<center>
<h2>The include action Example</h2>
<jsp:include page = "date.jsp" flush = "true" />
</center>
</body>
</html>
これらすべてのファイルをルートディレクトリに保存して、アクセスしてみましょう。 main.jsp。次の出力が表示されます-
The include action Example
Today's date: 12-Sep-2010 14:54:22
<jsp:useBean>アクション
ザ・ useBeanアクションは非常に用途が広いです。まず、id変数とscope変数を使用して既存のオブジェクトを検索します。オブジェクトが見つからない場合は、指定されたオブジェクトの作成を試みます。
Beanをロードする最も簡単な方法は次のとおりです-
<jsp:useBean id = "name" class = "package.class" />
Beanクラスがロードされると、次を使用できます。 jsp:setProperty そして jsp:getProperty Beanプロパティを変更および取得するアクション。
次の表に、useBeanアクションに関連付けられている属性を示します-
S.No. | 属性と説明 |
---|---|
1 | class Beanの完全なパッケージ名を指定します。 |
2 | type オブジェクトを参照する変数のタイプを指定します。 |
3 | beanName java.beans.Beansクラスのinstantiate()メソッドで指定されたBeanの名前を指定します。 |
それでは、 jsp:setProperty そしてその jsp:getProperty これらのアクションに関連する有効な例を示す前に、アクション。
<jsp:setProperty>アクション
ザ・ setPropertyアクションはBeanのプロパティを設定します。Beanは、このアクションの前に事前に定義されている必要があります。setPropertyアクションを使用する2つの基本的な方法があります-
使用できます jsp:setProperty 後、しかし外 jsp:useBean 以下に示す要素-
<jsp:useBean id = "myName" ... />
...
<jsp:setProperty name = "myName" property = "someProperty" .../>
この場合、 jsp:setProperty 新しいBeanがインスタンス化されたか、既存のBeanが見つかったかに関係なく、が実行されます。
jsp:setPropertyが表示される2番目のコンテキストは、 jsp:useBean 以下に示す要素-
<jsp:useBean id = "myName" ... >
...
<jsp:setProperty name = "myName" property = "someProperty" .../>
</jsp:useBean>
ここで、jsp:setPropertyは、既存のオブジェクトが見つかった場合ではなく、新しいオブジェクトがインスタンス化された場合にのみ実行されます。
次の表に、に関連付けられている属性を示します。 setProperty アクション-
S.No. | 属性と説明 |
---|---|
1 | name プロパティが設定されるBeanを指定します。Beanは事前に定義されている必要があります。 |
2 | property 設定するプロパティを示します。「*」の値は、名前がBeanプロパティ名と一致するすべてのリクエストパラメータが適切なセッターメソッドに渡されることを意味します。 |
3 | value 指定されたプロパティに割り当てられる値。パラメータの値がnullであるか、パラメータが存在しない場合、setPropertyアクションは無視されます。 |
4 | param param属性は、プロパティが受け取る値を持つ要求パラメーターの名前です。valueとparamの両方を使用することはできませんが、どちらも使用することはできません。 |
<jsp:getProperty>アクション
ザ・ getProperty actionは、指定されたプロパティの値を取得して文字列に変換し、最後にそれを出力に挿入するために使用されます。
getPropertyアクションには2つの属性しかなく、どちらも必須です。getPropertyアクションの構文は次のとおりです-
<jsp:useBean id = "myName" ... />
...
<jsp:getProperty name = "myName" property = "someProperty" .../>
次の表に、に関連付けられている必要な属性を示します。 getProperty アクション-
S.No. | 属性と説明 |
---|---|
1 | name 取得するプロパティを持つBeanの名前。Beanは事前に定義されている必要があります。 |
2 | property property属性は、取得するBeanプロパティの名前です。 |
例
この例でさらに使用されるテストBeanを定義しましょう-
/* File: TestBean.java */
package action;
public class TestBean {
private String message = "No message specified";
public String getMessage() {
return(message);
}
public void setMessage(String message) {
this.message = message;
}
}
上記のコードを生成されたものにコンパイルします TestBean.class ファイルを作成し、TestBean.classをにコピーしたことを確認してください C:\apache-tomcat-7.0.2\webapps\WEB-INF\classes\action フォルダと CLASSPATH 変数もこのフォルダに設定する必要があります-
次に、次のコードを使用します main.jspファイル。これにより、Beanがロードされ、単純な文字列パラメータが設定/取得されます-
<html>
<head>
<title>Using JavaBeans in JSP</title>
</head>
<body>
<center>
<h2>Using JavaBeans in JSP</h2>
<jsp:useBean id = "test" class = "action.TestBean" />
<jsp:setProperty name = "test" property = "message"
value = "Hello JSP..." />
<p>Got message....</p>
<jsp:getProperty name = "test" property = "message" />
</center>
</body>
</html>
アクセスしてみましょう main.jsp、次の結果が表示されます-
Using JavaBeans in JSP
Got message.... Hello JSP...
<jsp:forward>アクション
ザ・ forward actionは、現在のページのアクションを終了し、静的ページ、別のJSPページ、Javaサーブレットなどの別のリソースにリクエストを転送します。
以下は、の構文です。 forward アクション-
<jsp:forward page = "Relative URL" />
次の表に、転送アクションに関連する必要な属性を示します。
S.No. | 属性と説明 |
---|---|
1 | page 静的ページ、別のJSPページ、Javaサーブレットなどの別のリソースの相対URLで構成する必要があります。 |
例
次の2つのファイルを再利用しましょう (a) date.jsp そして (b) main.jsp 次のように-
以下は、の内容です date.jsp ファイル-
<p>Today's date: <%= (new java.util.Date()).toLocaleString()%></p>
以下は、の内容です main.jsp ファイル-
<html>
<head>
<title>The include Action Example</title>
</head>
<body>
<center>
<h2>The include action Example</h2>
<jsp:forward page = "date.jsp" />
</center>
</body>
</html>
これらすべてのファイルをルートディレクトリに保存して、アクセスしてみましょう。 main.jsp。これにより、次のような結果が表示されます。
ここでは、メインページからコンテンツを破棄し、転送されたページからのコンテンツのみを表示しました。
Today's date: 12-Sep-2010 14:54:22
<jsp:plugin>アクション
ザ・ pluginアクションは、JavaコンポーネントをJSPページに挿入するために使用されます。ブラウザの種類を判別し、<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>
興味がある場合は、アプレットを使用してこのアクションを試すことができます。新しい要素、<fallback> 要素は、コンポーネントに障害が発生した場合にユーザーに送信されるエラー文字列を指定するために使用できます。
The <jsp:element> Action
The <jsp:attribute> Action
The <jsp:body> Action
ザ・ <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>Generate XML Element</title></head>
<body>
<jsp:element name = "xmlElement">
<jsp:attribute name = "xmlElementAttr">
Value for the attribute
</jsp:attribute>
<jsp:body>
Body for XML element
</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>Generate XML Element</title></head>
<body>
<xmlElement xmlElementAttr = "Value for the attribute">
Body for XML element
</xmlElement>
</body>
</html>
<jsp:text>アクション
ザ・ <jsp:text>アクションを使用して、JSPページおよびドキュメントにテンプレートテキストを書き込むことができます。以下は、このアクションの簡単な構文です-
<jsp:text>Template data</jsp:text>
テンプレートの本体に他の要素を含めることはできません。テキストとEL式のみを含めることができます(注-EL式については次の章で説明します)。XMLファイルでは、次のような式は使用できないことに注意してください。${whatever > 0}、大なり記号は違法であるため。代わりに、gt などのフォーム ${whatever gt 0} または別の方法は、値をに埋め込むことです CDATA セクション。
<jsp:text><![CDATA[<br>]]></jsp:text>
含める必要がある場合 DOCTYPE 宣言、例えば XHTML、も使用する必要があります <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>
上記の例を試してみてください <jsp:text> アクション。