トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

JSPの実際:Java Beansとの連携

Java Beansとの連携

 Java Beans(Bean)とは

  • 以下のような条件を満たすJavaのクラス。この条件があるため、GUI環境での開発が可能となったり、再利用がしやすくなっている

    1. publicでかつ引数なしのコンストラクタを持つ
    2. メソッドの名前は定められた命名規則に従う
      • プロパティへのアクセスのためにSetterメソッド、Getterメソッドを持つ
    3. シリアライズ可能である
      • java.io.Serializableインターフェイスを継承している
      • useBeanタグでJSPから使う場合には必ずしもシリアライズ可能でないクラスも利用できる

  • JSPで扱うと管理が難しくなってしまう複雑なロジックを記述する場合に、Java Beanを用いることでロジック部分を分離することができる

 Java Beansの例

1
2
3
4
5
6
7
8
9
10
11
12
13
package bean;

import java.io.Serializable;

public class Sample implements Serializable {
    String property;
    public String getProperty() {
        return property;
    }
    public void setProperty(String property) {
        this.property = property;
    }
}

 JSPからのJava Beansの利用

  • JSPからJava Beansを利用する場合にはuseBeanタグを用いる

<jsp:useBean>タグの書式

<jsp:useBean id="[識別名]" scope="[スコープ(デフォルトはpage)]" class="[クラス]">

<jsp:setProperty>タグ

  • Java Beansに値を設定するときに用いる
  • 書式
<jsp:setProperty name="[Beanの名前]" property="[設定したいプロパティ名]" value="[設定する値]" />

<jsp:getProperty>タグ

  • Java Beansから値を取得するさいに用いる
  • 書式
<jsp:getProperty name="[Beanの名前]" property="[取得したいプロパティ名]" />
  • EL式でより簡単に記述することができる
${[Beanの名前].[取得したいプロパティ名]}

 <jsp:useBean>タグの例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package bean;

public class Bean {
    String strA,strB;
    public String getStrA() {
        return strA;
    }
    public void setStrA(String strA) {
        this.strA = strA;
    }
    public String getStrB() {
        return strB;
    }
    public void setStrB(String strB) {
        this.strB = strB;
    }
    public String getStrAandB() {
        return "strA="+strA+";strB="+strB;
    }
}
1
2
3
4
5
6
7
8
9
10
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<jsp:useBean id="bean" class="bean.Bean">
    <jsp:setProperty name="bean" property="strA" value="abc" />
    <jsp:setProperty name="bean" property="strB" value="def" />
</jsp:useBean>
${bean.strAandB}
</body>
</html>

 JSPの基本:宣言部にあった運勢表示JSPを書き換えた例

  • JSPの基本:宣言部にあったサンプル「運勢表示JSP」をJavaBeansを用いるように書き換えたものである。

運勢取得のロジックを実装したクラス:bean.Unsei.java

1
2
3
4
5
6
7
8
9
10
11
package bean;

import java.util.Random;

public class Unsei {
    static Random random = new Random();    //乱数生成器
    final static String[] UN = { "大吉", "中吉", "小吉", "吉", "凶", "大凶", "中辛・・・おっと間違えた" };
    public String getUnsei() {
          return UN[random.nextInt(UN.length)];
    }
}

表示部分のJSP:unseiWithBean.jsp

1
2
3
4
5
6
7
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
<jsp:useBean id="un" class="bean.Unsei" />
<html>
    <body>
      あなたの現在の運勢は${un.unsei}
    </body>
</html>

 「じゃんけん」ゲームを書き直した例

  • JavaBeansのファイル
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package bean;

import java.util.Random;

public class Jyanken {
    private static Random random = new Random(); //乱数生成器
    private final static String[] TE = {"ぱー","ちょき","ぐー"};
    private String player,computer;
    public String getComputer() {
        computer = TE[random.nextInt(TE.length)];    //コンピュータの手を無作為に設定
        return computer;
    }
    public void setPlayer(String player) {
        this.player = player;
    }
    public String[] getAll() {
        return TE;
    }
    public String getJudge() {
        if(player.equals(computer)) {
            return "アイコです。<BR>けっこう調子いいんじゃないですか。";
        } else if((player.equals("ぱー")&&computer.equals("ぐー"))||
                (player.equals("ちょき")&&computer.equals("ぱー"))||
                (player.equals("ぐー")&&computer.equals("ちょき"))){
            return "あなたの勝ちです。<BR>はっきり言ってまぐれ勝ちでしょう。";
        }
        return "わたしの勝ちです。けっ!<BR>首を洗って出直してきてちょ。";
    }
}
  • JSPファイル
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<fmt:requestEncoding value="utf-8" />
<jsp:useBean id="jyanken" class="bean.Jyanken" />
<html>
    <body>
    じゃんけん、ぽん!
    <c:forEach items="${jyanken.all}" var="te">
        <a href="${pageContext.request.requestURI}?player=${te}">${te}</a>
    </c:forEach>
    <c:if test="${!empty param.player}">
        <br/><br/>
        勝負の結果
        <br/><br/>
        プレイヤーの手 <${param.player}> ⇔ コンピュータ の手<${jyanken.computer }>
        <br/><br/>
        <jsp:setProperty name="jyanken" property="player" value="${param.player}" />
        ${jyanken.judge}
    </c:if>
    </body>
</html>

 課題

  1. X+Y=Zという形で、XとYの値を取りそれを足し合わせたZを返すようなクラスを作成しなさい(/src/kadai/XPlusY・・・他のようにWebContentフォルダ以下でないことに注意)
    • setX(String xStr)、setY(String yStr)、int getZ()というメソッドをつける
  2. 上記のクラスをBeanとして利用するJSPを作成しなさい(/kadai/09-01plus.jsp)。

最終更新時間:2009年01月15日 00時15分30秒