Servlet自学第25讲:Session实例—简单购物车的实现

购物车的简单业务逻辑

这里写图片描述
思路:
当用户点击购买商品时,我们就把该商品保存到session中。该session的结构是
Name value
Books HashMap
而HashMap 的结构是
Key value
BookID Book对象
Book.java

Public Class Booke implements java.io.Serializable{
    private String id;
    private String name;
    private int num;
    private double price;
}

用到下面知识:
1. Java基础集合 ArrayList HashMap LinkedHashMap(有序)
2. Session技术
3. Servlet
4. 单态
5. 选择不同的集合 list集合是有序的 map集合默认是无序的。 list和map集合都可以放入空值,list可以放入相同的对象,map可以放入相同的对象但是key不能重复。

实现的主要代码

        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();

        String bookName = request.getParameter("name");
        String bookId = request.getParameter("id");
        HttpSession session = request.getSession();

        HashMap<String, Book> bookMap = (HashMap<String, Book>) session
                .getAttribute("mybooks");
        if (bookMap == null) {
            bookMap = new HashMap<String, Book>();
            Book book = new Book();
            book.setId(bookId);
            book.setName(bookName);
            book.setNum(1);
            bookMap.put(bookId, book);
        } else {
            if (bookMap.containsKey(bookId)) {
                Book book = bookMap.get(bookId);
                int bookNum = book.getNum();
                book.setNum(bookNum + 1);

            } else {
                Book book = new Book();
                book.setId(bookId);
                System.out.println(bookName);
                book.setName(bookName);
                book.setNum(1);
                bookMap.put(bookId, book);
            }
        }
        session.setAttribute("mybooks", bookMap);
        request.getRequestDispatcher("/ShowMyCart").forward(request, response);

即session在任何时候都能从服务器中取得,如果服务器中取得的bookMap为空,就代表是第一次购买,需要创建相应的对象,如果不为空,则代表bookMap以创建不能再重复创建了,否则会覆盖掉原来的session的内容,接着在计算买书的数量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值