mvc架构实现商品的购买(二)

这篇文章主要为大家详细介绍了mvc架构实现商品购买功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

在上篇文章中 使用了mode1的模型来实现商品的浏览,这篇文章在上篇的基础上,使用mvc架构实现商品的购买。
运行结果:

相对与上篇文章  我们多了购物车类
由于我们在购买物品时,购物车需要的属性为购买的商品和数量   所以我们用map的键值来保存购买的商品。
当然还有一个总价格,购物车的方法有 添加商品  删除商品  计算总价格  其中总价格应该在每次添加商品和删除商品时 重新计算  购物车商品集合  只在初始化购物车的时候实例化一次即可

 package entity; import java.util.HashMap; public class Cart { //购物车商品集合 private HashMap cart; //总金额 private double totalPrices; public Cart() { cart=new HashMap(); totalPrices=0.0; } public HashMap getCart() { return cart; } public void setCart(HashMap cart) { this.cart = cart; } public double getTotalPrices() { return totalPrices; } public void setTotalPrices(double totalPrices) { this.totalPrices = totalPrices; } //添加物品进购物车 public boolean addToCart(Items item,int counts){ //如果当前物品 已经添加过 只增加数量 if(cart.containsKey(item)){ cart.put(item, cart.get(item)+counts); }else{ cart.put(item, counts); } //重新计算价格 calTotalPrice(item.getPrice()*counts); return true; } //将物品从购物车删除 public boolean removeFromCart(Items item){ if(cart!=null&&cart.containsKey(item)){ calTotalPrice(-item.getPrice()*cart.get(item)); cart.remove(item); } return true; } //计算总金额 private void calTotalPrice(double price){ totalPrices+=price; } } 

CartServlet的doGett方法根据action来进行相应的处理

 if (request.getParameter("action") != null) { action = request.getParameter("action"); if ("add".equals(action)) { // 添加商品 if (addGoodsToCart(request, response)) { request.getRequestDispatcher("../success.jsp").forward( request, response); } else { request.getRequestDispatcher("../failure.jsp").forward( request, response); } } else if ("show".equals(action)) {// 显示购物车 request.getRequestDispatcher("../cart.jsp").forward(request, response); } else if ("delete".equals(action)) {// 删除物品 deleteGoodFromCart(request, response); request.getRequestDispatcher("../cart.jsp").forward(request, response); } } 

当在商品界面 我们点击了放入购物车时 将当前商品的编号传到 购物车的servlet类CartServlet开始处理当前物品 并将当前物品放入购物车

再放入购物车之前 首先判断是否是第一次创建购物车  (购物车肯定只有一个  不能有多个)如果是第一次创建购物车cart
将当前购物车放入session ,然后通过ItemsDao对象调用getItemById(id)方法 获得商品对象  。然后将相应的商品对象 和商品数量放入购物车

 //向购物车添加商品 private boolean addGoodsToCart(HttpServletRequest request, HttpServletResponse response) { String id=request.getParameter("id"); String counts=request.getParameter("num"); Items item=dao.getItemById(Integer.parseInt(id)); //判断是否是第一次创建购物车 if(request.getSession().getAttribute("cart")==null){ Cart cart=new Cart(); request.getSession().setAttribute("cart", cart); request.getSession().setAttribute("dao", dao); } Cart cart=(Cart) request.getSession().getAttribute("cart"); //将商品添加到购物车 if(cart.addToCart(item, Integer.parseInt(counts))){ return true; }else{ return false; } } 

如果点击了查看购物车   CartServlet重定向到购物车页面

 <%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%><%@ page import="entity.Cart" %><%@ page import="entity.Items" %><% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>  My JSP 'cart.jsp' starting page 

我的购物车

首页 >> 商品列表
<% //首先判断session中是否有购物车对象 if(request.getSession().getAttribute("cart")!=null) { %><% Cart cart = (Cart)request.getSession().getAttribute("cart"); HashMap goods = cart.getCart(); Set items = goods.keySet(); Iterator it = items.iterator(); while(it.hasNext()) { Items i = it.next(); %> <% } %>
商品名称商品单价商品价格购买数量操作
<%=i.getName()%><%=i.getPrice() %> <%=i.getPrice()*goods.get(i) %> <%=goods.get(i)%> 删除
总计:<%=cart.getTotalPrices() %>¥
<% } %>

当点击了删除商品 CartServlet类调用删除商品的方法

 // 从购物车删除商品 private boolean deleteGoodFromCart(HttpServletRequest request, HttpServletResponse response) { //从session中获取购物车对象 Cart cart = (Cart) request.getSession().getAttribute("cart"); if (cart != null) { int id = Integer.parseInt(request.getParameter("id")); if (cart.removeFromCart(dao.getItemById(id))) { return true; } } return false; } 

逻辑代码主要如上。

以上就是mvc架构实现商品的购买(二)的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java