GDPU JavaWeb 简单的购物车

入门级搭建购物车及会话处理,java容器的基础应用。

简单的购物车

 完成以下购物车程序:

(1)提供两个购买物品的页面,例如这里的buyDiaper.jsp(尿不湿)和buyBeer.jsp(啤酒)两个页面。两类物品的内容自定,但最好在某些方面有关联。

(2)选中某些啤酒,点击“查看购物车”(display.jsp),显示刚加入购物车的物品名称

(3)点击“买点别的”,跳转到buyDiaper.jsp页面。选中某些尿不湿,点击“提交”之后再点击“查看购物车”,可以看到添加的两类物品

(4)点击“全部重写”,实现清除当前页面所有选中的项目

(5)点击“清空购物车”,把所有加入购物车的内容清除;再点击“查看购物车”,显示购物车空空如也。

如果在以上基础之外新增功能请说明并在下面展示,有加分!

看到这里,吾改写了商品,用了大家比较喜欢的鲜花与甜品。

buyxh.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.ArrayList" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<form method="POST" >
    <h3>鲜花</h3>
    <p><input type="checkbox" name="b" value="水仙花">水仙花</p>
    <p><input type="checkbox" name="b" value="满天星">满天星</p>
    <p><input type="checkbox" name="b" value="紫罗兰">紫罗兰</p>
    <p><input type="submit" value="提交" name="x1">
        <input type="reset" value="全部重写" name="B2">
        <a href="buytp.jsp">买点别的</a>
        <a href="display.jsp">查看购物车</a>
        <a href="clearCart.jsp">清空购物车</a>
    </P>
</FORM>
<%
    request.setCharacterEncoding("UTF-8");
    ArrayList xhList=(ArrayList) session.getAttribute("cart");
    String[] xh=request.getParameterValues("b");//获取商品
    if(xhList==null){
        xhList=new ArrayList();//如果是空就实例化一个购物车清单
    }
    if(xh!=null) {
        for (int i = 0; i < xh.length; i++) {
            xhList.add(xh[i]);
        }
    }
    session.setAttribute("cart",xhList);
%>
</body>
</html>

buytp.jsp 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<FORM METHOD="POST">
  <h3>甜品</h3>
  <p><input type="checkbox" name="m" value="巧克力慕斯">巧克力慕斯
    数量:<input type="text" name="cnt_巧克力慕斯" value="1">
    单价:¥12.99</p>
  <p><input type="checkbox" name="m" value="草莓冰淇淋">草莓冰淇淋
    数量:<input type="text" name="cnt_草莓冰淇淋" value="1">
    单价:¥8.99</p>
  <p><input type="checkbox" name="m" value="蜜桃奶昔">蜜桃奶昔
    数量:<input type="text" name="cnt_蜜桃奶昔" value="1">
    单价:¥6.99</p>
  <p><input type="submit" value="提交" name="B1">
    <input type="reset" value="全部重写" name="B2">
    <a href="buyxh.jsp">买点别的</a>
    <a href="display.jsp">查看购物车</a>
    <a href="clearCart.jsp">清空购物车</a>
</FORM>
<%
  request.setCharacterEncoding("UTF-8");
  ArrayList<String> xhList = (ArrayList<String>) session.getAttribute("cart");
  Map<String, Integer> p = new HashMap<>();
  double totalPrice = 0;
  if(xhList==null){
    xhList=new ArrayList();
  }
  String[] xh=request.getParameterValues("m");
  if (xh != null) {
    for (int i = 0; i < xh.length; i++) {
      xhList.add(xh[i]);
      // 获取对应商品的数量
      int quantity = Integer.parseInt(request.getParameter("cnt_" + xh[i]));
      p.put(xh[i], quantity);
      // 根据商品名称计算价格
      switch (xh[i]) {
        case "巧克力慕斯":
          totalPrice += 12.99 * quantity;
          break;
        case "草莓冰淇淋":
          totalPrice += 8.99 * quantity;
          break;
        case "蜜桃奶昔":
          totalPrice += 6.99 * quantity;
          break;
      }
    }
  }

  ArrayList<String> cartItems = (ArrayList<String>) session.getAttribute("cartItems");
  if (cartItems == null) {
    cartItems = new ArrayList<>();
    session.setAttribute("cartItems", cartItems);
  }
  for (Map.Entry<String, Integer> entry : p.entrySet()) {//entry遍历p
    String item = entry.getKey();//商品名
    int quantity = entry.getValue();//数量
    String cartItem = item + " x" + quantity;
    cartItems.add(cartItem);//把每一对商品及数量存进商品清单
  }
  //存取会话
  session.setAttribute("cart", xhList);
  session.setAttribute("totalPrice", totalPrice);
%>
</body>
</html>

display.jsp 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.ArrayList" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
   ArrayList l=(ArrayList) session.getAttribute("cart");
    if(l!=null&&!l.isEmpty()) {
        for (int i = 0; i < l.size(); i++) {//不用泛型是这种
            out.println(l.get(i));
        }
    }else {
%>
<li>购物车空空如也</li>
<% } %>

    <ul>
<%
    ArrayList<String> cartItems = (ArrayList<String>) session.getAttribute("cartItems");
    if (cartItems!=null&&!cartItems.isEmpty()) {
    for (String item : cartItems) {//集合遍历的一般形式
%>
<li><%= item %></li>
<%
    }
    } else {
%>
<li>没有甜品</li>
<% } %>
</ul>
<p>总价: <%= session.getAttribute("totalPrice") %></p>
</body>
</html>

clearCart.jsp 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.ArrayList" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%

    ArrayList cart = (ArrayList) session.getAttribute("cart");
    ArrayList cartItems = (ArrayList) session.getAttribute("cartItems");
    session.removeAttribute("totalPrice");
    if (cart != null) {
        // 清空购物车
        cart.clear();
    }
    if (cartItems != null) {
        cartItems.clear();
    }
    // 重定向到display.jsp
    response.sendRedirect("display.jsp");

%>

</body>
</html>

 

 

 

 

 

清空购物车可以用集合的clear清除集合内元素,也可以用session的remove置空即null。这个简单的购物车用了java的arraylist集与map映射,还有一些简单的jsp内置对象及会话处理。

实验心得 

作业加分项的言外之意就是你不做这个就得减分。 

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值