SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

GlassFishからアプローチするJava

GlassFishからアプローチするJava~入門編~
第6回「Webアプリケーションの作成 ON DELETE CASCADE」

買い物かごへの削除、更新機能の実装

ダウンロード サンプルコード (16.5 KB)

ImoshochuShop.jspの変更

 カタログの表示や買い物かごの制御とは違うため、図10のように新しくformタグを作成しRemoveBasketServletを呼び出すようコードを追加します。

図10.ImoshochuShop.jspの変更
図10.ImoshochuShop.jspの変更

RemoveBasketServletの作成

 次はImoshochuShop.jspのformタグのaction属性で指定したRemoveBasketServletを作成します。Servletの作成の仕方はいつもの通りでなので割愛します。図11がRemoveBasketServletのprocessRequestメソッドです。これまで説明してきたServletも至って簡単な作りでしたが、一段と簡単になっています。他に修正すべきクラスとしてBasketHelper、BasketDAO、BasketDAOImplクラスがありますが、それぞれremoveBasketメソッドを追加しているのみです。メソッドの作り自体も簡単ですので、説明は割愛します。サンプルコードをご参照ください。

図11.RemoveBasketServletのprocessRequestメソッド
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です。両方とも削除されていることが分かります。

図12.削除前のbasketテーブル
図12.削除前のbasketテーブル
図13.削除前のbasket_itemテーブル
図13.削除前のbasket_itemテーブル
図14.削除後の買い物かご
図14.削除後の買い物かご
図15.削除後のbasketテーブル
図15.削除後のbasketテーブル
図16.削除後のbasket_itemテーブル
図16.削除後のbasket_itemテーブル

 ここまでで仕様の5「[レジへ進む]ボタンをクリックすると買い物かごは空になる」の実装が完了したことになります。サンプルコードに含まれるbasketテーブルとbasket_itemテーブルは空になっています。まずはカタログから[買い物かごに追加する]ボタンをクリックし、買い物かごに追加し、仕様通り動作するか確認してください。

サンプルコード

 サンプルコードはページトップにあります。ダウンロードしてご利用ください。ソースコード、設定ファイル、データベースのリストア用ファイルが納められています。プロジェクトは図17のような構造になっています。記事通りに作成していくのが一番ですが、一部割愛しているコードもあります。そういう場合サンプルコードを参考にしていただければと思っています。もちろん忙しい方はまずはものを動かしてみたいという場合もあります。そういう場合は機械的にファイルを貼り付けて試していただいても構いません。

図17.第6回までのプロジェクト構造
図17.第6回までのプロジェクト構造

 次回は複数のユーザが同時に芋焼酎酒店で買い物できるよう認証機能を追加します。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
GlassFishからアプローチするJava連載記事一覧

もっと読む

この記事の著者

川久保 智晴(カワクボ トモハル)

haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP,  C#, JavaScriptなども一時期は業...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4920 2010/03/10 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー