2007年10月16日火曜日

アクションタグ useBean

JSP では標準で使えるアクションタグがあります。
アクションタグを使うことで Java のコードを減らして可読性、保守性を高める。

jsp:useBean
JSP ページ内で JavaBean クラスのインスタンスを取得または生成する。

<構文>
<jsp:useBean id="obj" class="sample.SCWCDBean" scope="request />
obj という SCWCD のオブジェクトを JSP ページで利用できる。

<useBean の属性>
id            オブジェクト名
class        オブジェクトのクラス
type        オブジェクトの型(インターフェース使用可)
beanName    オブジェクトの名前
scope        スコープ(デフォルト page)

<scope について>
page            現在のページ
request            現在のページ + include 先 + forward 先
session            セッション領域
application        アプリケーション全域

<ルール>
・class 属性を使うとスコープにそのクラスのオブジェクトが見つかるとそれを利用し、見つからないと新しく作成する。
・type 属性を使うとスコープにそのクラスのオブジェクト、またはそのインターフェース型にキャストできるオブジェクトを見つけてその「型」で利用します。
見つからない場合はインスタンスを作成せず、InstantiationException が投げられる。
・type 属性と class 属性を同時に使うと オブジェクトが type 属性の型にキャストされる。
・beanName 属性は type 属性との組み合わせのみで使用できる。
・beanName 属性はオブジェクトを作成する際に class 属性の代わりとなるので class 属性と組合すことはできない。

<サンプル>
index.jsp
<%@ page contentType="text/html;charset=Shift_JIS"%>
<jsp:useBean id="obj" class="beans.SCWCDBean" scope="session" />
<html>
<body>
<a href="/SCWCD/usebeanSample.jsp">usebeanSample.jsp</a><br />
</body>
</html>
________

usebeanSample.jsp
<%@ page contentType="text/html;charset=Shift_JIS"%>
<jsp:useBean id="obj" type="beans.SJCPCertified" scope="session" />
<html>
<body>
SCJP 獲得 : <%=obj.status()%>
</body>
</html>
________

SJCPCertified.java
package beans;
public interface SJCPCertified {
    boolean SJCPCERTIFIED = true;
    boolean status();
}
________

SCWCDBean.java
package beans;
import java.io.Serializable;
@SuppressWarnings("serial")
public class SCWCDBean implements Serializable, SJCPCertified {
    public SCWCDBean() {}
    private String name;
    private int score;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getScore() {
        return score;
    }
    public void setScore(int score) {
        this.score = score;
    }
    public boolean status() {
        return SJCPCERTIFIED;
    }
}

<出力結果>
SCJP 獲得 : true

usebeanSample.jsp で SJCPCertified 型のオブジェクトが獲得されている。

0 件のコメント: