Javaによる Webアプリケーション入門 第4回 JavaBeans とJSP Javaによる Webアプリケーション入門 第4回
ここでの内容 JavaBeans の概要を知る。特に、「プロパティ」について理解する。 JSP から JavaBeans を使う方法について知る。
コンポーネント技法 オブジェクト指向プログラミング言語 コンポーネント技法 Java, C++, Ruby など オブジェクトを組み合わせてプログラムを作る コンポーネント技法 再利用可能なオブジェクトを組み合わせてプログラムを作る技法。
JavaBeans とは何か Javaによるコンポーネント技法 いくつかのルールのもとに作られた Javaのクラス だから、取り扱いやすい GUI 表計算 本のデータと関連する処理
JavaBeans のルール 永続化 引数無しのコンストラクタ プロパティ
JavaBeansのルール (1) 永続化 必要に応じて、Bean の内部状態を保存したり復元したりできるようにする。 public class HogeBean implements Serializable { …… }
JavaBeansのルール (2) 引数無しのコンストラクタ 引数無しのコンストラクタ (= デフォルト・コンストラクタ) を用意する。 public class HogeBean implements Serializable { public HogeBean() { …… }
JavaBeansのルール (3) プロパティ タイトル 著者 出版社 など
「本」を表す Bean public class Book implements Serializable { private String title; public Book() { …..} public String getTitle() { return title;} public void setTitle(String t) { title = t; } …… }
メソッドのネーミングルールと プロパティ title というプロパティがある setTitle() や getTitle() というメソッドがある。 title というフィールドがあることを意味しない。 setTitle() や getTitle() というメソッドがある title というプロパティがある。 メソッドがあるから、プロパティが存在する
setter と getter setter getter どちらかが存在するだけでプロパティになりうる setTitle() というスタイルのメソッド プロパティに値をセットする getter getTitle() というスタイルのメソッド プロパティの値を得る どちらかが存在するだけでプロパティになりうる
setter と getter とプロパティ setter setTitle() getter getTitle() プロパティ名では、先頭が小文字
JSP から JavaBeans を 呼び出す JSPで3つのタグを使う タグだけで書けるので、スクリプトレットの量を減らせる。 <jsp:useBean ….. /> <jsp:getProperty ….. /> <jsp:setProperty ….. /> タグだけで書けるので、スクリプトレットの量を減らせる。
<jsp:useBean ….. /> id="today“ scope="page" class="jp.ac.wakhok.tomoharu.Today" /> Bean のインスタンスを作る id は Bean の名前 scope は Bean の寿命 class は Bean のクラス名 (パッケージ名から)
scope について Bean の寿命を示す 4つの scope page 要求から応答の間 request 要求から応答の間 (コンテナ内 でデータのやり取りはできる) session セッションが有効である間 application Webアプリケーションが 動いている間
<jsp:getProperty ….. /> name="today" property="year“ /> today と名づけられた Bean の year プロパティを出力する。
<jsp:setProperty ….. /> name="mybean“ property="username" value="maruyama" /> mybean と名づけられた Bean の username プロパティに “maruyama” をセットする。
Tomcat への配置 Bean は WEB-INF/classes に配置する。 Bean は パッケージに含まれている必要がある。 Jarファイルにまとめて WEB-INF/lib に配置してもよい。 test/ ---- | |-- WEB-INF/ --- web.xml 必須 | |- classes/ クラスファイル | |- lib/ 使用するライブラリ |-- loop.jsp JSP
クラスファイルの配置と パッケージ名 Bean のパッケージ名に合わせてフォルダを作り、その中に Bean を配置する。 WEB-INF/classes/jp/ac/wakhok/tomoharu に Today.class を配置する。 package jp.ac.wakhok.tomoharu; public class Today implements Serializable { ……