实现购物车案例

Posted 名字真的很急用

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实现购物车案例相关的知识,希望对你有一定的参考价值。

1.创建Book封装图书信息:Book。
2.创建BookDB:模拟数据库,里面保存图书。
3.提供图书的购买页面:ListBookServlet.
4.添加到购物车:purcharseServlet。
5.回显购物车图书信息:CartServlet。


代码如下:

package 购物车;

public class Book {

    private  String id;
    private  String name;

    public Book() {
    }

    public Book(String id, String name) {
        this.id = id;
        this.name = name;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
package 购物车;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

public class BookDB  {
    private  static Map<String,Book> map = new LinkedHashMap<>();
       static {
           map.put("1",new Book("1","JAVAWEB"));
           map.put("2",new Book("2","JDBC"));
           map.put("3",new Book("3","JAVA"));
           map.put("4",new Book("4","MATH"));
           map.put("5",new Book("5","MVC"));

       }
       //得到所有的图书
    public static Collection<Book> getAll(){
           return map.values();
    }
    //根据map的key,也就是图书的id,得到某个图书。
    public  static  Book getBook(String id){
           return map.get(id);
    }
}
package 购物车;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Collection;
@WebServlet("/list")
public class ListBookServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        //得到所有的图书
        Collection<Book> books = BookDB.getAll();
        //回显到页面
        PrintWriter out = resp.getWriter();
        out.write("以下是所售卖的图书: "+"<br/><br/>");
        //遍历集合,把图书回显到页面
        for (Book b:books){
            String name = b.getName();
            String id= b.getId();
            //提供一个购买图书的链接
            String url ="<a href='/purcharse?id="+id+"'>点击购买</a>";
            out.write("图书名称:  "+name+" "+url+"<br/><br/>");
        }
    }
}
package 购物车;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/purcharse")
public class purcharsetServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        //获取图书信息
        String id =req.getParameter("id");
        //判断id是否存在
        if(id==null){
            resp.sendRedirect("/list");
            return;
        }
        //图书已经点击购买了
        Book book =BookDB.getBook(id);
        //把图书添加到购物车
        HttpSession session = req.getSession();
        List<Book> list = (List<Book>) session.getAttribute("cart");
        if(list==null){
            list=new ArrayList<Book>();
            session.setAttribute("cart",list);
        }
        //把图书添加到购物车
        list.add(book);
        //把请求跳转到cartServlet
        //session是基于cookie创建的,为了完成关闭浏览器,cookie还在 设置时长
        Cookie cookie = new Cookie("JESSION",session.getId());
        cookie.setMaxAge(60*60*24*7);
        cookie.setPath("/");
        resp.addCookie(cookie);
        //跳转
        resp.sendRedirect("/cart");
    }
}
package 购物车;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

@WebServlet("/cart")
public class cartServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out = resp.getWriter();
        //得到购物车
        List<Book> cart =null;
        //得到用户自己的session
        HttpSession session = req.getSession(false);
        //定义一个flag 来判断购物车是否为空
        boolean cartflag=true;
        if(session==null){
            cartflag=false;
        }else {
            cart= (List<Book>) session.getAttribute("cart");
            if(cart==null){
                cartflag=false;
            }
        }
        //购物车有商品了
        if(!cartflag){
            out.write("对不起,你的购物车没有商品,请去购买点击");
        }else {
            //购物车有商品
            out.write("购买的商品如下:"+"<br><br>");
            for (Book b:cart){
                out.write("购买的图书:"+b.getName()+"<br><br>");
            }
        }
    }
}

结果如下:

以下是所售卖的图书: 

图书名称: JAVAWEB 点击购买

图书名称: JDBC 点击购买

图书名称: JAVA 点击购买

图书名称: MATH 点击购买

图书名称: MVC 点击购买
购买的商品如下:

购买的图书:JAVAWEB

购买的图书:JDBC

购买的图书:JAVA

购买的图书:JAVAWEB

购买的图书:MVC

购买的图书:JAVAWEB

以上是关于实现购物车案例的主要内容,如果未能解决你的问题,请参考以下文章

Redux案例实现购物车

案例29-购物车提交订单

案例26-购物车

Vue教程购物车案例

jQuery仿购物车案例

VUE学习笔记:6.阶段练习之购物车案例讲解