ImoshochuShop.jspの変更
カタログの表示や買い物かごの制御とは違うため、図10のように新しくformタグを作成しRemoveBasketServletを呼び出すようコードを追加します。
RemoveBasketServletの作成
次はImoshochuShop.jspのformタグのaction属性で指定したRemoveBasketServletを作成します。Servletの作成の仕方はいつもの通りでなので割愛します。図11がRemoveBasketServletのprocessRequestメソッドです。これまで説明してきたServletも至って簡単な作りでしたが、一段と簡単になっています。他に修正すべきクラスとしてBasketHelper、BasketDAO、BasketDAOImplクラスがありますが、それぞれremoveBasketメソッドを追加しているのみです。メソッドの作り自体も簡単ですので、説明は割愛します。サンプルコードをご参照ください。
001: protected void processRequest(HttpServletRequest request, HttpServletResponse response)
002: throws ServletException, IOException {
003:
004: int basketId = 0;
005:
006: BasketHelper basketHelper = new BasketHelper();
007: // ログインしたユーザidをもとにデータベースからbasket情報を
008: // 取得する。第5回は固定で「tomoharu」とする
009: basketId = basketHelper.getBasketId("tomoharu");
010:
011: basketHelper.removeBasket(basketId);
012: request.getSession().setAttribute("basket", null);
013: request.getSession().setAttribute("totalCharge", null);
014:
015: // ImoshochuShop.jspに遷移する
016: RequestDispatcher rd = request.getRequestDispatcher("/ImoshochuShop.jsp");
017: rd.forward(request, response);
018: }
カスケード削除のおかげで、basketテーブルから特定のユーザidを持つテーブルを削除することで、その買い物かごに入っていたbasket_itemテーブルのレコードも削除されます。削除前のbasketテーブルとbasket_itemテーブルの内容が図12と図13です。[レジへ進む]ボタンをクリックした後の買い物かごが図14で、その時のbasketテーブルとbasket_itemテーブルの内容が図15と図16です。両方とも削除されていることが分かります。
ここまでで仕様の5「[レジへ進む]ボタンをクリックすると買い物かごは空になる」の実装が完了したことになります。サンプルコードに含まれるbasketテーブルとbasket_itemテーブルは空になっています。まずはカタログから[買い物かごに追加する]ボタンをクリックし、買い物かごに追加し、仕様通り動作するか確認してください。
サンプルコード
サンプルコードはページトップにあります。ダウンロードしてご利用ください。ソースコード、設定ファイル、データベースのリストア用ファイルが納められています。プロジェクトは図17のような構造になっています。記事通りに作成していくのが一番ですが、一部割愛しているコードもあります。そういう場合サンプルコードを参考にしていただければと思っています。もちろん忙しい方はまずはものを動かしてみたいという場合もあります。そういう場合は機械的にファイルを貼り付けて試していただいても構いません。
次回は複数のユーザが同時に芋焼酎酒店で買い物できるよう認証機能を追加します。







