JSP 3章 アクション
- 3.1. アクション
- 3.2. <jsp:useBean>
- 3.3. <jsp:setProperty>と<jsp:getProperty>
- 3.4. <jsp:include>と<jsp:forward>
- 3.5. <jsp:plugin>
- 3.6. <jsp:attribute>と<jsp:body>
- 3.7. <jsp:doBody>と<jsp:invoke>
- 3.8. <jsp:element>
3.2. <jsp:useBean>
<jsp:useBean>はJavaBeansをインスタンス化して特定のスコープに登録を行い、JSPページから使用可能にするアクションです。既に登録済みである場合にはインスタンスの生成を行いません。<jsp:useBean>アクションの属性と定義は以下の通りです。<jsp:useBean>アクションの属性には、スクリプトを書く事は許されていません。
属性名 | 必須 | スクリプト 可能 |
説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
id | ○ | JavaBeansのインスタンス名。ページ内で一意な名前でなければならない。 | |||||||||
scope |
インスタンスが使用可能になるスコープを定義。それぞれのスコープの意味は下記のとおり。デフォルトは「page」。インスタンスはid名で該当スコープ(暗黙オブジェクト)に登録される。
|
||||||||||
class | JavaBeanのクラス名。インスタンスの生成に利用される。 | ||||||||||
beanName | JavaBeanの名前。インスタンスの生成に利用される。インスタンスを生成する場合には「class」か「beanName」のいずれかを指定しなければならない。いずれも指定しなかった場合には、該当Beanは既にインスタンス化され、指定スコープに登録されているとみなされる。 | ||||||||||
type | インスタンスの実行時の型を指定。「beanName」でインスタンスを生成する場合には必ず指定。また既にスコープにインスタンスが存在し、かつ「class」を省略する場合は必須。それ以外の場合は任意。 |
以下は使用例です。「jp.co.fourdd.bean.Animal」クラスのインスタンスを生成し、「tiger」という名前で「session」に登録しています。またそれ以降、「tiger」という名前でインスタンスを使用する事が可能になります。
<jsp:useBean id="tiger" class="jp.co.fourdd.bean.Animal" scope="session" /> <%=tiger.getName() %>
<jsp:useBean>はボディ部を指定する事も可能です。ボディ部はインスタンスが生成された場合にのみ評価・実行されます。以下の例では、インスタンスが生成された場合にのみ値の設定を行います。
<jsp:useBean id="tiger" class="jp.co.fourdd.bean.Animal" scope="session" > <% tiger.setName("虎"); %> </jsp:useBean>
最後にJavaBeanとして使用できるクラスの仕様を以下にまとめます。この仕様に従って作成されたクラスは、JavaBeanとして<jsp:useBean>タグから使用可能です。
- 引数を持たないパブリックなコンストラクタを持っている。
- メンバ変数に値を設定する「setter」メソッド(「set???」メソッド)を持っている。
- メンバ変数の値を取得する「getter」メソッド(「get???」メソッド)を持っている。
(実習課題1)
サーブレットの5章実習課題3を改良しなさい。
- 出力ページにおいて、<jsp:useBean>タグを使用するように変更する事。