2003年度 データベース論

JavaBeansとJSP
J2EE I
第3回 / 2005-12-17
1
今回の内容


JavaBeansとは何か
JSPからJavaBeansを使う
2
JavaBeansとは何か
3
コンポーネント技法

オブジェクト指向プログラミング言語



Java, C++, Ruby など
オブジェクトを組み合わせてプログラムを作る
コンポーネント技法



オブジェクトを組み合わせて、再利用可能なソフトウェ
ア部品を作成する技法
コンポーネントの例: GUIの部品(ボタン)など
ひとつのコンポーネントは、複数のオブジェクトからな
る場合がある
4
JavaBeansとは何か




Javaによるコンポーネント技法
いくつかのルールのもとに作られた Javaの
クラス
だから、取り扱いやすい
JavaBeansの例
 ボタンやテキストフィールドなどのUIコン
ポーネント
 本のデータと関連する処理
5
JavaBeans のルール



直列化
引数無しのコンストラクタ
プロパティ
6
JavaBeansのルール (1)
直列化


必要に応じて、インスタンスをバイト列に変換できるよう
にする。
 インスタンスをファイルに保存する
 インスタンスをネットワークで転送する
java.io.Serializable インタフェースを実装する。
 このインタフェースでは、メソッドは用意されていない。
public class HogeBean implements Serializable {
……
……
}
7
JavaBeansのルール (2)
引数無しのコンストラクタ

引数無しのコンストラクタ (= デフォルト・コンスト
ラクタ) を用意しなければならない。
public class HogeBean implements Serializable {
public HogeBean() {
……
}
……
}
8
JavaBeansのルール (3)
プロパティ

Bean の持つ「属性」のこと


ボタンをあらわす Bean であれば、次のも
のがプロパティ


Windows の「プロパティ」と同じこと
ボタンの色 / ボタンに描かれる文字 など
本をあらわす Bean であれば、次のものが
プロパティ

タイトル / 著者 / 出版社 など
9
「本」を表す Bean
public class Book implements Serializable {
private String title;
public Book() { ……}
public String getTitle() { return title;}
public void setTitle(String t) { title = t; }
……
}
10
メソッドのネーミングルールと
プロパティ

title というプロパティがある



setTitle() や getTitle() というメソッドがあ
る


setTitle() や getTitle() というメソッドがある。
title というフィールドがあることを意味しない。
title というプロパティがある。
メソッドがあるから、プロパティが存在する
11
setter と getter

setter --> setTitle()



getter --> getTitle()



setTitle() というスタイルのメソッド
プロパティに値をセットできる
getTitle() というスタイルのメソッド
プロパティの値を得ることができる
どちらかが存在するだけでプロパティになりうる
12
setter と getter とプロパティ


setter
getter
プロパティ
setTitle()
getTitle()
title
setter と getter では、先頭が大文字にな
る
プロパティ名では、先頭が小文字
13
JSPからJavaBeansを使う
14
JSP から JavaBeans を
呼び出す

JSPで3つのタグを使う




<jsp:useBean ….. />
<jsp:getProperty ….. />
<jsp:setProperty ….. />
タグだけで書けるので、スクリプトレットの
量を減らせる。
15
<jsp:useBean ….. />
<jsp:useBean
id="today“
scope="page"
class="jp.ac.wakhok.tomoharu.Today" />




Bean のインスタンスを作る
id は Bean の名前
scope は Bean の寿命
class は Bean のクラス名 (パッケージ名から)
16
scope について


Bean の寿命を示す
4つの scope




page
request
要求から応答の間
要求から応答の間 (コンテナ内
でデータのやり取りはできる)
session
セッションが有効である間
application Webアプリケーションが
動いている間
17
<jsp:getProperty ….. />
<jsp:getProperty
name="today" property="year“ />

today と名づけられた Bean の year プロ
パティを出力する。
18
<jsp:setProperty ….. />
<jsp:setProperty
name="mybean“ property="username"
value="maruyama" />

mybean と名づけられた Bean の
username プロパティに “maruyama” を
セットする。
19
Tomcat への配置



Bean は WEB-INF/classes に配置する。
Bean は パッケージに含まれている必要がある。
Jarファイルにまとめて WEB-INF/lib に配置してもよい。
test/ ---|
|-- WEB-INF/ --- web.xml
|
|- classes/
|
|- lib/
|-- loop.jsp




必須
クラスファイル
使用するライブラリ
JSP
20
クラスファイルの配置と
パッケージ名


Bean のパッケージ名に合わせてフォルダを作り、
その中に Bean を配置する。
WEB-INF/classes/jp/ac/wakhok/tomoharu に
Today.class を配置する。
package jp.ac.wakhok.tomoharu;
public class Today implements Serializable {
……
}
21