1. 程式人生 > >【模組開發】商品購物車的實現——3.使用者新增刪除商品的操作(控制層)

【模組開發】商品購物車的實現——3.使用者新增刪除商品的操作(控制層)

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.小結

  以上,我們就將我們購物車商品新增刪除的功能全部實現了~通過這個模組學習到了如何分析一個模組需要的功能,然後搭建框架組織起來(一步一步的實現功能)。下次遇到模組的開發應該先正整理思路,如何去開發,功能有哪些,功能之間的連線紐帶又是什麼。將思路組織清楚才能更有利開發,比直接看視訊課看別人的開發會更有幫助。因為他們告訴我們的是他們跳過坑之後的結果。在開發的時候我們會遇到一個一個的問題,或小或迷茫,但是它是打通我們任督二脈的關鍵。繼續加油!