【模組開發】商品購物車的實現——3.使用者新增刪除商品的操作(控制層)
阿新 • • 發佈:2019-01-01
1.主頁面實現新增
首先在我們的主頁面相關的按鈕上加上連線地址的跳轉,轉到一個jsp頁面,這個jsp頁面實現的是新增商品的功能。
index,jsp中需要加入的程式碼,例如:
<!-- 在這裡將商品加入購物車 -->
<a href="addGood.jsp?id=<%=good.getId() %>" title="header=[Add to cart] body=[ ] fade=[on]"><img src="images/cart.gif" alt="" title="" border="0" class="left_bt" /></a>
2.addGood.jsp新增商品的實現
<%@page import="com.model.Cart"%> <%@page import="com.model.Good"%> <%@page import="com.dao.GoodDao"%> <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <body> <h1> 這裡是我們的新增商品頁面。你能看到這說明頁面沒有跳轉到購物車頁面 </h1> </body> </html> <!-- 這裡實現一個業務邏輯:將商品新增到購物車 --> <% //獲取當前從頁面中傳遞過來的id int id=Integer.parseInt(request.getParameter("id")); //根據id從資料庫獲取對應的商品 GoodDao dao=new GoodDao(); Good good=dao.getGoodById(id); //獲得我們需要的購物車 Cart cart; if(session.getAttribute("cart")!=null) { //如果購物車已經存在。用session中的購物車 cart=(Cart)session.getAttribute("cart"); }else{ cart=new Cart(); } //將商品加入到集合中 cart.addGood(good, 1); //將購物車加入到session中的屬性中 session.setAttribute("cart", cart); //全部操作完成之後頁面重定向到我們現實購物車的頁面 response.sendRedirect("cart.jsp"); %>
從上面可以看出,將購物車新增商品之後跳轉到了我們的cart.jsp頁面,這個頁面用於顯示我們的商品,也就是最開始看到的那個圖,接下來看一下我們購物車頁面的實現。
3.cart.jsp購物車頁面
這個頁面,獲取我們的購物車物件,然後通過迴圈一個一個將我們的資料輸出來顯示,其中還有一個操作:刪除商品。接下來我們見一下刪除商品功能的實現。<%@page import="com.model.Good"%> <%@page import="com.model.Cart"%> <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>我的購物車</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <style> .table-c table{border-right:1px solid #3366CC;border-bottom:1px solid #3366CC} .table-c table td{border-left:1px solid #3366CC;border-top:1px solid #3366CC} /* css 註釋: 只對table td設定左與上邊框; 對table設定右與下邊框; 為了便於截圖,我們將css 註釋說明換行排版 */ </style> </head> <!-- 這個頁面是用來顯示我們的購物車的資訊 --> <body> <center> <h1>我的購物車</h1> <a href="index.jsp">首頁</a> >> <a href="index.jsp">商品列表</a> <hr> <div id="shopping" class="table-c"> <form action="" method=""> <table> <tr> <td>商品名稱 </td> <td>商品單價 </td> <td>購買數量 </td> <td>操作 </td> </tr> <% //首先判斷session中是否有購物車物件 if(session.getAttribute("cart")!=null) { %> <!-- 迴圈的開始 --> <% //先獲取購物車物件 System.out.print("在這裡獲取到了購物車物件\n"); Cart cart=(Cart)session.getAttribute("cart"); //獲取我們購物車中的good物件們 HashMap<Good, Integer> hm=cart.getShopGood(); Set<Good> goodSet=hm.keySet(); //獲得的迭代器物件 Iterator<Good> itertor=goodSet.iterator(); System.out.print("執行到這說明迭代器都有了\n"); //然後遍歷迭代器中的元素:將good一個一個獲取並顯示 Good tempGood=new Good(); while(itertor.hasNext()) { System.out.print("執行明迭代器中的迴圈\n"); //從迭代器中獲取當前的good物件 tempGood=itertor.next(); System.out.print("當前的商品名字:"+tempGood.getName()+"\n"); System.out.print("當前的商品單價"+tempGood.getPrice()+"\n"); System.out.print("當前商品的數量"+hm.get(tempGood)+"\n"); %> <!-- 在此將我們的商品獲取,一個一個顯示 出來 --> <tr> <td><%=tempGood.getName() %></td> <td><%=tempGood.getPrice() %></td> <td><%=hm.get(tempGood) %></td> <td><a href="detlete.jsp?id=<%=tempGood.getId()%>">刪除</a></td> </tr> <% }//end while %> </table> <div class="total"><span id="total">總計:<%=cart.getPriceSum()%>¥</span></div> <% }//end if %> </center> </body> </html>
4.delete.jsp刪除商品
<%@page import="com.model.Cart"%>
<%@page import="com.model.Good"%>
<%@page import="com.dao.GoodDao"%>
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!-- 實現業務邏輯:將商品從購物車cart中刪除 -->
<%
//獲取要刪除商品的id
int id=Integer.parseInt(request.getParameter("id"));
//根據id獲取商品物件
GoodDao dao=new GoodDao();
Good good=dao.getGoodById(id);
//獲取當前我們session中的購物車,然後刪除商品
Cart cart=(Cart)session.getAttribute("cart");
cart.revemoceGood(good);
//刪除完之後儲存一下購物車
session.setAttribute("cart", cart);
//做完之後重定向到我們的購物車頁面
response.sendRedirect("cart.jsp");
%>
5.小結
以上,我們就將我們購物車商品新增刪除的功能全部實現了~通過這個模組學習到了如何分析一個模組需要的功能,然後搭建框架組織起來(一步一步的實現功能)。下次遇到模組的開發應該先正整理思路,如何去開發,功能有哪些,功能之間的連線紐帶又是什麼。將思路組織清楚才能更有利開發,比直接看視訊課看別人的開發會更有幫助。因為他們告訴我們的是他們跳過坑之後的結果。在開發的時候我們會遇到一個一個的問題,或小或迷茫,但是它是打通我們任督二脈的關鍵。繼續加油!