栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 
   
   
     
   
   
   
   
   
  
  
  
  我的购物车 
  首页 >> 商品列表 
  

当点击了删除商品 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; 
 
  } 

逻辑代码主要如上。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/148642.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号