目次へ

3.2. <jsp:useBean>

<jsp:useBean>はJavaBeansをインスタンス化して特定のスコープに登録を行い、JSPページから使用可能にするアクションです。既に登録済みである場合にはインスタンスの生成を行いません。<jsp:useBean>アクションの属性と定義は以下の通りです。<jsp:useBean>アクションの属性には、スクリプトを書く事は許されていません。

属性名 必須 スクリプト
可能
説明
id   JavaBeansのインスタンス名。ページ内で一意な名前でなければならない。
scope    

インスタンスが使用可能になるスコープを定義。それぞれのスコープの意味は下記のとおり。デフォルトは「page」。インスタンスはid名で該当スコープ(暗黙オブジェクト)に登録される。

page 「javax.servlet.jsp.PageContext」に登録。インスタンスを生成したJSPページ内でのみ参照可能。
request 「javax.servlet.http.HttpServletRequest」に登録。クライアントからの1つの要求を処理する範囲内で参照可能。
session 「javax.servlet.http.HttpSession」に登録。セッションの範囲内で参照可能。
application 「javax.servlet.ServletContext」に登録。WWWアプリケーション全体で参照可能。
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>タグを使用するように変更する事。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp