73-1.●JSP・BeansのMVアーキテクチャ(元本投資計算)
これまで作成していたMVCアーキテクチャの実装をMVアーキテクチャに変更することで、BeanをJSPから直接参照する方法を実習します。
これまでのBeanはコンストラクタ引数で値を設定してインスタンス化し、コンストラクタ内で業務ロジックを処理する仕様にしていました。
JSPから直接Beanを呼び出す場合、引数指定のコンストラクタで実体化することはできません。
つまりBeanは引数無しのデフォルトコンストラクタを使ってインスタンス化し、Setterメソッドで値を設定して業務ロジックのメソッドを起動し、結果をgetterメソッドで受け取ることになります。
この時privateで宣言されたクラス変数をプロパティと呼び、set〇〇〇 get〇〇〇の〇〇〇はプロパティと名前が一致しなければなりません。
元本投資計算アプリケーションの実装ーMVモデル
以前、実習したマネーシミュレーション機能の一つである元本投資計算ではBeanを既存のものとして利用していました。
この時使用したBeanはJavaのクラスの標準的な仕様に従っていません。よって新たにクラスを設計しなおして実装し、動きを確認します。
以下の仕様に沿ってWebアプリケーションを作成してください。
新たにプロジェクトを作成します。プロジェクト名はlibconとします。
【仕様】
InvestmentSimBeanクラスを元本と利率と期間の3つの引数をもつコンストラクタで実体化します。
simulationメソッドを実行することでsimフィールドに投資経過の履歴がhtml文字列で表組されます。
利用側のクラスはgetSim()メソッドで投資経過の履歴を取得します。
(以前利用したクラス図)
package:jp.ict.aso.model
-------------------------------------- //クラス名
InvestmentSimBean
-------------------------------------- //フィールド(プロパティ)
- ganpon:int //入力単位は円(元本)
- riritu:double //入力単位は%の実数値(利率)
- kikan:int //入力単位は年(期間)
- sim:String //結果取得はhtml
-------------------------------------- //メソッド
+ InvestmentSimBean(ganpon:int,riritu:double,kikan:int):
+ simulation():void //シミュレーション実施
+ getSim():String //結果の取得
+ getGanpon():int //設定された元本取得
+ getRiritu():double //設定された利率取得
+ getKikan():int //設定された期間取得
--------------------------------------
-:private
+:public
#:protected
(今回作成する新しいクラス図)赤のメソッドを追加
package:jp.ict.aso.model
-------------------------------------- //クラス名
InvestmentSimBean
-------------------------------------- //フィールド(プロパティ)
- ganpon:int //入力単位は円(元本)
- riritu:double //入力単位は%の実数値(利率)
- kikan:int //入力単位は年(期間)
- sim:String //結果取得はhtml
-------------------------------------- //メソッド
+ InvestmentSimBean(ganpon:int,riritu:double,kikan:int):
+ InvestmentSimBean():
+ setGanpon():int //元本の設定
+ setRiritu():double //利率の設定
+ setKikan():int //期間の設定
+ simulation():void //シミュレーション実施
+ getSim():String //結果の取得
+ getGanpon():int //設定された元本取得
+ getRiritu():double //設定された利率取得
+ getKikan():int //設定された期間取得
--------------------------------------
-:private
+:public
#:protected
【実装】
①元本投資計算用JavaBeansクラスを作成します
libconプロジェクトを右クリック→新規→クラス
パッケージ:jp.ict.aso.model
名前:InvestmentSimBean
ソースコード:考えましょう
ヒント:simlation()メソッドはこんな感じです↓
public void simulation() {
int shuueki=0;
double risoku=0.0;
//数値は3桁区切りにする
NumberFormat nf= NumberFormat.getCurrencyInstance();
//ヘッダーを付ける
sim=sim+"野村証券(元本投資) 年複利 四捨五入 非課税<br>";
sim=sim+"<table border=0>";
sim=sim+"<tr><th>期間</th><th>運用収益</th><th>元本+運用収益</th></tr>";
//計算ロジック
for(int i=1;i<=kikan;i++){
risoku=ganpon*riritu+0.5; //四捨五入
shuueki=shuueki+(int)risoku;
ganpon=ganpon+(int)risoku;
sim=sim+"<tr><td align=right>"+i+"年目</td><td align=right>"+nf.format(shuueki)+"</td>";
sim=sim+"<td align=right>"+nf.format(ganpon)+"</td></tr>";
}
sim=sim+"</table>";
}
全体はこんな感じです↓
②計算パラメータを入力しBeanを実体化するJSPファイルを作成します
libconプロジェクトを右クリック→新規→その他→Web→JSPファイル
保存場所:libcon/src/main/webapp/ ← ここに保存ですよ!
ファイル名:investmentCalc.jsp
ソースコード:考えましょう
ヒント:■を埋めましょう
③Webアプリケーションを実行します
JSPファイル(investmentCalc.jsp)を実行します!!
【課題】
JSPを拡張タグではなく、Javaのコードで入出力するよう変更してください。
※jspファイル名はinvestmentCalcCode.jspとします。
※ソースコードを提出してください(スクショで大丈夫)。
こんな感じです↓
investmentCalcCode.jsp(■をコードに置き換えます)