コンテンツにスキップ

第4章 削除

1 削除確認画面へのリンク

商品の削除画面を作ります。まず、商品一覧(slist.jsp)の各商品の削除リンクを作り、そこをクリックすると、削除確認画面に遷移します。そこで削除ボタンを押すと、データが削除され、商品一覧に戻るという流れです。

商品一覧  削除確認  削除  商品一覧

まず、商品一覧から削除確認画面へのリンクを作成します。slist.jsp を修正し、削除確認画面にリンクを貼ります。削除確認画面は del?sid=商品ID というURLにします。

<td><a href="del?sid=${shouhin.sid}">削除</a></td>

これにより、「削除」が商品の削除確認画面へのリンクとなります。

2 削除確認画面

次に削除確認画面を作ります。 DelServletを作成します。URLは /del とします。

リンク del?sid=商品ID という形でこのサーブレットはアクセスされますのでまずは、送られてきたsidを受け取ります。

int sid = Integer.parseInt(request.getParameter("sid"));

次にこの商品IDで商品テーブルを検索します。sidは主キーなのでDAOのfindByIdで行います。

ShouhinDAO dao = new ShouhinDAO();
Shouhin s = dao.find(sid);

商品の検索ができたら、del.jspにshouhinという名前で渡します。

del.jsp では、商品ID、商品名、単価を表示します。

<h1>商品の削除</h1>

<p>商品ID:${shouhin.sid }</p>
<p>商品名:${shouhin.sname }</p>
<p>単価 :${shouhin.tanka }</p>

そして、削除ボタンを押すと、URL /del にPOSTで遷移します。このとき削除する商品の商品IDをhiddenで渡します。

<form action="del" method="post">
<input type="hidden" name="sid" value="${shouhin.sid }">
<input type="submit" value="削除">
</form>

3 削除処理

DelServletのdoPostではsidを受け取ってデータベースからの削除処理を行います。

まず、フォームからsidを受け取ります。

int sid = Integer.parseInt(request.getParameter("sid"));

次にDAOのdeleteメソッドを使って削除処理を行います。

ShouhinDAO dao = new ShouhinDAO();
dao.delete(sid);

削除が終わったら、商品一覧に自動で移動(リダイレクト)します。

response.sendRedirect("slist");