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

Schoo Java入門 中級 第5回 サーバーサイドアプリケーションの実装基礎

このページは、JavaのMVCモデルとは?Servlet・Model・JSPに処理を分ける理由の確認問題の回答例です。

問題1:6000円を送ったとき

段階値
ServletでgetParameterString型の文字列 “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の表示まで確認できたことにはなりません。

元の記事に戻る

JavaのMVCモデルとは?Servlet・Model・JSPに処理を分ける理由