用session实现购物车

图书类

public class Book implements Serializable {
    private static final long seriaVersionUID = 1L;
    private String Id;
    private String name;

    public Book() {
    }

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

    public String getId() {
        return Id;
    }

    public void setId(String id) {
        Id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

图书数据库类

public class BookDB {
    private static Map<String, Book> book = new LinkedHashMap<String, Book>();

    static {
        book.put("1", new Book("1", "JAVA"));
        book.put("2", new Book("2", "JDBC"));
        book.put("3", new Book("3", "Spring"));
        book.put("4", new Book("4", "Web"));
        book.put("5", new Book("5", "Git"));
        book.put("6", new Book("6", "struts"));

    }

    //获取所有的图书
    public static Collection<Book> getAll() {
        return book.values();
    }

    //获取指定id的图书
    public static Book getBook(String id) {
        return book.get(id);
    }


}

Servlet类

public class PurchaseServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获得用户购买的商品
        String id = request.getParameter("Id");
        if (id == null) {
            //如果id为null,重定向到ListBookServlet页面
            String url = "/shopping/ListBookServlet";
            response.sendRedirect(url);
            return;
        }
        Book book = BookDB.getBook(id);
        //创建或者获得用户的session对象
        HttpSession session = request.getSession();
        //从Session对象中获得用户的购物车
        List<Book> cart = (List) session.getAttribute("cart");
        if (cart == null) {
            //首次购买,为用户创建一个购物车(list集合模拟购物车)
            cart = new ArrayList<Book>();
            session.setAttribute("cart", cart);
        }
        //将商品加入购物车
        cart.add(book);
        //创建Cookie存放session的标识号
        Cookie cookie = new Cookie("JSESSIONID", session.getId());
        cookie.setMaxAge(60 * 30);
        cookie.setPath("/shopping");
        response.addCookie(cookie);
        //重定向到购物车页面
        String url = "/shopping/CartServlet";
        response.sendRedirect(url);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}
public class ListBookServlet extends HttpServlet {
    private static final long seriaVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();
        Collection<Book> books = BookDB.getAll();
        writer.write("本站提供的图书有:<br />");
        for (Book book : books) {
            String url = "/shopping/PurchaseServlet?Id=" + book.getId();
            writer.write(book.getName() + "<a href='" + url + "'>点击购买</a><br />");
        }
    }
}
public class CartServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        //变量cart引用用户购物车
        List<Book> cart = null;
        //变量purFlag标记用户是否买过商品
        boolean purFlag = true;
        //获得用户session
        HttpSession session = request.getSession(false);
        //如果session为null,purflag置为false
        if (session == null) {
            purFlag = false;
        } else {
            //获得用户购物车
            cart = (List) session.getAttribute("cart");
            //如果用的购物车为null,purflag置为false
            if (cart == null) {
                purFlag = false;
            }
        }
        /**
         * 如果purflag为false,表明用户没有购买图书 重定向到ListServlet页面
         */
        if (!purFlag) {
            out.write("对不起!您还没有购买任何商品!<br />");
        } else {
            //否则显示用户购买图书的信息
            out.write("您购买的图书有:<br />");
            double price = 0;
            for (Book book : cart) {
                out.write(book.getName() + "<br />");
            }
        }
    }
}


版权声明:本文为qq_53344479原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。