天天看点

购物车的实现(jsp的session+Java的Map的结合)

1:电商如此发达的现在,作为一个web开发程序猿,如果不会写购物车,真是有点不好意思找工作。所以抓紧练习啊,从上篇博客中抽离出如何实现购物车的功能。

2:首先需要理解购物车实现的一些基本步骤。

  2.1:首先考虑我购买的是哪一本书籍或者那一件商品,是不是,这里可以使用id传参确定购买的是那一件商品或者书籍,也可以使用session中取出哪一本书籍,这里采用从session的取出那一件商品或者书籍

       代码如:

      book book=(book)session.getattribute("book");

     2.2:第二考虑如何把书籍放到购物车中

         2.1.1:首先考虑是否有购物车,如果没有,则创建,如果有直接使用

         2.1.2:其次先将购物车从session中拿出来,不存在就创建。

    代码如:

      map<integer,cartitem> cart=(map<integer,cartitem>)session.getattribute("cart");

        //如果没有购物车,那么创建,只有第一次访问才会操作

        if(cart==null){

           //new一个购物车

          cart=new hashmap<>();

        }

    2.3:考虑如何把书籍放到购物车中

       2.1.1:第一考虑购物车中是否有该书籍,所以先从购物车中获取该书籍,如果为空,那么没有该书籍

     代码如:

    cartitem item=(cartitem)cart.get(book.getbookid());

       if(item==null){

             //如果购物车中不存在该书籍,那么创建,且数量默认为1

               item=new cartitem();

               //将书籍放到购物车中

              item.setbook(book);

              //将书籍的默认数量为1

              item.setnumber(1);

          }else{

              //如果购物车中以及有该书籍,那么数量加1

              item.setnumber(item.getnumber()+1);

          }

    2.4:考虑如何把购物车项(即挑选的书籍是哪一个和书本的数量)放到购物车中

      代码如:

    cart.put(book.getbookid(),item);

    2.5:将购物车放到session中,方便后面取出来

  session.setattribute("cart", cart);

3:下面是具体的实现,从创建数据表开始,数据表book字段和数据名称如下所示:

 

购物车的实现(jsp的session+Java的Map的结合)

4:下面创建实体类book.java;

 5:创建好实体类接下来是写工具类basedao.java,用于连接数据库的操作,这些代码就不做多解释了,都已经写烂了。所以工具类一定要熟练书写

6:写好工具类就可以进行写dao层(数据交互层),service层(业务逻辑层),先写数据交互层dao层,使用先创建接口再实现接口的方法

7:写好dao层(数据交互层),就可以写service层(业务逻辑层),写业务逻辑层service层,也是使用先创建接口再实现接口的方法

8:最后按照正常开发的话就是servlet层,但是这里将servlet层的代码写到了jsp里面。所以下面jsp页面才是大戏

  先创建一个book.jsp页面,用于显示从数据库查询到的图书数据

9:当图书显示出来之后就可以根据图书编号查看图书详情了,接着写dobook.jsp页面和detail.jsp页面,这个显示图书的详细的信息的页面

10:写好上面的detail.jsp然后就可以在detail.jsp页面点击添加到购物车,下面实现购物车的功能,也是这个实现购物车的核心部分,参考的话是重点看的内容,当然在写购物车之前还需要创建一个实体类cartitem.java,用于存放图书的信息和购买的数量

11:写完上面的就可以查看我的购物车了,在book.jsp页面和detail.jsp页面都有可以点击查看我的购物车的连接,然后就可以查看我的购物车,完成购物车功能。

效果如下所示:

购物车的实现(jsp的session+Java的Map的结合)

虽然简陋,没有完全实现完,还待改善,继续加油!!!