71-1.EclipseによるJSP・BeansのMVアーキテクチャ(図書検索)

71-1.EclipseによるJSP・BeansのMVアーキテクチャ(図書検索)

既存の図書管理DBの検索行うWebアプリケーションをMVモデルで作成します
ハッシュログインで作成したMVCモデルのの図書検索部分をMVモデルに変更します。

BeanをJSPから直接参照します。

これまでのBeanはコンストラクタ引数で値を設定してインスタンス化し、コンストラクタ内で業務ロジックを処理する仕様にしていました。

JSPから直接Beanを呼び出す場合、引数指定のコンストラクタで実体化することはできません。
つまりBeanは引数無しのデフォルトコンストラクタを使ってインスタンス化し、Setterメソッドで値を設定して業務ロジックのメソッドを起動し、結果をgetterメソッドで受け取ることになります。
この時privateで宣言されたクラス変数をプロパティと呼びset〇〇〇 get〇〇〇の〇〇〇はプロパティと名前が一致しなければなりません。


以下の仕様を実現するJavaアプリケーションを作成し、その処理ロジックをBean化してWebアプリケーションに適用させます。

【仕様】
以前作成した「booklibプロジェクト」に追加します。
データベースに接続しhtmlのテーブルタグで書式を整えて表示するBeanを作成します。
この部分は以前の実習ではクラスファイルを提供していましたので、今回は独自に作成します。

【LibSearchBean】クラス図
--------------------------------------  //クラス名
LibSearchBean                                
--------------------------------------  //フィールド(プロパティ)
- tel:String                      
- resultset:String                       
- list:ArrayList<String>                       
--------------------------------------  //メソッド
+ LibSearchBean()                     //コンストラクタ
+ LibSearchBean(tel:String)        //コンストラクタ
+ bookSearch():void                     //ロジック
+ setTel(tel:String):void        //セッター
+ getTel():String                     //ゲッター
+ getResultset():String            //ゲッター
+ getList():ArrayList                //ゲッター
--------------------------------------
- private
+ public


【プロジェクトの作成
新たにプロジェクトを作成しますプロジェクト名はbooklibとします。

0.データベースの構築 ←←←←←←←←←(済)

【PostgreSQL
①図書の貸出管理のDBに接続
接続するDB名を「library」に変えてCSEから接続します。

図書貸出管理DBに接続


V_利用者毎貸出し履歴の出力件数を確認してください。21件あります。

確認できたら接続を断ちます。



1.図書検索Webアプリケーションの作成(MVモデル)

①図書検索用JavaBeansクラスを作成します
     libconプロジェクトを右クリック→新規→クラス
  • LibSearchBean.java
            パッケージ:jp.ict.aso.model
            名前:LibSearchBean

            ソースコード:こんな感じです

ロジック部分のbookSearch()メソッドはコピーできるようにしておきます。
それ以外のメソッドは定型的な形式です。
public void bookSearch(){
String name; //
String section; //
String book; //
String rental; //
String back; //
try{
// ●業務処理セクション
//[1]JDBCドライバのロード
Class.forName("org.postgresql.Driver");
//「2」RDBへの接続
Connection connection =DriverManager.getConnection
("jdbc:postgresql://192.168.56.10:5432/library","postgres","postgres");
//[3]SQL文のコンテナ作成
Statement stmt = connection.createStatement();
//[4]SQL文を実行する
ResultSet rs = stmt.executeQuery
("select * from v_利用者毎貸出し履歴 where 利用者電話番号 like '" + tel + "'"); //
//[5]RDBの検索結果を取り出す
resultset=resultset+"<table border=1><tr><th bgcolor=#cccccc>利用者電話番号</th>"
+ "<th bgcolor=#cccccc>氏名</th><th bgcolor=#cccccc>所属</th>"
+ "<th bgcolor=#cccccc>書名</th><th bgcolor=#cccccc>貸出日</th>"
+ "<th bgcolor=#cccccc>返却日</th></tr>";
while( rs.next() ){
tel = rs.getString("利用者電話番号" );
name = rs.getString("氏名" );
section = rs.getString( "所属" );
book = rs.getString( "書名" );
rental = rs.getString( "貸出日" );
back = rs.getString( "返却日" );
if(back == null) {back="";}
list.add( tel+","+name+","+section+","+book+","+rental+","+back);
resultset=resultset+"<tr><td>"+tel+"</td><td>"+name+"</td><td>"+section+"</td>"
+ "<td>"+book+"</td><td>"+rental+"</td><td>"+back+"</td></tr>";
}
resultset=resultset+"</table>";
//[6]データベースから切断する
stmt.close();
connection.close();

}catch ( Exception e) {
e.printStackTrace();
}
}








②図書検索の入出力画面用JSPファイルを作成します
     libconプロジェクトを右クリック→新規→その他→Web→JSPファイル
  • libSearch.jsp
            保存場所:booklib/src/main/webapp/ ← ここに保存ですよ!
            ファイル名:libSearch.jsp


            ソースコード:考えましょう

ヒント:■を埋めましょう



Webアプリケーションを実行します
JSPファイル(libSearch.jsp)を実行します!!





課題

JSPを拡張タグではなく、Javaのコードで入出力するよう変更してください。
※jspファイル名はlibSearchCode.jaspとします。
※ソースコードを提出してください(スクショで大丈夫)。

こんな感じです↓

libSearchCode.jsp(■をコードに置き換えます

(実行結果)