ショッピングカートシステムの作成でカートの中に追加まではできたのですが、削除の実装ができません。サーブレットを介してカートの中の値を取得し一つ削除する。複数商品がある場合は一つ削除し値をセットする形は理解できるのですが、書き方がいまいちわかりません。教えていただけると幸いです。
環境は・JSP・Java・Tomcat・MYSQLです。
AddServlet.Java
1package servlet; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5import java.util.ArrayList; 6import java.util.List; 7 8import javax.servlet.RequestDispatcher; 9import javax.servlet.ServletException; 10import javax.servlet.annotation.WebServlet; 11import javax.servlet.http.HttpServlet; 12import javax.servlet.http.HttpServletRequest; 13import javax.servlet.http.HttpServletResponse; 14import javax.servlet.http.HttpSession; 15 16import model.entity.UserBean; 17 18/** 19 * Servlet implementation class ItemAdd 20 */ 21@WebServlet("/itemadd") 22public class ItemAddServlet extends HttpServlet { 23 private static final long serialVersionUID = 1L; 24 25 /** 26 * @see HttpServlet#HttpServlet() 27 */ 28 public ItemAddServlet() { 29 super(); 30 // TODO Auto-generated constructor stub 31 } 32 33 /** 34 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse 35 * response) 36 */ 37 protected void doGet(HttpServletRequest request, HttpServletResponse response) 38 throws ServletException, IOException { 39 // TODO Auto-generated method stub 40 doPost(request, response); 41 response.getWriter().append("Served at: ").append(request.getContextPath()); 42 } 43 44 /** 45 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 46 * response) 47 */ 48 protected void doPost(HttpServletRequest request, HttpServletResponse response) 49 throws ServletException, IOException { 50 // TODO Auto-generated method stub 51 52 request.setCharacterEncoding("UTF-8"); 53 String item_nm = request.getParameter("itemcode"); 54 int price = Integer.parseInt(request.getParameter("itemprice")); 55 int orderQuantity = Integer.parseInt(request.getParameter("orderQuantity")); 56 57 response.setContentType("text/html; charset=UTF-8"); 58 59 PrintWriter pw = response.getWriter(); 60 61 // セッションオブジェクトの取得 62 HttpSession session = request.getSession(); 63 64 // セッションスコープからの属性値の取得 65 List<UserBean> CartList = (List<UserBean>) session.getAttribute("CartList"); 66 67 // タスクリストが格納されていなかった場合 68 if (CartList == null) { 69 CartList = new ArrayList<UserBean>(); 70 } 71 72 // リクエストのエンコーディング方式を指定 73 request.setCharacterEncoding("UTF-8"); 74 75 UserBean cart = new UserBean(); 76 77 cart.setItem_nm(request.getParameter("itemcode")); 78 cart.setPrice(Integer.parseInt(request.getParameter("itemprice"))); 79 cart.setOrderQuantity(Integer.parseInt(request.getParameter("orderQuantity"))); 80 81 CartList.add(cart); 82 83 // セッションスコープへの属性の設定 84 session.setAttribute("CartList", CartList); 85 // リクエストの転送 86 RequestDispatcher rd = request.getRequestDispatcher("menucartservlet"); 87 rd.forward(request, response); 88 89 90 91 92 } 93 94}
jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8" import="model.entity.UserBean,java.util.List"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>カート画面</title> 8</head> 9<body> 10 <h1>カート画面</h1> 11 12 <% 13 14 // セッションスコープからの属性値の取得 15 List<UserBean> CartList = (List<UserBean>) session.getAttribute("CartList"); 16 17 if (CartList == null) { 18 %> 19 20 カート内に商品がありません。 21 22 <% 23 }else{ 24 %> 25 26 <h3>カート内商品一覧</h3> 27 28 <table> 29 <tr> 30 <th>商品名</th> 31 <th>価格(円)</th> 32 <th>購入個数</th> 33 </tr> 34 35 <% 36 int sum = 0; 37 for (UserBean user : CartList) { 38 %> 39 <tr> 40 <td><%=user.getItem_nm()%></td> 41 <td><%=user.getPrice()%></td> 42 <td><%=user.getOrderQuantity()%></td> 43 <td><form action="itemdeleteservlet" method="post"> 44 <button type="submit" value="カートから削除" name="button">カートから削除</button> 45 </form></td> 46 </tr> 47 <% 48 sum = sum + user.getPrice() * user.getOrderQuantity(); 49 } 50 %> 51 </table> 52 <br> 53 <%int taxIncluded = (int)sum * 110 / 100;%> 54 合計:<%= taxIncluded %>円 55 <br> 56 (内消費税:<%=(taxIncluded - sum) %>円) 57 <% 58 } 59 %> 60 61 62 63 <form action="CartOrderServlet" method="POST"> 64 <input type="submit" value="レジへ進む"> 65 </form> 66 <a href="menucartservlet">商品一覧画面へ</a> 67</body> 68</html>
DeleteServlet
1package servlet; 2 3import java.io.IOException; 4 5import javax.servlet.RequestDispatcher; 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11import javax.servlet.http.HttpSession; 12 13/** 14 * Servlet implementation class ItemDeleteServlet 15 */ 16@WebServlet("/itemdeleteservlet") 17public class ItemDeleteServlet extends HttpServlet { 18 private static final long serialVersionUID = 1L; 19 20 /** 21 * @see HttpServlet#HttpServlet() 22 */ 23 public ItemDeleteServlet() { 24 super(); 25 // TODO Auto-generated constructor stub 26 } 27 28 /** 29 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 30 */ 31 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 32 // TODO Auto-generated method stub 33 response.getWriter().append("Served at: ").append(request.getContextPath()); 34 } 35 36 /** 37 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 38 */ 39 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 40 41 // リクエストオブジェクトのエンコーディング方式の指定 42 request.setCharacterEncoding("UTF-8"); 43 44 HttpSession session = request.getSession(); 45 46 47 /* 48 String[] ids = request.getParameterValues("delete"); 49 50 // DAOの生成 51 UserDAO dao = new UserDAO(); 52 53 try { 54 // DAOの利用 55 dao.delete(ids); 56 } catch (ClassNotFoundException | SQLException e) { 57 e.printStackTrace(); 58 } 59 */ 60 // リクエストの転送 61 RequestDispatcher rd = request.getRequestDispatcher("cart.jsp"); 62 rd.forward(request, response); 63 } 64 65} 66

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。