JavaのMVCモデルとは?Servlet・Model・JSPに処理を分ける理由|確認問題の回答例

このページは、JavaのMVCモデルとは?Servlet・Model・JSPに処理を分ける理由の確認問題の回答例です。
問題1:6000円を送ったとき
| 段階 | 値 |
|---|---|
| ServletでgetParameter | String型の文字列 “6000” |
| Modelのcalculateに渡す | int型の6000 |
| Modelから返る | int型の0 |
| JSPの表示 | 送料: 0円 |
本文の元の条件は5000円以上が送料無料です。戻り値を受け取るのはServletであり、Servletがrequest属性としてJSPへ渡します。
問題2:送料無料の条件を変える
ShippingFeeCalculator.java の subtotal >= 5000 を、次の条件に変更します。
if (subtotal >= 8000) {
return 0;
}
7999円なら送料500円、8000円なら送料0円です。境界の直前と境界そのものを確認します。ServletとJSPで同じ条件を書き直す必要はありません。
問題3:0円の表示を変える
<% if (shippingFee == 0) { %>
<p>送料無料</p>
<% } else { %>
<p>送料: <%= shippingFee %>円</p>
<% } %>
本文の subtotal != null && shippingFee != null の分岐内にある送料のp要素を、このコードに置き換えます。外側でnullではないことを確認済みなので、Integerを0と比較できます。JSPが見ているのは商品合計金額ではなく、計算済みの送料です。
問題4:画面なしで計算を確かめる
ShippingFeeCalculator calculator = new ShippingFeeCalculator();
int actual = calculator.calculate(4500);
System.out.println(actual); // 500
HTTPリクエストやJSPを用意せず、普通のJavaコードで計算を呼び、戻り値を確認できます。JUnitなら、actualと期待値500をassertEqualsで比較できます。これは計算ルールの確認であり、フォーム送信やJSPの表示まで確認できたことにはなりません。