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.小结
以上,我们就将我们购物车商品添加删除的功能全部实现了~通过这个模块学习到了如何分析一个模块需要的功能,然后搭建框架组织起来(一步一步的实现功能)。下次遇到模块的开发应该先正整理思路,如何去开发,功能有哪些,功能之间的连接纽带又是什么。将思路组织清楚才能更有利开发,比直接看视频课看别人的开发会更有帮助。因为他们告诉我们的是他们跳过坑之后的结果。在开发的时候我们会遇到一个一个的问题,或小或迷茫,但是它是打通我们任督二脉的关键。继续加油!

本文详细介绍了如何在Java Web环境中实现购物车功能,包括从主页面添加商品、addGood.jsp的商品添加逻辑、cart.jsp的购物车展示以及delete.jsp的商品删除。通过这个模块的学习,不仅可以理解功能实现的步骤,还能掌握模块开发的思维方式,对于后续的开发工作大有裨益。
1802

被折叠的 条评论
为什么被折叠?



