session实现商品购物车

用session商品购物车实现小案例

需求:

有一个商品页面,可以点击超链接将商品添加到购物车,还有一个超链接,点击它的时候可以查看购物车中商品信息。
在这里插入图片描述

步骤分析:

在这里插入图片描述

代码实现:

index.html

  洗衣机 <a href="/session/add2Cart?name=洗衣机">加入购物车</a><br/>
    电视机 <a href="/session/add2Cart?name=电视机">加入购物车</a><br/>
    缝纫机 <a href="/session/add2Cart?name=缝纫机">加入购物车</a><br/>
    打火机 <a href="/session/add2Cart?name=打火机">加入购物车</a><br/>
    <a href="/session/cart.jsp">查看购物车</a><br/>

Add2CartServlet

@WebServlet(name = "Add2CartServlet", value = "/add2Cart")
public class Add2CartServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取name参数的值 洗衣机
        String name = request.getParameter("name");
        
        //2.从session中获取购物车(map),判断购物车是否为空
        Map<String,Integer> cart = (Map<String, Integer>) request.getSession().getAttribute("cart");

        //设置商品的默认数量
        Integer count = 1;

        if (cart == null) {
            //2.1 若为空,第一次使用,初始化map,将map放入session中,设置商品的数量为1
            cart = new HashMap<>();
            request.getSession().setAttribute("cart",cart);
        }else{
            //2.2 若不为空,拿过来使用,继续判断map中有无此商品
            if (cart.containsKey(name)) {
                //a.若有 获取原来的数量,自增,
                count = cart.get(name) + 1 ;
            }
            //b.若无 设置商品的数量为1
        }

        //3.无论如何都会把此商品放入到购物车中,只是数量不同
        cart.put(name,count);

        //4.组织响应回去的内容
        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();
        writer.print("已经 <b>"+name+"</b> 加入到购物车中<br/>");
        writer.print("<a href='"+request.getContextPath()+"'>继续浏览</a><br/>");
        writer.print("<a href='"+request.getContextPath()+"/cart.jsp'>查看购物车</a><br/>");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}

cart.jsp

<%@ page import="java.util.Map" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        //1.获取session中的购物车
        Map<String,Integer> cart = (Map<String, Integer>) session.getAttribute("cart");

        //2.判断购物车是否为空
        if (cart == null) {
            //2.1 若为空提示..
            out.print("<h2>购物车空空如也~~</h2>");
        }else{
            //2.2 若不为空 表格展示
    %>
            <table border="1" align="center" width="30%">
                <tr>
                    <th>商品名称</th>
                    <th>商品数量</th>
                </tr>
    <%
            //遍历map
        for (Map.Entry<String, Integer> entry : cart.entrySet()) {
            out.print("<tr><td>"+entry.getKey()+"</td>");
            out.print("<td>"+entry.getValue()+"</td></tr>");
        }

    %>
            </table>
    <%
        }
    %>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值