第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");