{"id":2572,"date":"2022-12-13T22:12:10","date_gmt":"2022-12-13T14:12:10","guid":{"rendered":"https:\/\/qaqaq.top\/?p=2572"},"modified":"2022-12-19T20:49:08","modified_gmt":"2022-12-19T12:49:08","slug":"%e4%b9%a6%e5%9f%8e%e9%a1%b9%e7%9b%ae-%e8%b4%ad%e7%89%a9%e8%bd%a6%e6%a8%a1%e5%9d%97%e7%9a%84%e5%88%86%e6%9e%90%e3%80%81%e4%b9%a6%e5%9f%8e%e9%a1%b9%e7%9b%ae-%e8%b4%ad%e7%89%a9%e8%bd%a6%e6%a8%a1%e5%9e%8b","status":"publish","type":"post","link":"https:\/\/qaqaq.top\/?p=2572","title":{"rendered":"\u4e66\u57ce\u9879\u76ee-\u7b2c\u516d\u3001\u4e03\u9636\u6bb5\uff0c\u8d2d\u7269\u8f66\u3001\u8ba2\u5355"},"content":{"rendered":"\n<p>\u4e66\u57ce\u9879\u76ee-\u8d2d\u7269\u8f66\u6a21\u5757\u7684\u5206\u6790\u3001\u4e66\u57ce\u9879\u76ee-\u8d2d\u7269\u8f66\u6a21\u578b\u7684\u521b\u5efa\u3001\u4e66\u57ce\u9879\u76ee-\u8d2d\u7269\u8f66\u529f\u80fd\u65b9\u6cd5\u7684\u5b9e\u73b0\u548c\u6d4b\u8bd5\u3001\u4e66\u57ce\u9879\u76ee-\u6dfb\u52a0\u5546\u54c1\u5230\u8d2d\u7269\u8f66\u529f\u80fd\u7684\u5b9e\u73b0\u3001\u4e66\u57ce\u9879\u76ee-\u8d2d\u7269\u8f66\u7684\u5c55\u793a\u3001\u4e66\u57ce\u9879\u76ee-\u5220\u9664\u8d2d\u7269\u8f66\u4e2d\u7684\u5546\u54c1\u9879\u3001\u4e66\u57ce\u9879\u76ee-\u6e05\u7a7a\u8d2d\u7269\u8f66\u7684\u5b9e\u73b0\u3001\u4e66\u57ce\u9879\u76ee-\u4fee\u6539\u8d2d\u7269\u8f66\u5546\u54c1\u6570\u91cf\u3001\u4e66\u57ce\u9879\u76ee-\u9996\u9875\u8d2d\u7269\u8f66\u6570\u636e\u5c55\u793a\u3001\u4e66\u57ce\u9879\u76ee-\u8ba2\u5355\u6a21\u5757\u7684\u5206\u6790\u3001\u4e66\u57ce\u9879\u76ee-\u521b\u5efa\u8ba2\u5355\u6a21\u578b\u7684\u6570\u636e\u5e93\u8868\u3001\u4e66\u57ce\u9879\u76ee-\u7f16\u5199\u8ba2\u5355\u6a21\u5757\u7684\u4e24\u4e2a\u6570\u636e\u6a21\u578bOrder\u548cOrderItem\u3001\u4e66\u57ce\u9879\u76ee-\u7f16\u5199\u8ba2\u5355\u6a21\u5757\u7684Dao\u548c\u6d4b\u8bd5\u3001\u4e66\u57ce\u9879\u76ee-\u7f16\u5199\u8ba2\u5355\u6a21\u5757\u7684Service\u548c\u6d4b\u8bd5\u3001\u4e66\u57ce\u9879\u76ee-\u7ed3\u8d26\u529f\u80fd\u5b9e\u73b0\uff0c\u751f\u6210\u8ba2\u5355\u3001\u4e66\u57ce\u9879\u76ee-\u89e3\u51b3\u751f\u6210\u8ba2\u5355\u7684bug<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">\u4e66\u57ce\u9879\u76ee\u7b2c\u516d\u3001\u4e03\u9636\u6bb5<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">1\u3001\u9879\u76ee\u7b2c\u516d\u9636\u6bb5\uff1a\u8d2d\u7269\u8f66<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1.1\u3001\u8d2d\u7269\u8f66\u6a21\u5757\u5206\u6790<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-252-1024x500.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"500\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-252-1024x500.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2573\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">1.2\u3001\u8d2d\u7269\u8f66\u6a21\u578b\u7f16\u5199<\/h3>\n\n\n\n<p>1.2.1\u3001\u8d2d\u7269\u8f66\u6a21\u578b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.pojo;\n\nimport java.math.BigDecimal;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-13 \u4e0b\u5348 7:00\n *\/\n\n\/**\n * \u8d2d\u7269\u8f66\u5bf9\u8c61\n *\/\npublic class Cart {\n\n\/\/    private Integer totalCount; \/\/\u603b\u5546\u54c1\u6570\u91cf\n\/\/    private BigDecimal totalPrice;  \/\/\u603b\u5546\u54c1\u91d1\u989d\n\n    \/**\n     * key\u662f\u5546\u54c1\u7f16\u53f7\uff0c\n     * value\uff0c\u662f\u5546\u54c1\u4fe1\u606f\n     *\/\n    private Map&lt;Integer,CartItem&gt; items = new LinkedHashMap&lt;Integer,CartItem&gt;(); \/\/\u8d2d\u7269\u8f66\u5546\u54c1\n\n    \/**\n     * \u6dfb\u52a0\u5546\u54c1\u9879\n     * @param cartItem\n     *\/\n    public void addItem(CartItem cartItem){\n        \/\/ \u5148\u67e5\u770b\u8d2d\u7269\u8f66\u4e2d\u662f\u5426\u5df2\u7ecf\u6dfb\u52a0\u8fc7\u6b64\u5546\u54c1\uff0c\u5982\u679c\u5df2\u6dfb\u52a0\uff0c\u5219\u6570\u91cf\u7d2f\u52a0\uff0c\u603b\u91d1\u989d\u66f4\u65b0\uff0c\n        \/\/ \u5982\u679c\u6ca1\u6709\u6dfb\u52a0\u8fc7\uff0c\u76f4\u63a5\u653e\u5230\u96c6\u5408\u4e2d\u5373\u53ef\n        CartItem item = items.get(cartItem.getId());\n\n        if (item == null) {\n            \/\/ \u4e4b\u524d\u6ca1\u6dfb\u52a0\u8fc7\u6b64\u5546\u54c1\n            items.put(cartItem.getId(),cartItem);\n        } else {\n            \/\/ \u5df2\u7ecf \u6dfb\u52a0\u8fc7\u7684\u60c5\u51b5\n            item.setCount(item.getCount() + 1); \/\/ \u6570\u91cf \u7d2f\u52a0\n            item.setTotalPrice( item.getPrice().multiply(new BigDecimal(item.getCount()))); \/\/ \u66f4\u65b0 \u603b\u91d1\u989d\n        }\n\n    }\n\n    \/**\n     * \u5220\u9664\u5546\u54c1\u9879\n     * @param id\n     *\/\n    public void deleteItem(Integer id){\n        items.remove(id);\n    }\n\n    \/**\n     * \u6e05\u7a7a\u8d2d\u7269\u8f66\n     *\/\n    public void clear(){\n        items.clear();\n    }\n\n    \/**\n     * \u4fee\u6539\u5546\u54c1\u6570\u91cf\n     * @param id\n     *\/\n    public void updateCount(Integer id, Integer count){\n        \/\/ \u5148\u67e5\u770b\u8d2d\u7269\u8f66\u4e2d\u662f\u5426\u6709\u6b64\u5546\u54c1\u3002\u5982\u679c\u6709\uff0c\u4fee\u6539\u5546\u54c1\u6570\u91cf\uff0c\u66f4\u65b0\u603b\u91d1\u989d\n\n        CartItem cartItem = items.get(id);\n        if (cartItem != null) {\n            cartItem.setCount(count); \/\/ \u4fee\u6539\u5546\u54c1\u6570\u91cf\n            cartItem.setTotalPrice(cartItem.getPrice().multiply(new BigDecimal(cartItem.getCount()))); \/\/ \u66f4\u65b0 \u603b\u91d1\u989d\n        }\n\n    }\n\n\n    public Cart() {\n    }\n\n    public Integer getTotalCount() {\n        Integer totalCount = 0; \/\/\u603b\u5546\u54c1\u6570\u91cf\n\n        for (Map.Entry&lt;Integer,CartItem&gt; entry : items.entrySet()) {\n            totalCount += entry.getValue().getCount();\n        }\n\n        \/\/ \u6216\n\/\/        for (CartItem value : items.values()) {\n\/\/            totalCount += value.getCount();\n\/\/        }\n\n        return totalCount;\n    }\n\n    public BigDecimal getTotalPrice() {\n        BigDecimal totalPrice = new BigDecimal(0); \/\/\u603b\u5546\u54c1\u91d1\u989d\n\n        for (Map.Entry&lt;Integer,CartItem&gt; entry : items.entrySet()) {\n            totalPrice = totalPrice.add(entry.getValue().getTotalPrice());\n        }\n\n        return totalPrice;\n    }\n\n    public Map&lt;Integer, CartItem&gt; getItems() {\n        return items;\n    }\n\n    public void setItems(Map&lt;Integer, CartItem&gt; items) {\n        this.items = items;\n    }\n\n    @Override\n    public String toString() {\n        return \"Cart{\" +\n                \"totalCount=\" + getTotalCount() +\n                \", totalPrice=\" + getTotalPrice() +\n                \", items=\" + items +\n                '}';\n    }\n}\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.pojo;\n\nimport java.math.BigDecimal;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-13 \u4e0b\u5348 6:57\n *\/\n\n\/**\n * \u8d2d\u7269\u8f66\u7684\u5546\u54c1\u9879\n *\/\npublic class CartItem {\n\n    private Integer id; \/\/\u5546\u54c1\u7f16\u53f7\n    private String name;    \/\/\u5546\u54c1\u540d\u79f0\n    private Integer count;  \/\/\u5546\u54c1\u6570\u91cf\n    private BigDecimal price;   \/\/\u5546\u54c1\u5355\u4ef7\n    private BigDecimal totalPrice;  \/\/\u5546\u54c1\u603b\u4ef7\n\n    public CartItem() {\n    }\n\n    public CartItem(Integer id, String name, Integer count, BigDecimal price, BigDecimal totalPrice) {\n        this.id = id;\n        this.name = name;\n        this.count = count;\n        this.price = price;\n        this.totalPrice = totalPrice;\n    }\n\n    public Integer getId() {\n        return id;\n    }\n\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public Integer getCount() {\n        return count;\n    }\n\n    public void setCount(Integer count) {\n        this.count = count;\n    }\n\n    public BigDecimal getPrice() {\n        return price;\n    }\n\n    public void setPrice(BigDecimal price) {\n        this.price = price;\n    }\n\n    public BigDecimal getTotalPrice() {\n        return totalPrice;\n    }\n\n    public void setTotalPrice(BigDecimal totalPrice) {\n        this.totalPrice = totalPrice;\n    }\n\n    @Override\n    public String toString() {\n        return \"CartItem{\" +\n                \"id=\" + id +\n                \", name='\" + name + '\\'' +\n                \", count=\" + count +\n                \", price=\" + price +\n                \", totalPrice=\" + totalPrice +\n                '}';\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>1.2.2\u3001\u8d2d\u7269\u8f66\u7684\u6d4b\u8bd5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.test;\n\nimport org.junit.Test;\nimport top.qaqaq.pojo.Cart;\nimport top.qaqaq.pojo.CartItem;\n\nimport java.math.BigDecimal;\n\nimport static org.junit.Assert.*;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-13 \u4e0b\u5348 7:37\n *\/\npublic class CartTest {\n\n    @Test\n    public void addItem() {\n        Cart cart = new Cart();\n        cart.addItem(new CartItem(1,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(1000),new BigDecimal(1000)));\n        cart.addItem(new CartItem(1,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(1000),new BigDecimal(1000)));\n        cart.addItem(new CartItem(2,\"\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\",1,new BigDecimal(100),new BigDecimal(100)));\n\n        System.out.println(cart);\n    }\n\n    @Test\n    public void deleteItem() {\n        Cart cart = new Cart();\n        cart.addItem(new CartItem(1,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(1000),new BigDecimal(1000)));\n        cart.addItem(new CartItem(1,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(1000),new BigDecimal(1000)));\n        cart.addItem(new CartItem(2,\"\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\",1,new BigDecimal(100),new BigDecimal(100)));\n\n        cart.deleteItem(1);\n\n        System.out.println(cart);\n    }\n\n    @Test\n    public void clear() {\n        Cart cart = new Cart();\n        cart.addItem(new CartItem(1,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(1000),new BigDecimal(1000)));\n        cart.addItem(new CartItem(1,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(1000),new BigDecimal(1000)));\n        cart.addItem(new CartItem(2,\"\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\",1,new BigDecimal(100),new BigDecimal(100)));\n\n        cart.deleteItem(1);\n\n        cart.clear();\n\n        System.out.println(cart);\n    }\n\n    @Test\n    public void updateCount() {\n        Cart cart = new Cart();\n        cart.addItem(new CartItem(1,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(1000),new BigDecimal(1000)));\n        cart.addItem(new CartItem(1,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(1000),new BigDecimal(1000)));\n        cart.addItem(new CartItem(2,\"\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\",1,new BigDecimal(100),new BigDecimal(100)));\n\n        cart.deleteItem(1);\n\n        cart.clear();\n\n        cart.addItem(new CartItem(1,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(1000),new BigDecimal(1000)));\n\n        cart.updateCount(1,10);\n\n        System.out.println(cart);\n    }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.3\u3001\u52a0\u5165\u8d2d\u7269\u8f66\u529f\u80fd\u7684\u5b9e\u73b0<\/h3>\n\n\n\n<p>CartServlet \u7a0b\u5e8f\u4e2d\u7684\u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.web;\n\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport top.qaqaq.pojo.Book;\nimport top.qaqaq.pojo.Cart;\nimport top.qaqaq.pojo.CartItem;\nimport top.qaqaq.service.BookService;\nimport top.qaqaq.service.impl.BookServiceImpl;\nimport top.qaqaq.utils.WebUtils;\n\nimport java.io.IOException;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-13 \u4e0b\u5348 8:06\n *\/\npublic class CartServlet extends BaseServlet{\n\n    private BookService bookService = new BookServiceImpl();\n\n    \/**\n     * \u52a0\u5165\u8d2d\u7269\u8f66\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void addItem(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\n\/\/        System.out.println(\"\u52a0\u5165\u8d2d\u7269\u8f66\");\n\/\/        System.out.println(\"\u5546\u54c1\u7f16\u53f7\uff1a\" + req.getParameter(\"id\"));\n\n        \/\/ \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570 \u5546\u54c1\u7f16\u53f7\n        int id = WebUtils.parseInt(req.getParameter(\"id\"),0);\n        \/\/ \u8c03\u7528bookService.queryBookById(id):Book\u5f97\u5230\u56fe\u4e66\u7684\u4fe1\u606f\n        Book book = bookService.queryBookById(id);\n        \/\/ \u628a\u56fe\u4e66\u4fe1\u606f\uff0c\u8f6c\u6362\u6210\u4e3aCartItem\u5546\u54c1\u9879\n        CartItem cartItem = new CartItem(book.getId(),book.getName(),1,book.getPrice(),book.getPrice());\n        \/\/ \u8c03\u7528Cart.addItem(CartItem);\u6dfb\u52a0\u5546\u54c1\u9879\n        Cart cart = (Cart) req.getSession().getAttribute(\"cart\");\n        if (cart == null) {\n            cart = new Cart();\n            req.getSession().setAttribute(\"cart\",cart);\n        }\n        cart.addItem(cartItem);\n\n        System.out.println(cart);\n\n        System.out.println(\"\u8bf7\u6c42\u5934Referer\u7684\u503c\uff1a\" + req.getHeader(\"Referer\"));\n\n        \/\/ \u91cd\u5b9a\u5411\u56de\u539f\u6765\u5546\u54c1\u6240\u5728\u7684\u5730\u5740\u9875\u9762\n        resp.sendRedirect(req.getHeader(\"Referer\"));\n    }\n\n    \/**\n     * \u6d4b\u8bd5Referer\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void Test(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\n        System.out.println(\"\u8bf7\u6c42\u5934Referer\u7684\u503c\uff1a\" + req.getHeader(\"Referer\"));\n\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<p>index.jsp \u9875\u9762 js \u7684\u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ taglib prefix=\"c\" uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" %&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;title&gt;\u4e66\u57ce\u9996\u9875&lt;\/title&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b base\u6807\u7b7e\uff0ccss\u6837\u5f0f\uff0cjQuery\u6587\u4ef6 --%&gt;\n\t&lt;%@ include file=\"\/pages\/common\/head.jsp\"%&gt;\n\n\t&lt;script type=\"text\/javascript\"&gt;\n\t\t$(function () {\n\t\t\t\/\/ \u7ed9\u52a0\u5165\u8d2d\u7269\u8f66\u6309\u94ae\u7ed1\u5b9a\u5355\u51fb\u4e8b\u4ef6\n\t\t\t$(\"button.addToCart\").click(function () {\n\t\t\t\t\/**\n\t\t\t\t * \u5728\u4e8b\u4ef6\u54cd\u5e94\u7684function\u51fd\u6570 \u4e2d\uff0c\u6709\u4e00\u4e2athis\u5bf9\u8c61\uff0c\u8fd9\u4e2athis\u5bf9\u8c61\uff0c\u662f\u5f53\u524d\u6b63\u5728\u54cd\u5e94\u4e8b\u4ef6\u7684dom\u5bf9\u8c61\n\t\t\t\t * @type {*|jQuery}\n\t\t\t\t *\/\n\t\t\t\tvar bookId = $(this).attr(\"bookId\");\n\t\t\t\tlocation.href = \"http:\/\/localhost:8080\/JavaWeb_Code_Book\/cartServlet?action=addItem&amp;id=\" + bookId;\n\t\t\t})\n\t\t})\n\t&lt;\/script&gt;\n\n&lt;\/head&gt;\n&lt;body&gt;\n\t\n\t&lt;div id=\"header\"&gt;\n\t\t\t&lt;img class=\"logo_img\" alt=\"\" src=\"static\/img\/logo.gif\" &gt;\n\t\t\t&lt;span class=\"wel_word\"&gt;\u7f51\u4e0a\u4e66\u57ce&lt;\/span&gt;\n\t\t\t&lt;div&gt;\n\t\t\t\t&lt;%-- \u5982\u679c\u7528\u6237\u8fd8\u6ca1\u6709\u767b\u5f55\uff0c\u663e\u793a \t\u3010\u767b\u5f55 \u548c\u6ce8\u518c\u7684\u83dc\u5355\u3011 --%&gt;\n\t\t\t\t&lt;c:if test=\"${empty sessionScope.user}\"&gt;\n\t\t\t\t\t&lt;a href=\"pages\/user\/login.jsp\"&gt;\u767b\u5f55&lt;\/a&gt; |\n\t\t\t\t\t&lt;a href=\"pages\/user\/regist.jsp\"&gt;\u6ce8\u518c&lt;\/a&gt; &amp;nbsp;&amp;nbsp;\n\t\t\t\t&lt;\/c:if&gt;\n\t\t\t\t&lt;%-- \u5982\u679c\u5df2\u7ecf\u767b\u5f55\uff0c\u5219\u663e\u793a \u767b\u5f55 \u6210\u529f\u4e4b\u540e\u7684\u7528\u6237\u4fe1\u606f\u3002 --%&gt;\n\t\t\t\t&lt;c:if test=\"${not empty sessionScope.user}\"&gt;\n\t\t\t\t\t&lt;span&gt;\u6b22\u8fce&lt;span class=\"um_span\"&gt;${sessionScope.user.username}&lt;\/span&gt;\u5149\u4e34\u5c1a\u7845\u8c37\u4e66\u57ce&lt;\/span&gt;\n\t\t\t\t\t&lt;a href=\"pages\/order\/order.jsp\"&gt;\u6211\u7684\u8ba2\u5355&lt;\/a&gt;\n\t\t\t\t\t&lt;a href=\"userServlet?action=logout\"&gt;\u6ce8\u9500&lt;\/a&gt;&amp;nbsp;&amp;nbsp;\n\t\t\t\t&lt;\/c:if&gt;\n\n\t\t\t\t&lt;a href=\"pages\/cart\/cart.jsp\"&gt;\u8d2d\u7269\u8f66&lt;\/a&gt;\n\t\t\t\t&lt;a href=\"pages\/manager\/manager.jsp\"&gt;\u540e\u53f0\u7ba1\u7406&lt;\/a&gt;\n\t\t\t&lt;\/div&gt;\n\t&lt;\/div&gt;\n\t&lt;div id=\"main\"&gt;\n\t\t&lt;div id=\"book\"&gt;\n\t\t\t&lt;div class=\"book_cond\"&gt;\n\t\t\t\t&lt;form action=\"client\/bookServlet\" method=\"get\"&gt;\n\t\t\t\t\t&lt;input type=\"hidden\" name=\"action\" value=\"pageByPrice\"&gt;\n\t\t\t\t\t\u4ef7\u683c\uff1a&lt;input id=\"min\" type=\"text\" name=\"min\" value=\"${param.min}\"&gt; \u5143 -\n\t\t\t\t\t\t&lt;input id=\"max\" type=\"text\" name=\"max\" value=\"${param.max}\"&gt; \u5143\n\t\t\t\t\t\t&lt;input type=\"submit\" value=\"\u67e5\u8be2\" \/&gt;\n\t\t\t\t&lt;\/form&gt;\n\t\t\t&lt;\/div&gt;\n\t\t\t&lt;div style=\"text-align: center\"&gt;\n\t\t\t\t&lt;span&gt;\u60a8\u7684\u8d2d\u7269\u8f66\u4e2d\u67093\u4ef6\u5546\u54c1&lt;\/span&gt;\n\t\t\t\t&lt;div&gt;\n\t\t\t\t\t\u60a8\u521a\u521a\u5c06&lt;span style=\"color: red\"&gt;\u65f6\u95f4\u7b80\u53f2&lt;\/span&gt;\u52a0\u5165\u5230\u4e86\u8d2d\u7269\u8f66\u4e2d\n\t\t\t\t&lt;\/div&gt;\n\t\t\t&lt;\/div&gt;\n\n\t\t\t&lt;c:forEach items=\"${requestScope.page.itmes}\" var=\"book\"&gt;\n\t\t\t&lt;div class=\"b_list\"&gt;\n\t\t\t\t&lt;div class=\"img_div\"&gt;\n\t\t\t\t\t&lt;img class=\"book_img\" alt=\"\" src=\"${book.imgpath}\" \/&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;div class=\"book_info\"&gt;\n\t\t\t\t\t&lt;div class=\"book_name\"&gt;\n\t\t\t\t\t\t&lt;span class=\"sp1\"&gt;\u4e66\u540d:&lt;\/span&gt;\n\t\t\t\t\t\t&lt;span class=\"sp2\"&gt;${book.name}&lt;\/span&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t&lt;div class=\"book_author\"&gt;\n\t\t\t\t\t\t&lt;span class=\"sp1\"&gt;\u4f5c\u8005:&lt;\/span&gt;\n\t\t\t\t\t\t&lt;span class=\"sp2\"&gt;${book.author}&lt;\/span&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t&lt;div class=\"book_price\"&gt;\n\t\t\t\t\t\t&lt;span class=\"sp1\"&gt;\u4ef7\u683c:&lt;\/span&gt;\n\t\t\t\t\t\t&lt;span class=\"sp2\"&gt;${book.price}&lt;\/span&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t&lt;div class=\"book_sales\"&gt;\n\t\t\t\t\t\t&lt;span class=\"sp1\"&gt;\u9500\u91cf:&lt;\/span&gt;\n\t\t\t\t\t\t&lt;span class=\"sp2\"&gt;${book.sales}&lt;\/span&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t&lt;div class=\"book_amount\"&gt;\n\t\t\t\t\t\t&lt;span class=\"sp1\"&gt;\u5e93\u5b58:&lt;\/span&gt;\n\t\t\t\t\t\t&lt;span class=\"sp2\"&gt;${book.stock}&lt;\/span&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t&lt;div class=\"book_add\"&gt;\n\t\t\t\t\t\t&lt;button bookId=\"${book.id}\" class=\"addToCart\"&gt;\u52a0\u5165\u8d2d\u7269\u8f66&lt;\/button&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t&lt;\/div&gt;\n\t\t\t&lt;\/c:forEach&gt;\n\n\t\t&lt;\/div&gt;\n\n\t\t&lt;%-- \u9759\u6001\u5305\u542b\u5206\u9875\u6761 --%&gt;\n\t\t&lt;%@include file=\"\/pages\/common\/page_nav.jsp\"%&gt;\n\n\t&lt;\/div&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b\u9875\u811a\u5185\u5bb9 --%&gt;\n\t&lt;%@include file=\"\/pages\/common\/footer.jsp\"%&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-253.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"684\" height=\"76\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-253.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2574\"  sizes=\"(max-width: 684px) 100vw, 684px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-254-1024x294.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"294\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-254-1024x294.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2575\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u56fe\u89e3\u8bf4\u660e\uff0c\u5982\u4f55\u8df3\u56de\u6dfb\u52a0\u5546\u54c1\u7684\u9875\u9762\uff1a<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-255.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"920\" height=\"382\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-255.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2576\"  sizes=\"(max-width: 920px) 100vw, 920px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">1.4\u3001\u8d2d\u7269\u8f66\u7684\u5c55\u793a<\/h3>\n\n\n\n<p>cart.jsp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ taglib prefix=\"c\" uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" %&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;title&gt;\u8d2d\u7269\u8f66&lt;\/title&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b base\u6807\u7b7e\uff0ccss\u6837\u5f0f\uff0cjQuery\u6587\u4ef6 --%&gt;\n\t&lt;%@ include file=\"\/pages\/common\/head.jsp\"%&gt;\n\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;%--${sessionScope}--%&gt;\n\t\n\t&lt;div id=\"header\"&gt;\n\t\t\t&lt;img class=\"logo_img\" alt=\"\" src=\"static\/img\/logo.gif\" &gt;\n\t\t\t&lt;span class=\"wel_word\"&gt;\u8d2d\u7269\u8f66&lt;\/span&gt;\n\n\t\t&lt;%-- \u9759\u6001\u5305\u542b\uff0c\u767b\u9646\u6210\u529f\u4e4b\u540e\u7684\u83dc\u5355 --%&gt;\n\t\t&lt;%@ include file=\"\/pages\/common\/login_success_menu.jsp\"%&gt;\n\n\t&lt;\/div&gt;\n\t\n\t&lt;div id=\"main\"&gt;\n\t\n\t\t&lt;table&gt;\n\t\t\t&lt;tr&gt;\n\t\t\t\t&lt;td&gt;\u5546\u54c1\u540d\u79f0&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u6570\u91cf&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u5355\u4ef7&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u91d1\u989d&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u64cd\u4f5c&lt;\/td&gt;\n\t\t\t&lt;\/tr&gt;\n\t\t\t&lt;c:if test=\"${empty sessionScope.cart.items}\"&gt;\n\t\t\t\t&lt;%-- \u5982\u679c\u8d2d\u7269\u8f66\u7a7a\u7684\u60c5\u51b5 --%&gt;\n\t\t\t\t&lt;tr&gt;\n\t\t\t\t\t&lt;td colspan=\"5\"&gt;&lt;a href=\"index.jsp\"&gt;\u4eb2\uff0c\u5f53\u524d\u8d2d\u7269\u8f66\u4e3a\u7a7a\uff01\u5feb\u8ddf\u5c0f\u4f19\u4f34\u4eec\u53bb\u6d4f\u89c8\u5546\u54c1\u5427\uff01\uff01\uff01&lt;\/a&gt; &lt;\/td&gt;\n\t\t\t\t&lt;\/tr&gt;\n\t\t\t&lt;\/c:if&gt;\n\t\t\t&lt;c:if test=\"${not empty sessionScope.cart.items}\"&gt;\n\t\t\t\t&lt;%-- \u5982\u679c\u8d2d\u7269\u8f66\u975e\u7a7a\u7684\u60c5\u51b5 --%&gt;\n\t\t\t\t&lt;c:forEach items=\"${sessionScope.cart.items}\" var=\"entry\"&gt;\n\t\t\t\t\t&lt;tr&gt;\n\t\t\t\t\t\t&lt;td&gt;${entry.value.name}&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;${entry.value.count}&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;${entry.value.price}&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;${entry.value.totalPrice}&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;&lt;a href=\"#\"&gt;\u5220\u9664&lt;\/a&gt;&lt;\/td&gt;\n\t\t\t\t\t&lt;\/tr&gt;\n\t\t\t\t&lt;\/c:forEach&gt;\n\t\t\t&lt;\/c:if&gt;\n\n\t\t&lt;\/table&gt;\n\n\t\t&lt;%-- \u5982\u679c\u8d2d\u7269\u8f66\u975e\u7a7a\u624d\u8f93\u51fa\u9875\u9762\u7684\u5185\u5bb9 --%&gt;\n\t\t&lt;c:if test=\"${not empty sessionScope.cart.items}\"&gt;\n\t\t&lt;div class=\"cart_info\"&gt;\n\t\t\t&lt;span class=\"cart_span\"&gt;\u8d2d\u7269\u8f66\u4e2d\u5171\u6709&lt;span class=\"b_count\"&gt;${sessionScope.cart.totalCount}&lt;\/span&gt;\u4ef6\u5546\u54c1&lt;\/span&gt;\n\t\t\t&lt;span class=\"cart_span\"&gt;\u603b\u91d1\u989d&lt;span class=\"b_price\"&gt;${sessionScope.cart.totalPrice}&lt;\/span&gt;\u5143&lt;\/span&gt;\n\t\t\t&lt;span class=\"cart_span\"&gt;&lt;a href=\"#\"&gt;\u6e05\u7a7a\u8d2d\u7269\u8f66&lt;\/a&gt;&lt;\/span&gt;\n\t\t\t&lt;span class=\"cart_span\"&gt;&lt;a href=\"pages\/cart\/checkout.jsp\"&gt;\u53bb\u7ed3\u8d26&lt;\/a&gt;&lt;\/span&gt;\n\t\t&lt;\/div&gt;\n\t\t&lt;\/c:if&gt;\n\t\n\t&lt;\/div&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b\u9875\u811a\u5185\u5bb9 --%&gt;\n\t&lt;%@include file=\"\/pages\/common\/footer.jsp\"%&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-256-1024x366.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"366\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-256-1024x366.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2577\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-257-1024x198.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"198\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-257-1024x198.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2578\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">1.5\u3001\u5220\u9664\u8d2d\u7269\u8f66\u5546\u54c1\u9879<\/h3>\n\n\n\n<p>CartServlet \u7a0b\u5e8f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.web;\n\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport top.qaqaq.pojo.Book;\nimport top.qaqaq.pojo.Cart;\nimport top.qaqaq.pojo.CartItem;\nimport top.qaqaq.service.BookService;\nimport top.qaqaq.service.impl.BookServiceImpl;\nimport top.qaqaq.utils.WebUtils;\n\nimport java.io.IOException;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-13 \u4e0b\u5348 8:06\n *\/\npublic class CartServlet extends BaseServlet{\n\n    private BookService bookService = new BookServiceImpl();\n\n    \/**\n     * \u4fee\u6539\u5546\u54c1\u6570\u91cf\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void updateCount(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570 \u5546\u54c1\u7f16\u53f7\u3001\u5546\u54c1\u6570\u91cf\n        int id = WebUtils.parseInt(req.getParameter(\"id\"),0);\n        int count = WebUtils.parseInt(req.getParameter(\"count\"),1);\n\n        \/\/ \u83b7\u53d6Cart\u8d2d\u7269\u8f66\u5bf9\u8c61\n        Cart cart = (Cart) req.getSession().getAttribute(\"cart\");\n\n        if (cart != null) {\n            \/\/ \u4fee\u6539\u5546\u54c1\u6570\u91cf\n            cart.updateCount(id,count);\n\n            \/\/ \u91cd\u5b9a\u5411\u56de\u539f\u6765\u8d2d\u7269\u8f66\u5c55\u793a\u9875\u9762\n            resp.sendRedirect(req.getHeader(\"Referer\"));\n        }\n\n    }\n\n    \/**\n     * \u6e05\u7a7a\u8d2d\u7269\u8f66\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void clear(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ 1. \u83b7\u53d6\u8d2d\u7269\u8f66\u5bf9\u8c61\n        Cart cart = (Cart) req.getSession().getAttribute(\"cart\");\n\n        if (cart != null) {\n            \/\/ \u6e05\u7a7a\u8d2d\u7269\u8f66\n            cart.clear();\n            \/\/ \u91cd\u5b9a\u5411\u56de\u539f\u6765\u8d2d\u7269\u8f66\u5c55\u793a\u9875\u9762\n            resp.sendRedirect(req.getHeader(\"Referer\"));\n        }\n    }\n\n    \/**\n     * \u5220\u9664 \u5546\u54c1\u9879\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void deleteItem(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ \u83b7\u53d6\u5546\u54c1\u7f16\u53f7\n        int id = WebUtils.parseInt(req.getParameter(\"id\"), 0);\n        \/\/ \u83b7\u53d6\u8d2d\u7269\u8f66\u5bf9\u8c61\n        Cart cart = (Cart) req.getSession().getAttribute(\"cart\");\n\n        if (cart != null) {\n            \/\/ \u5220\u9664 \u4e86\u8d2d\u7269\u8f66\u5546\u54c1\u9879\n            cart.deleteItem(id);\n            \/\/ \u91cd\u5b9a\u5411\u56de\u539f\u6765\u8d2d\u7269\u8f66\u5c55\u793a\u9875\u9762\n            resp.sendRedirect(req.getHeader(\"Referer\"));\n        }\n\n\n    }\n\n    \/**\n     * \u52a0\u5165\u8d2d\u7269\u8f66\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void addItem(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\n\/\/        System.out.println(\"\u52a0\u5165\u8d2d\u7269\u8f66\");\n\/\/        System.out.println(\"\u5546\u54c1\u7f16\u53f7\uff1a\" + req.getParameter(\"id\"));\n\n        \/\/ \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570 \u5546\u54c1\u7f16\u53f7\n        int id = WebUtils.parseInt(req.getParameter(\"id\"),0);\n        \/\/ \u8c03\u7528bookService.queryBookById(id):Book\u5f97\u5230\u56fe\u4e66\u7684\u4fe1\u606f\n        Book book = bookService.queryBookById(id);\n        \/\/ \u628a\u56fe\u4e66\u4fe1\u606f\uff0c\u8f6c\u6362\u6210\u4e3aCartItem\u5546\u54c1\u9879\n        CartItem cartItem = new CartItem(book.getId(),book.getName(),1,book.getPrice(),book.getPrice());\n        \/\/ \u8c03\u7528Cart.addItem(CartItem);\u6dfb\u52a0\u5546\u54c1\u9879\n        Cart cart = (Cart) req.getSession().getAttribute(\"cart\");\n        if (cart == null) {\n            cart = new Cart();\n            req.getSession().setAttribute(\"cart\",cart);\n        }\n        cart.addItem(cartItem);\n\n        System.out.println(cart);\n\n        System.out.println(\"\u8bf7\u6c42\u5934Referer\u7684\u503c\uff1a\" + req.getHeader(\"Referer\"));\n\n        \/\/ \u6700\u540e\u4e00\u4e2a\u6dfb\u52a0\u7684\u5546\u54c1\u540d\u79f0\n        req.getSession().setAttribute(\"lastName\", cartItem.getName());\n\n        \/\/ \u91cd\u5b9a\u5411\u56de\u539f\u6765\u5546\u54c1\u6240\u5728\u7684\u5730\u5740\u9875\u9762\n        resp.sendRedirect(req.getHeader(\"Referer\"));\n    }\n\n    \/**\n     * \u6d4b\u8bd5Referer\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void Test(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\n        System.out.println(\"\u8bf7\u6c42\u5934Referer\u7684\u503c\uff1a\" + req.getHeader(\"Referer\"));\n\n    }\n\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-258-1024x391.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"391\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-258-1024x391.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2586\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u8d2d\u7269\u8f66\/pages\/cart\/cart.jsp \u9875\u9762\u7684\u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ taglib prefix=\"c\" uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" %&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;title&gt;\u8d2d\u7269\u8f66&lt;\/title&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b base\u6807\u7b7e\uff0ccss\u6837\u5f0f\uff0cjQuery\u6587\u4ef6 --%&gt;\n\t&lt;%@ include file=\"\/pages\/common\/head.jsp\"%&gt;\n\n\t&lt;script type=\"text\/javascript\"&gt;\n\n\t\t$(function () {\n\t\t\t\/\/ \u7ed9 \u3010\u5220\u9664\u3011\u7ed1\u5b9a\u5355\u51fb\u4e8b\u4ef6\n\t\t\t$(\"a.deleteItem\").click(function () {\n\t\t\t\treturn confirm(\"\u4f60\u786e\u5b9a\u8981\u5220\u9664\u3010\" + $(this).parent().parent().find(\"td:first\").text() + \"\u3011\u5417\uff1f\");\n\t\t\t})\n\n\t\t\t\/\/ \u7ed9 \u6e05\u7a7a\u8d2d\u7269\u8f66\u7ed1\u5b9a\u5355\u51fb\u4e8b\u4ef6\n\t\t\t$(\"#clearCart\").click(function () {\n\t\t\t\treturn confirm(\"\u4f60\u786e\u5b9a\u8981\u6e05\u7a7a\u8d2d\u7269\u8f66\u5417\uff1f\")\n\t\t\t})\n\n\t\t\t\/\/ \u7ed9 \u8f93\u5165\u6846\u7ed1\u5b9a\u5931\u53bb\u7126\u70b9\u4e8b\u4ef6 === onchange\u5185\u5bb9\u53d1\u751f\u6539\u53d8\u4e8b\u4ef6\n\t\t\t\/\/ $(\".updateCount\").blur(function () {\n\t\t\t$(\".updateCount\").change(function () {\n\t\t\t\t\/\/ alert(\"11\");\n\n\t\t\t\t\/\/ \u83b7\u53d6\u5546\u54c1\u540d\u79f0\n\t\t\t\tvar name = $(this).parent().parent().find(\"td:first\").text();\n\t\t\t\tvar id = $(this).attr(\"bookId\");\n\t\t\t\t\/\/ \u83b7\u53d6\u5546\u54c1\u6570\u91cf\n\t\t\t\tvar count = this.value;\n\n\t\t\t\tif (confirm(\"\u4f60\u786e\u5b9a\u8981\u5c06\u3010\" + name + \"\u3011\u5546\u54c1\u4fee\u6539\u6570\u91cf\u4e3a\uff1a\" + count + \" \u5417\uff1f\")) {\n\t\t\t\t\t\/\/ \u53d1\u8d77\u8bf7\u6c42\u3002\u7ed9\u670d\u52a1\u5668\u4fdd\u5b58\u4fee\u6539\n\t\t\t\t\tlocation.href = \"http:\/\/localhost:8080\/JavaWeb_Code_Book\/cartServlet?action=updateCount&amp;count=\" + count + \"&amp;id=\" + id;\n\n\t\t\t\t} else {\n\t\t\t\t\t\/\/ defaultValue\u5c5e\u6027\u662f\u8868\u5355\u9879Dom\u5bf9\u8c61\u7684\u5c5e\u6027\u3002\u5b83\u8868\u793a\u9ed8\u8ba4\u7684value\u5c5e\u6027\u503c\u3002\n\t\t\t\t\tthis.value = this.defaultValue\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t&lt;\/script&gt;\n\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;%--${sessionScope}--%&gt;\n\t\n\t&lt;div id=\"header\"&gt;\n\t\t\t&lt;img class=\"logo_img\" alt=\"\" src=\"static\/img\/logo.gif\" &gt;\n\t\t\t&lt;span class=\"wel_word\"&gt;\u8d2d\u7269\u8f66&lt;\/span&gt;\n\n\t\t&lt;%-- \u9759\u6001\u5305\u542b\uff0c\u767b\u9646\u6210\u529f\u4e4b\u540e\u7684\u83dc\u5355 --%&gt;\n\t\t&lt;%@ include file=\"\/pages\/common\/login_success_menu.jsp\"%&gt;\n\n\t&lt;\/div&gt;\n\t\n\t&lt;div id=\"main\"&gt;\n\t\n\t\t&lt;table&gt;\n\t\t\t&lt;tr&gt;\n\t\t\t\t&lt;td&gt;\u5546\u54c1\u540d\u79f0&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u6570\u91cf&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u5355\u4ef7&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u91d1\u989d&lt;\/td&gt;\n\t\t\t\t&lt;td&gt;\u64cd\u4f5c&lt;\/td&gt;\n\t\t\t&lt;\/tr&gt;\n\t\t\t&lt;c:if test=\"${empty sessionScope.cart.items}\"&gt;\n\t\t\t\t&lt;%-- \u5982\u679c\u8d2d\u7269\u8f66\u7a7a\u7684\u60c5\u51b5 --%&gt;\n\t\t\t\t&lt;tr&gt;\n\t\t\t\t\t&lt;td colspan=\"5\"&gt;&lt;a href=\"index.jsp\"&gt;\u4eb2\uff0c\u5f53\u524d\u8d2d\u7269\u8f66\u4e3a\u7a7a\uff01\u5feb\u8ddf\u5c0f\u4f19\u4f34\u4eec\u53bb\u6d4f\u89c8\u5546\u54c1\u5427\uff01\uff01\uff01&lt;\/a&gt; &lt;\/td&gt;\n\t\t\t\t&lt;\/tr&gt;\n\t\t\t&lt;\/c:if&gt;\n\t\t\t&lt;c:if test=\"${not empty sessionScope.cart.items}\"&gt;\n\t\t\t\t&lt;%-- \u5982\u679c\u8d2d\u7269\u8f66\u975e\u7a7a\u7684\u60c5\u51b5 --%&gt;\n\t\t\t\t&lt;c:forEach items=\"${sessionScope.cart.items}\" var=\"entry\"&gt;\n\t\t\t\t\t&lt;tr&gt;\n\t\t\t\t\t\t&lt;td&gt;${entry.value.name}&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;\n\t\t\t\t\t\t\t&lt;input class=\"updateCount\" style=\"width: 60px;\"\n\t\t\t\t\t\t\t\t   bookId=\"${entry.value.id}\"\n\t\t\t\t\t\t\t\t   type=\"text\" value=\"${entry.value.count}\"&gt;\n\t\t\t\t\t\t&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;${entry.value.price}&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;${entry.value.totalPrice}&lt;\/td&gt;\n\t\t\t\t\t\t&lt;td&gt;&lt;a class=\"deleteItem\" href=\"cartServlet?action=deleteItem&amp;id=${entry.value.id}\"&gt;\u5220\u9664&lt;\/a&gt;&lt;\/td&gt;\n\t\t\t\t\t&lt;\/tr&gt;\n\t\t\t\t&lt;\/c:forEach&gt;\n\t\t\t&lt;\/c:if&gt;\n\n\t\t&lt;\/table&gt;\n\n\t\t&lt;%-- \u5982\u679c\u8d2d\u7269\u8f66\u975e\u7a7a\u624d\u8f93\u51fa\u9875\u9762\u7684\u5185\u5bb9 --%&gt;\n\t\t&lt;c:if test=\"${not empty sessionScope.cart.items}\"&gt;\n\t\t&lt;div class=\"cart_info\"&gt;\n\t\t\t&lt;span class=\"cart_span\"&gt;\u8d2d\u7269\u8f66\u4e2d\u5171\u6709&lt;span class=\"b_count\"&gt;${sessionScope.cart.totalCount}&lt;\/span&gt;\u4ef6\u5546\u54c1&lt;\/span&gt;\n\t\t\t&lt;span class=\"cart_span\"&gt;\u603b\u91d1\u989d&lt;span class=\"b_price\"&gt;${sessionScope.cart.totalPrice}&lt;\/span&gt;\u5143&lt;\/span&gt;\n\t\t\t&lt;span class=\"cart_span\"&gt;&lt;a id=\"clearCart\" href=\"cartServlet?action=clear\"&gt;\u6e05\u7a7a\u8d2d\u7269\u8f66&lt;\/a&gt;&lt;\/span&gt;\n\t\t\t&lt;span class=\"cart_span\"&gt;&lt;a href=\"orderServlet?action=createOrder\"&gt;\u53bb\u7ed3\u8d26&lt;\/a&gt;&lt;\/span&gt;\n\t\t&lt;\/div&gt;\n\t\t&lt;\/c:if&gt;\n\t\n\t&lt;\/div&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b\u9875\u811a\u5185\u5bb9 --%&gt;\n\t&lt;%@include file=\"\/pages\/common\/footer.jsp\"%&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<p>\u5220\u9664\u7684\u8bf7\u6c42\u5730\u5740\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-259.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"934\" height=\"55\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-259.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2587\"  sizes=\"(max-width: 934px) 100vw, 934px\" \/><\/div><\/figure>\n\n\n\n<p>\u5220\u9664\u7684\u786e\u8ba4\u63d0\u793a\u64cd\u4f5c\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-260.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"127\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-260.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2588\"  sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;script type=\"text\/javascript\"&gt;\n$(function () {\n\/\/ \u7ed9 \u3010\u5220\u9664\u3011\u7ed1\u5b9a\u5355\u51fb\u4e8b\u4ef6\n$(\"a.deleteItem\").click(function () {\nreturn confirm(\"\u4f60\u786e\u5b9a\u8981\u5220\u9664\u3010\" + $(this).parent().parent().find(\"td:first\").text() +\"\u3011\u5417?\")});\n});\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">1.6\u3001\u6e05\u7a7a\u8d2d\u7269\u8f66<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/**\n     * \u6e05\u7a7a\u8d2d\u7269\u8f66\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void clear(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ 1. \u83b7\u53d6\u8d2d\u7269\u8f66\u5bf9\u8c61\n        Cart cart = (Cart) req.getSession().getAttribute(\"cart\");\n\n        if (cart != null) {\n            \/\/ \u6e05\u7a7a\u8d2d\u7269\u8f66\n            cart.clear();\n            \/\/ \u91cd\u5b9a\u5411\u56de\u539f\u6765\u8d2d\u7269\u8f66\u5c55\u793a\u9875\u9762\n            resp.sendRedirect(req.getHeader(\"Referer\"));\n        }\n    }<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-261-1024x381.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"381\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-261-1024x381.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2589\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>cart.jsp \u9875\u9762\u7684\u5185\u5bb9<\/p>\n\n\n\n<p>\u7ed9\u6e05\u7a7a\u8d2d\u7269\u8f66\u6dfb\u52a0\u8bf7\u6c42\u5730\u5740\uff0c\u548c\u6dfb\u52a0 id \u5c5e\u6027\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-262-1024x210.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"210\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-262-1024x210.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2590\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u6e05\u7a7a\u7684\u786e\u8ba4\u63d0\u793a\u64cd\u4f5c\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u7ed9\u6e05\u7a7a\u8d2d\u7269\u8f66\u7ed1\u5b9a\u5355\u51fb\u4e8b\u4ef6\n$(\"#clearCart\").click(function () {\nreturn confirm(\"\u4f60\u786e\u5b9a\u8981\u6e05\u7a7a\u8d2d\u7269\u8f66\u5417?\");})<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-263.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"668\" height=\"136\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-263.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2591\"  sizes=\"(max-width: 668px) 100vw, 668px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">1.7\u3001\u4fee\u6539\u8d2d\u7269\u8f66\u5546\u54c1\u6570\u91cf<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/**\n     * \u4fee\u6539\u5546\u54c1\u6570\u91cf\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void updateCount(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570 \u5546\u54c1\u7f16\u53f7\u3001\u5546\u54c1\u6570\u91cf\n        int id = WebUtils.parseInt(req.getParameter(\"id\"),0);\n        int count = WebUtils.parseInt(req.getParameter(\"count\"),1);\n\n        \/\/ \u83b7\u53d6Cart\u8d2d\u7269\u8f66\u5bf9\u8c61\n        Cart cart = (Cart) req.getSession().getAttribute(\"cart\");\n\n        if (cart != null) {\n            \/\/ \u4fee\u6539\u5546\u54c1\u6570\u91cf\n            cart.updateCount(id,count);\n\n            \/\/ \u91cd\u5b9a\u5411\u56de\u539f\u6765\u8d2d\u7269\u8f66\u5c55\u793a\u9875\u9762\n            resp.sendRedirect(req.getHeader(\"Referer\"));\n        }\n\n    }<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-264-1024x436.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"436\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-264-1024x436.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2592\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<p>\u4fee\u6539 pages\/cart\/cart.jsp \u8d2d\u7269\u8f66\u9875\u9762\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-265.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"584\" height=\"119\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-265.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2593\"  sizes=\"(max-width: 584px) 100vw, 584px\" \/><\/div><\/figure>\n\n\n\n<p>\u4fee\u6539\u5546\u54c1\u6570\u91cf js \u4ee3\u7801\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\t\t\t\/\/ \u7ed9 \u8f93\u5165\u6846\u7ed1\u5b9a\u5931\u53bb\u7126\u70b9\u4e8b\u4ef6 === onchange\u5185\u5bb9\u53d1\u751f\u6539\u53d8\u4e8b\u4ef6\n\t\t\t\/\/ $(\".updateCount\").blur(function () {\n\t\t\t$(\".updateCount\").change(function () {\n\t\t\t\t\/\/ alert(\"11\");\n\n\t\t\t\t\/\/ \u83b7\u53d6\u5546\u54c1\u540d\u79f0\n\t\t\t\tvar name = $(this).parent().parent().find(\"td:first\").text();\n\t\t\t\tvar id = $(this).attr(\"bookId\");\n\t\t\t\t\/\/ \u83b7\u53d6\u5546\u54c1\u6570\u91cf\n\t\t\t\tvar count = this.value;\n\n\t\t\t\tif (confirm(\"\u4f60\u786e\u5b9a\u8981\u5c06\u3010\" + name + \"\u3011\u5546\u54c1\u4fee\u6539\u6570\u91cf\u4e3a\uff1a\" + count + \" \u5417\uff1f\")) {\n\t\t\t\t\t\/\/ \u53d1\u8d77\u8bf7\u6c42\u3002\u7ed9\u670d\u52a1\u5668\u4fdd\u5b58\u4fee\u6539\n\t\t\t\t\tlocation.href = \"http:\/\/localhost:8080\/JavaWeb_Code_Book\/cartServlet?action=updateCount&amp;count=\" + count + \"&amp;id=\" + id;\n\n\t\t\t\t} else {\n\t\t\t\t\t\/\/ defaultValue\u5c5e\u6027\u662f\u8868\u5355\u9879Dom\u5bf9\u8c61\u7684\u5c5e\u6027\u3002\u5b83\u8868\u793a\u9ed8\u8ba4\u7684value\u5c5e\u6027\u503c\u3002\n\t\t\t\t\tthis.value = this.defaultValue\n\t\t\t\t}\n\t\t\t})<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-266-1024x401.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"401\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-266-1024x401.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2594\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">1.8\u3001\u9996\u9875\uff0c\u8d2d\u7269\u8f66\u6570\u636e\u56de\u663e<\/h3>\n\n\n\n<p>\u5728\u6dfb\u52a0\u5546\u54c1\u5230\u8d2d\u7269\u8f66\u7684\u65f6\u5019\uff0c\u4fdd\u5b58\u6700\u540e\u4e00\u4e2a\u6dfb\u52a0\u7684\u5546\u54c1\u540d\u79f0\uff1a<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/**\n     * \u52a0\u5165\u8d2d\u7269\u8f66\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void addItem(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n\n\/\/        System.out.println(\"\u52a0\u5165\u8d2d\u7269\u8f66\");\n\/\/        System.out.println(\"\u5546\u54c1\u7f16\u53f7\uff1a\" + req.getParameter(\"id\"));\n\n        \/\/ \u83b7\u53d6\u8bf7\u6c42\u7684\u53c2\u6570 \u5546\u54c1\u7f16\u53f7\n        int id = WebUtils.parseInt(req.getParameter(\"id\"),0);\n        \/\/ \u8c03\u7528bookService.queryBookById(id):Book\u5f97\u5230\u56fe\u4e66\u7684\u4fe1\u606f\n        Book book = bookService.queryBookById(id);\n        \/\/ \u628a\u56fe\u4e66\u4fe1\u606f\uff0c\u8f6c\u6362\u6210\u4e3aCartItem\u5546\u54c1\u9879\n        CartItem cartItem = new CartItem(book.getId(),book.getName(),1,book.getPrice(),book.getPrice());\n        \/\/ \u8c03\u7528Cart.addItem(CartItem);\u6dfb\u52a0\u5546\u54c1\u9879\n        Cart cart = (Cart) req.getSession().getAttribute(\"cart\");\n        if (cart == null) {\n            cart = new Cart();\n            req.getSession().setAttribute(\"cart\",cart);\n        }\n        cart.addItem(cartItem);\n\n        System.out.println(cart);\n\n        System.out.println(\"\u8bf7\u6c42\u5934Referer\u7684\u503c\uff1a\" + req.getHeader(\"Referer\"));\n\n        \/\/ \u6700\u540e\u4e00\u4e2a\u6dfb\u52a0\u7684\u5546\u54c1\u540d\u79f0\n        req.getSession().setAttribute(\"lastName\", cartItem.getName());\n\n        \/\/ \u91cd\u5b9a\u5411\u56de\u539f\u6765\u5546\u54c1\u6240\u5728\u7684\u5730\u5740\u9875\u9762\n        resp.sendRedirect(req.getHeader(\"Referer\"));\n    }<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-267.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"773\" height=\"128\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-267.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2595\"  sizes=\"(max-width: 773px) 100vw, 773px\" \/><\/div><\/figure>\n\n\n\n<p>\u5728 pages\/client\/index.jsp \u9875\u9762\u4e2d\u8f93\u51fa\u8d2d\u7269\u8f66\u4fe1\u606f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ taglib prefix=\"c\" uri=\"http:\/\/java.sun.com\/jsp\/jstl\/core\" %&gt;\n&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;title&gt;\u4e66\u57ce\u9996\u9875&lt;\/title&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b base\u6807\u7b7e\uff0ccss\u6837\u5f0f\uff0cjQuery\u6587\u4ef6 --%&gt;\n\t&lt;%@ include file=\"\/pages\/common\/head.jsp\"%&gt;\n\n\t&lt;script type=\"text\/javascript\"&gt;\n\t\t$(function () {\n\t\t\t\/\/ \u7ed9\u52a0\u5165\u8d2d\u7269\u8f66\u6309\u94ae\u7ed1\u5b9a\u5355\u51fb\u4e8b\u4ef6\n\t\t\t$(\"button.addToCart\").click(function () {\n\t\t\t\t\/**\n\t\t\t\t * \u5728\u4e8b\u4ef6\u54cd\u5e94\u7684function\u51fd\u6570 \u4e2d\uff0c\u6709\u4e00\u4e2athis\u5bf9\u8c61\uff0c\u8fd9\u4e2athis\u5bf9\u8c61\uff0c\u662f\u5f53\u524d\u6b63\u5728\u54cd\u5e94\u4e8b\u4ef6\u7684dom\u5bf9\u8c61\n\t\t\t\t * @type {*|jQuery}\n\t\t\t\t *\/\n\t\t\t\tvar bookId = $(this).attr(\"bookId\");\n\t\t\t\tlocation.href = \"http:\/\/localhost:8080\/JavaWeb_Code_Book\/cartServlet?action=addItem&amp;id=\" + bookId;\n\t\t\t})\n\t\t})\n\t&lt;\/script&gt;\n\n&lt;\/head&gt;\n&lt;body&gt;\n\t\n\t&lt;div id=\"header\"&gt;\n\t\t\t&lt;img class=\"logo_img\" alt=\"\" src=\"static\/img\/logo.gif\" &gt;\n\t\t\t&lt;span class=\"wel_word\"&gt;\u7f51\u4e0a\u4e66\u57ce&lt;\/span&gt;\n\t\t\t&lt;div&gt;\n\t\t\t\t&lt;%-- \u5982\u679c\u7528\u6237\u8fd8\u6ca1\u6709\u767b\u5f55\uff0c\u663e\u793a \t\u3010\u767b\u5f55 \u548c\u6ce8\u518c\u7684\u83dc\u5355\u3011 --%&gt;\n\t\t\t\t&lt;c:if test=\"${empty sessionScope.user}\"&gt;\n\t\t\t\t\t&lt;a href=\"pages\/user\/login.jsp\"&gt;\u767b\u5f55&lt;\/a&gt; |\n\t\t\t\t\t&lt;a href=\"pages\/user\/regist.jsp\"&gt;\u6ce8\u518c&lt;\/a&gt; &amp;nbsp;&amp;nbsp;\n\t\t\t\t&lt;\/c:if&gt;\n\t\t\t\t&lt;%-- \u5982\u679c\u5df2\u7ecf\u767b\u5f55\uff0c\u5219\u663e\u793a \u767b\u5f55 \u6210\u529f\u4e4b\u540e\u7684\u7528\u6237\u4fe1\u606f\u3002 --%&gt;\n\t\t\t\t&lt;c:if test=\"${not empty sessionScope.user}\"&gt;\n\t\t\t\t\t&lt;span&gt;\u6b22\u8fce&lt;span class=\"um_span\"&gt;${sessionScope.user.username}&lt;\/span&gt;\u5149\u4e34\u5c1a\u7845\u8c37\u4e66\u57ce&lt;\/span&gt;\n\t\t\t\t\t&lt;a href=\"pages\/order\/order.jsp\"&gt;\u6211\u7684\u8ba2\u5355&lt;\/a&gt;\n\t\t\t\t\t&lt;a href=\"userServlet?action=logout\"&gt;\u6ce8\u9500&lt;\/a&gt;&amp;nbsp;&amp;nbsp;\n\t\t\t\t&lt;\/c:if&gt;\n\n\t\t\t\t&lt;a href=\"pages\/cart\/cart.jsp\"&gt;\u8d2d\u7269\u8f66&lt;\/a&gt;\n\t\t\t\t&lt;a href=\"pages\/manager\/manager.jsp\"&gt;\u540e\u53f0\u7ba1\u7406&lt;\/a&gt;\n\t\t\t&lt;\/div&gt;\n\t&lt;\/div&gt;\n\t&lt;div id=\"main\"&gt;\n\t\t&lt;div id=\"book\"&gt;\n\t\t\t&lt;div class=\"book_cond\"&gt;\n\t\t\t\t&lt;form action=\"client\/bookServlet\" method=\"get\"&gt;\n\t\t\t\t\t&lt;input type=\"hidden\" name=\"action\" value=\"pageByPrice\"&gt;\n\t\t\t\t\t\u4ef7\u683c\uff1a&lt;input id=\"min\" type=\"text\" name=\"min\" value=\"${param.min}\"&gt; \u5143 -\n\t\t\t\t\t\t&lt;input id=\"max\" type=\"text\" name=\"max\" value=\"${param.max}\"&gt; \u5143\n\t\t\t\t\t\t&lt;input type=\"submit\" value=\"\u67e5\u8be2\" \/&gt;\n\t\t\t\t&lt;\/form&gt;\n\t\t\t&lt;\/div&gt;\n\t\t\t&lt;div style=\"text-align: center\"&gt;\n\t\t\t\t&lt;c:if test=\"${empty sessionScope.cart.items}\"&gt;\n\t\t\t\t\t&lt;%-- \u8d2d\u7269\u8f66\u4e3a\u7a7a\u7684\u8f93\u51fa --%&gt;\n\t\t\t\t\t&lt;span&gt;&lt;\/span&gt;\n\t\t\t\t\t&lt;div&gt;\n\t\t\t\t\t\t&lt;span style=\"color: red\"&gt;\u5f53\u524d\u8d2d\u7269\u8f66\u4e3a\u7a7a&lt;\/span&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;\/c:if&gt;\n\t\t\t\t&lt;c:if test=\"${not empty sessionScope.cart.items}\"&gt;\n\t\t\t\t\t&lt;%-- \u8d2d\u7269\u8f66\u975e\u7a7a\u7684\u8f93\u51fa --%&gt;\n\t\t\t\t\t&lt;span&gt;\u60a8\u7684\u8d2d\u7269\u8f66\u4e2d\u6709${sessionScope.cart.totalCount}\u4ef6\u5546\u54c1&lt;\/span&gt;\n\t\t\t\t\t&lt;div&gt;\n\t\t\t\t\t\t\u60a8\u521a\u521a\u5c06&lt;span style=\"color: red\"&gt;${sessionScope.lastName}&lt;\/span&gt;\u52a0\u5165\u5230\u4e86\u8d2d\u7269\u8f66\u4e2d\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;\/c:if&gt;\n\n\t\t\t&lt;\/div&gt;\n\n\t\t\t&lt;c:forEach items=\"${requestScope.page.itmes}\" var=\"book\"&gt;\n\t\t\t&lt;div class=\"b_list\"&gt;\n\t\t\t\t&lt;div class=\"img_div\"&gt;\n\t\t\t\t\t&lt;img class=\"book_img\" alt=\"\" src=\"${book.imgpath}\" \/&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;div class=\"book_info\"&gt;\n\t\t\t\t\t&lt;div class=\"book_name\"&gt;\n\t\t\t\t\t\t&lt;span class=\"sp1\"&gt;\u4e66\u540d:&lt;\/span&gt;\n\t\t\t\t\t\t&lt;span class=\"sp2\"&gt;${book.name}&lt;\/span&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t&lt;div class=\"book_author\"&gt;\n\t\t\t\t\t\t&lt;span class=\"sp1\"&gt;\u4f5c\u8005:&lt;\/span&gt;\n\t\t\t\t\t\t&lt;span class=\"sp2\"&gt;${book.author}&lt;\/span&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t&lt;div class=\"book_price\"&gt;\n\t\t\t\t\t\t&lt;span class=\"sp1\"&gt;\u4ef7\u683c:&lt;\/span&gt;\n\t\t\t\t\t\t&lt;span class=\"sp2\"&gt;${book.price}&lt;\/span&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t&lt;div class=\"book_sales\"&gt;\n\t\t\t\t\t\t&lt;span class=\"sp1\"&gt;\u9500\u91cf:&lt;\/span&gt;\n\t\t\t\t\t\t&lt;span class=\"sp2\"&gt;${book.sales}&lt;\/span&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t&lt;div class=\"book_amount\"&gt;\n\t\t\t\t\t\t&lt;span class=\"sp1\"&gt;\u5e93\u5b58:&lt;\/span&gt;\n\t\t\t\t\t\t&lt;span class=\"sp2\"&gt;${book.stock}&lt;\/span&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t\t&lt;div class=\"book_add\"&gt;\n\t\t\t\t\t\t&lt;button bookId=\"${book.id}\" class=\"addToCart\"&gt;\u52a0\u5165\u8d2d\u7269\u8f66&lt;\/button&gt;\n\t\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t&lt;\/div&gt;\n\t\t\t&lt;\/c:forEach&gt;\n\n\t\t&lt;\/div&gt;\n\n\t\t&lt;%-- \u9759\u6001\u5305\u542b\u5206\u9875\u6761 --%&gt;\n\t\t&lt;%@include file=\"\/pages\/common\/page_nav.jsp\"%&gt;\n\n\t&lt;\/div&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b\u9875\u811a\u5185\u5bb9 --%&gt;\n\t&lt;%@include file=\"\/pages\/common\/footer.jsp\"%&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-268.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"946\" height=\"375\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-268.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2596\"  sizes=\"(max-width: 946px) 100vw, 946px\" \/><\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">2\u3001\u9879\u76ee\u7b2c\u4e03\u9636\u6bb5\uff1a\u8ba2\u5355<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">2.1\u3001\u8ba2\u5355\u6a21\u5757\u7684\u5206\u6790\uff1a<\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-269-1024x499.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"499\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-269-1024x499.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2597\"  sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2.2\uff1a\u8ba2\u5355\u6a21\u5757\u7684\u5b9e\u73b0<\/h3>\n\n\n\n<p>2.2.1\u3001\u521b\u5efa\u8ba2\u5355\u6a21\u5757\u7684\u6570\u636e\u5e93\u8868<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># P287 \u4e66\u57ce\u9879\u76ee-\u521b\u5efa\u8ba2\u5355\u6a21\u578b\u7684\u6570\u636e\u5e93\u8868\n\nUSE book;\n\nCREATE TABLE t_order(\n    order_id VARCHAR(50) PRIMARY KEY,   #\u8ba2\u5355\u53f7\uff08\u552f\u4e00\uff09\n    create_time DATETIME,   #\u4e0b\u5355\u65f6\u95f4\n    price DECIMAL(11,2),    #\u91d1\u989d\n    status INT,     #0\u672a\u53d1\u8d27\uff0c1\u5df2\u53d1\u8d27\uff0c2\u5df2\u7b7e\u6536\n    user_id INT,    #\u7528\u6237\u7f16\u53f7\n    FOREIGN KEY(user_id) REFERENCES t_user(id)\n);\n\nCREATE TABLE t_order_item(\n    id INT PRIMARY KEY AUTO_INCREMENT,  #\u4e3b\u952e\u7f16\u53f7\n    name VARCHAR(100),  #\u5546\u54c1\u540d\u79f0\n    count INT,  #\u6570\u91cf\n    price DECIMAL(11,2),    #\u5355\u4ef7\n    total_price DECIMAL(11,2),  #\u603b\u4ef7\n    order_id VARCHAR(50),   #\u8ba2\u5355\u53f7\n    FOREIGN KEY(order_id) REFERENCES t_order(order_id)\n);<\/code><\/pre>\n\n\n\n<p>2.2.2\u3001\u521b\u5efa\u8ba2\u5355\u6a21\u5757\u7684\u6570\u636e\u6a21\u578b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.pojo;\n\nimport java.math.BigDecimal;\nimport java.util.Date;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 4:10\n *\/\npublic class Order {\n\n    private String orderId;     \/\/\u8ba2\u5355\u53f7\uff08\u552f\u4e00\uff09\n    private Date createTime;    \/\/\u4e0b\u5355\u65f6\u95f4\n    private BigDecimal price;   \/\/\u91d1\u989d\n    \/\/ 0\u672a\u53d1\u8d27\uff0c1\u5df2\u53d1\u8d27\uff0c2\u8868\u793a\u5df2\u7b7e\u6536\n    private Integer status = 0;     \/\/\u72b6\u6001\n    private Integer userId;     \/\/\u7528\u6237\u7f16\u53f7\n\n    public Order() {\n\n    }\n\n    public Order(String orderId, Date createTime, BigDecimal price, Integer status, Integer userId) {\n        this.orderId = orderId;\n        this.createTime = createTime;\n        this.price = price;\n        this.status = status;\n        this.userId = userId;\n    }\n\n    public String getOrderId() {\n\n        return orderId;\n    }\n\n    public void setOrderId(String orderId) {\n        this.orderId = orderId;\n    }\n\n    public Date getCreateTime() {\n\n        return createTime;\n    }\n\n    public void setCreateTime(Date createTime) {\n        this.createTime = createTime;\n    }\n\n    public BigDecimal getPrice() {\n        return price;\n    }\n\n    public void setPrice(BigDecimal price) {\n        this.price = price;\n    }\n\n    public Integer getStatus() {\n        return status;\n    }\n\n    public void setStatus(Integer status) {\n        this.status = status;\n    }\n\n    public Integer getUserId() {\n        return userId;\n    }\n\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    @Override\n    public String toString() {\n        return \"Order{\" +\n                \"orderId='\" + orderId + '\\'' +\n                \", createTime=\" + createTime +\n                \", price=\" + price +\n                \", status=\" + status +\n                \", userId=\" + userId +\n                '}';\n    }\n}\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.pojo;\n\nimport java.math.BigDecimal;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 4:13\n *\/\npublic class OrderItem {\n\n    private Integer id;     \/\/\u4e3b\u952e\u7f16\u53f7\n    private String name;    \/\/\u5546\u54c1\u540d\u79f0\n    private Integer count;  \/\/\u6570\u91cf\n    private BigDecimal price;   \/\/\u5355\u4ef7\n    private BigDecimal totalPrice;  \/\/\u603b\u4ef7\n    private String orderId;     \/\/\u8ba2\u5355\u53f7\n\n    public OrderItem() {\n    }\n\n    public OrderItem(Integer id, String name, Integer count, BigDecimal price, BigDecimal totalPrice, String orderId) {\n        this.id = id;\n        this.name = name;\n        this.count = count;\n        this.price = price;\n        this.totalPrice = totalPrice;\n        this.orderId = orderId;\n    }\n\n    public Integer getId() {\n        return id;\n    }\n\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public Integer getCount() {\n        return count;\n    }\n\n    public void setCount(Integer count) {\n        this.count = count;\n    }\n\n    public BigDecimal getPrice() {\n        return price;\n    }\n\n    public void setPrice(BigDecimal price) {\n        this.price = price;\n    }\n\n    public BigDecimal getTotalPrice() {\n        return totalPrice;\n    }\n\n    public void setTotalPrice(BigDecimal totalPrice) {\n        this.totalPrice = totalPrice;\n    }\n\n    public String getOrderId() {\n        return orderId;\n    }\n\n    public void setOrderId(String orderId) {\n        this.orderId = orderId;\n    }\n\n    @Override\n    public String toString() {\n        return \"OrderItem{\" +\n                \"id=\" + id +\n                \", name='\" + name + '\\'' +\n                \", count=\" + count +\n                \", price=\" + price +\n                \", totalPrice=\" + totalPrice +\n                \", orderId='\" + orderId + '\\'' +\n                '}';\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>2.2.3\u3001\u7f16\u5199\u8ba2\u5355\u6a21\u5757\u7684 Dao \u7a0b\u5e8f\u548c\u6d4b\u8bd5<\/p>\n\n\n\n<p>OrderDao \u63a5\u53e3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.dao;\n\nimport top.qaqaq.pojo.Order;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 4:17\n *\/\npublic interface OrderDao {\n\n    \/**\n     * \u4fdd\u5b58\u8ba2\u5355\n     * @param order\n     * @return\n     *\/\n    public int saveOrder(Order order);\n}\n<\/code><\/pre>\n\n\n\n<p>OrderDao \u5b9e\u73b0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.dao.impl;\n\nimport top.qaqaq.dao.OrderDao;\nimport top.qaqaq.pojo.Order;\n\nimport java.text.SimpleDateFormat;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 4:18\n *\/\npublic class OrderDaoImpl extends BaseDao implements OrderDao {\n\n    @Override\n    public int saveOrder(Order order) {\n\n        String sql = \"insert into t_order(order_id,create_time,price,status,user_id) values(?,?,?,?,?)\";\n\n        SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");\n\n        return update(sql, order.getOrderId(),sdf.format(order.getCreateTime()),order.getPrice(),order.getStatus(),order.getUserId());\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>OrderItemDao \u63a5\u53e3<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.dao;\n\nimport top.qaqaq.pojo.OrderItem;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 4:17\n *\/\npublic interface OrderItemDao {\n\n    \/**\n     * \u4fdd\u5b58\u8ba2\u5355\u9879\n     * @param orderItem\n     * @return\n     *\/\n    public int saveOrderItem(OrderItem orderItem);\n}\n<\/code><\/pre>\n\n\n\n<p>OrderItemDao \u5b9e\u73b0<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.dao.impl;\n\nimport top.qaqaq.dao.OrderItemDao;\nimport top.qaqaq.pojo.OrderItem;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 4:23\n *\/\npublic class OrderItemDaoImpl extends BaseDao implements OrderItemDao {\n\n    @Override\n    public int saveOrderItem(OrderItem orderItem) {\n\n        String sql = \"insert into t_order_item(name,count,price,total_price,order_id) values(?,?,?,?,?)\";\n\n        return update(sql,orderItem.getName(),orderItem.getCount(),orderItem.getPrice(),orderItem.getTotalPrice(),orderItem.getOrderId());\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u6d4b\u8bd5<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.test;\n\nimport org.junit.Test;\nimport top.qaqaq.dao.OrderDao;\nimport top.qaqaq.dao.impl.OrderDaoImpl;\nimport top.qaqaq.pojo.Order;\n\nimport java.math.BigDecimal;\nimport java.util.Date;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 4:28\n *\/\npublic class OrderDaoTest {\n\n    @Test\n    public void saveOrder() {\n        OrderDao orderDao = new OrderDaoImpl();\n\n        orderDao.saveOrder(new Order(\"1234567890\",new Date(),new BigDecimal(100),0,1));\n\n    }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.test;\n\nimport org.junit.Test;\nimport top.qaqaq.dao.OrderItemDao;\nimport top.qaqaq.dao.impl.OrderItemDaoImpl;\nimport top.qaqaq.pojo.OrderItem;\n\nimport java.math.BigDecimal;\n\nimport static org.junit.Assert.*;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 5:31\n *\/\npublic class OrderItemDaoTest {\n\n    @Test\n    public void saveOrderItem() {\n        OrderItemDao orderItemDao = new OrderItemDaoImpl();\n\n        orderItemDao.saveOrderItem(new OrderItem(null,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(100),new BigDecimal(100),\"1234567890\"));\n        orderItemDao.saveOrderItem(new OrderItem(null,\"javaScript\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",2,new BigDecimal(100),new BigDecimal(200),\"1234567890\"));\n        orderItemDao.saveOrderItem(new OrderItem(null,\"Netty\u5165\u95e8\",1,new BigDecimal(100),new BigDecimal(100),\"1234567890\"));\n\n    }\n}<\/code><\/pre>\n\n\n\n<p>2.2.4\u3001\u7f16\u5199\u8ba2\u5355\u6a21\u5757\u7684 Service \u548c\u6d4b\u8bd5<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.service;\n\nimport top.qaqaq.pojo.Cart;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 5:38\n *\/\npublic interface OrderService {\n\n    \/**\n     * \u751f\u6210\u8ba2\u5355\n     * @param cart\n     * @param userId\n     * @return\n     *\/\n    public String createOrder(Cart cart,Integer userId);\n}\n<\/code><\/pre>\n\n\n\n<p>OrderService \u5b9e\u73b0\u7c7b<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.service.impl;\n\nimport top.qaqaq.dao.BookDao;\nimport top.qaqaq.dao.OrderDao;\nimport top.qaqaq.dao.OrderItemDao;\nimport top.qaqaq.dao.impl.BookDaoImpl;\nimport top.qaqaq.dao.impl.OrderDaoImpl;\nimport top.qaqaq.dao.impl.OrderItemDaoImpl;\nimport top.qaqaq.pojo.*;\nimport top.qaqaq.service.OrderService;\n\nimport java.util.Date;\nimport java.util.Map;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 5:40\n *\/\npublic class OrderServiceImpl implements OrderService {\n\n    private OrderDao orderDao = new OrderDaoImpl();\n    private OrderItemDao orderItemDao = new OrderItemDaoImpl();\n    private BookDao bookDao = new BookDaoImpl();\n\n    @Override\n    public String createOrder(Cart cart, Integer userId) {\n\n        \/\/ \u8ba2\u5355\u53f7===\u552f\u4e00\u6027\n        String orderId = System.currentTimeMillis() + \"\" + userId;\n        \/\/ \u521b\u5efa\u4e00\u4e2a\u8ba2\u5355\u5bf9\u8c61\n        Order order = new Order(orderId,new Date(),cart.getTotalPrice(),0,userId);\n        \/\/ \u4fdd\u5b58\u8ba2\u5355\n        orderDao.saveOrder(order);\n\n        \/\/ \u904d\u5386\u8d2d\u7269\u8f66\u4e2d\u6bcf\u4e00\u4e2a\u5546\u54c1\u9879\u8f6c\u6362\u6210\u4e3a\u8ba2\u5355\u9879\u4fdd\u5b58\u5230\u6570\u636e\u5e93\n        for (Map.Entry&lt;Integer, CartItem&gt; entry : cart.getItems().entrySet()) {\n            \/\/ \u83b7\u53d6\u6bcf\u4e00\u4e2a\u8d2d\u7269\u8f66\u4e2d\u7684\u5546\u54c1\u9879\n            CartItem cartItem = entry.getValue();\n            \/\/ \u8f6c\u6362\u4e3a\u6bcf\u4e00\u4e2a\u8ba2\u5355\u9879\n            OrderItem orderItem = new OrderItem(null,cartItem.getName(),cartItem.getCount(),cartItem.getPrice(),cartItem.getTotalPrice(),orderId);\n            \/\/ \u4fdd\u5b58\u8ba2\u5355\u9879\u5230\u4e66\u5e93\n            orderItemDao.saveOrderItem(orderItem);\n\n            \/\/ \u66f4\u65b0\u5e93\u5b58\u548c\u9500\u91cf\n            Book book = bookDao.queryBookById(cartItem.getId());\n            book.setSales(book.getSales() + cartItem.getCount());\n            book.setStock(book.getStock() - cartItem.getCount());\n            bookDao.updateBook(book);\n        }\n\n        \/\/ \u6e05\u7a7a\u8d2d\u7269\u8f66\n        cart.clear();\n\n        return orderId;\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u6d4b\u8bd5<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.test;\n\nimport org.junit.Test;\nimport top.qaqaq.pojo.Cart;\nimport top.qaqaq.pojo.CartItem;\nimport top.qaqaq.service.OrderService;\nimport top.qaqaq.service.impl.OrderServiceImpl;\n\nimport java.math.BigDecimal;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 6:21\n *\/\npublic class OrderServiceTest {\n\n    @Test\n    public void createOrder() {\n\n        Cart cart = new Cart();\n        cart.addItem(new CartItem(1,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(1000),new BigDecimal(1000)));\n        cart.addItem(new CartItem(1,\"java\u4ece\u5165\u95e8\u5230\u7cbe\u901a\",1,new BigDecimal(1000),new BigDecimal(1000)));\n        cart.addItem(new CartItem(2,\"\u6570\u636e\u7ed3\u6784\u4e0e\u7b97\u6cd5\",1,new BigDecimal(100),new BigDecimal(100)));\n\n        OrderService orderService = new OrderServiceImpl();\n\n        System.out.println(\"\u8ba2\u5355\u53f7\u662f\uff1a\" + orderService.createOrder(cart,1));\n\n    }\n}<\/code><\/pre>\n\n\n\n<p>2.2.5\u3001\u7f16\u5199\u8ba2\u5355\u6a21\u5757\u7684 web \u5c42\u548c\u9875\u9762\u8054\u8c03<\/p>\n\n\n\n<p>\u4fee\u6539 OrderService \u7a0b\u5e8f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.service.impl;\n\nimport top.qaqaq.dao.BookDao;\nimport top.qaqaq.dao.OrderDao;\nimport top.qaqaq.dao.OrderItemDao;\nimport top.qaqaq.dao.impl.BookDaoImpl;\nimport top.qaqaq.dao.impl.OrderDaoImpl;\nimport top.qaqaq.dao.impl.OrderItemDaoImpl;\nimport top.qaqaq.pojo.*;\nimport top.qaqaq.service.OrderService;\n\nimport java.util.Date;\nimport java.util.Map;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 5:40\n *\/\npublic class OrderServiceImpl implements OrderService {\n\n    private OrderDao orderDao = new OrderDaoImpl();\n    private OrderItemDao orderItemDao = new OrderItemDaoImpl();\n    private BookDao bookDao = new BookDaoImpl();\n\n    @Override\n    public String createOrder(Cart cart, Integer userId) {\n\n        \/\/ \u8ba2\u5355\u53f7===\u552f\u4e00\u6027\n        String orderId = System.currentTimeMillis() + \"\" + userId;\n        \/\/ \u521b\u5efa\u4e00\u4e2a\u8ba2\u5355\u5bf9\u8c61\n        Order order = new Order(orderId,new Date(),cart.getTotalPrice(),0,userId);\n        \/\/ \u4fdd\u5b58\u8ba2\u5355\n        orderDao.saveOrder(order);\n\n        \/\/ \u904d\u5386\u8d2d\u7269\u8f66\u4e2d\u6bcf\u4e00\u4e2a\u5546\u54c1\u9879\u8f6c\u6362\u6210\u4e3a\u8ba2\u5355\u9879\u4fdd\u5b58\u5230\u6570\u636e\u5e93\n        for (Map.Entry&lt;Integer, CartItem&gt; entry : cart.getItems().entrySet()) {\n            \/\/ \u83b7\u53d6\u6bcf\u4e00\u4e2a\u8d2d\u7269\u8f66\u4e2d\u7684\u5546\u54c1\u9879\n            CartItem cartItem = entry.getValue();\n            \/\/ \u8f6c\u6362\u4e3a\u6bcf\u4e00\u4e2a\u8ba2\u5355\u9879\n            OrderItem orderItem = new OrderItem(null,cartItem.getName(),cartItem.getCount(),cartItem.getPrice(),cartItem.getTotalPrice(),orderId);\n            \/\/ \u4fdd\u5b58\u8ba2\u5355\u9879\u5230\u4e66\u5e93\n            orderItemDao.saveOrderItem(orderItem);\n\n            \/\/ \u66f4\u65b0\u5e93\u5b58\u548c\u9500\u91cf\n            Book book = bookDao.queryBookById(cartItem.getId());\n            book.setSales(book.getSales() + cartItem.getCount());\n            book.setStock(book.getStock() - cartItem.getCount());\n            bookDao.updateBook(book);\n        }\n\n        \/\/ \u6e05\u7a7a\u8d2d\u7269\u8f66\n        cart.clear();\n\n        return orderId;\n    }\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-270.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"747\" height=\"227\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-270.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2598\"  sizes=\"(max-width: 747px) 100vw, 747px\" \/><\/div><\/figure>\n\n\n\n<p>OrderServlet \u7a0b\u5e8f\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package top.qaqaq.web;\n\nimport jakarta.servlet.ServletException;\nimport jakarta.servlet.http.HttpServletRequest;\nimport jakarta.servlet.http.HttpServletResponse;\nimport top.qaqaq.pojo.Cart;\nimport top.qaqaq.pojo.User;\nimport top.qaqaq.service.OrderService;\nimport top.qaqaq.service.impl.OrderServiceImpl;\n\nimport java.io.IOException;\n\n\/**\n * @author RichieZhang\n * @create 2022-12-14 \u4e0b\u5348 6:29\n *\/\npublic class OrderServlet extends BaseServlet{\n\n    private OrderService orderService = new OrderServiceImpl();\n\n    \/**\n     * \u751f\u6210\u8ba2\u5355\n     * @param req\n     * @param resp\n     * @throws ServletException\n     * @throws IOException\n     *\/\n    protected void createOrder(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {\n        \/\/ \u5148\u83b7\u53d6Cart\u8d2d\u7269\u8f66\u5bf9\u8c61\n        Cart cart = (Cart) req.getSession().getAttribute(\"cart\");\n        \/\/ \u83b7\u53d6Userid\n        User loginUser = (User) req.getSession().getAttribute(\"user\");\n\n        if (loginUser == null) {\n            req.getRequestDispatcher(\"\/pages\/user\/login.jsp\").forward(req,resp);\n            return;\n        }\n\n        Integer userId = loginUser.getId();\n        \/\/ \u8c03\u7528orderService.createOrder(Cart,Userid);\u751f\u6210\u8ba2\u5355\n        String orderId = orderService.createOrder(cart, userId);\n\n\/*        req.setAttribute(\"orderId\",orderId);\n\n        \/\/ \u8bf7\u6c42\u8f6c\u53d1\u5230\/pages\/cart\/checkout.jsp\n        req.getRequestDispatcher(\"\/pages\/cart\/checkout.jsp\").forward(req,resp);*\/\n\n        req.getSession().setAttribute(\"orderId\",orderId);\n\n        resp.sendRedirect(req.getContextPath() + \"\/pages\/cart\/checkout.jsp\");\n\n    }\n}\n<\/code><\/pre>\n\n\n\n<p>\u4fee\u6539 pages\/cart\/cart.jsp \u9875\u9762\uff0c\u7ed3\u8d26\u7684\u8bf7\u6c42\u5730\u5740\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-271.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"819\" height=\"102\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-271.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2599\"  sizes=\"(max-width: 819px) 100vw, 819px\" \/><\/div><\/figure>\n\n\n\n<p>\u4fee\u6539 pages\/cart\/checkout.jsp \u9875\u9762\uff0c\u8f93\u51fa\u8ba2\u5355\u53f7\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%@ page contentType=\"text\/html;charset=UTF-8\" language=\"java\" %&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n&lt;meta charset=\"UTF-8\"&gt;\n&lt;title&gt;\u7ed3\u7b97\u9875\u9762&lt;\/title&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b base\u6807\u7b7e\uff0ccss\u6837\u5f0f\uff0cjQuery\u6587\u4ef6 --%&gt;\n\t&lt;%@ include file=\"\/pages\/common\/head.jsp\"%&gt;\n\n\t&lt;style type=\"text\/css\"&gt;\n\th1 {\n\t\ttext-align: center;\n\t\tmargin-top: 200px;\n\t}\n&lt;\/style&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n\t\n\t&lt;div id=\"header\"&gt;\n\t\t\t&lt;img class=\"logo_img\" alt=\"\" src=\"..\/..\/static\/img\/logo.gif\" &gt;\n\t\t\t&lt;span class=\"wel_word\"&gt;\u7ed3\u7b97&lt;\/span&gt;\n\n\t\t&lt;%-- \u9759\u6001\u5305\u542b\uff0c\u767b\u9646\u6210\u529f\u4e4b\u540e\u7684\u83dc\u5355 --%&gt;\n\t\t&lt;%@ include file=\"\/pages\/common\/login_success_menu.jsp\"%&gt;\n\n\t&lt;\/div&gt;\n\t\n\t&lt;div id=\"main\"&gt;\n\t\t\n\t\t&lt;h1&gt;\u4f60\u7684\u8ba2\u5355\u5df2\u7ed3\u7b97\uff0c\u8ba2\u5355\u53f7\u4e3a:${sessionScope.orderId}&lt;\/h1&gt;\n\t\t\n\t\n\t&lt;\/div&gt;\n\n\t&lt;%-- \u9759\u6001\u5305\u542b\u9875\u811a\u5185\u5bb9 --%&gt;\n\t&lt;%@include file=\"\/pages\/common\/footer.jsp\"%&gt;\n\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-272.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"696\" height=\"156\" data-original=\"https:\/\/qaqaq.top\/wp-content\/uploads\/2022\/12\/image-272.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-2600\"  sizes=\"(max-width: 696px) 100vw, 696px\" \/><\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">web.xml<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;web-app xmlns=\"https:\/\/jakarta.ee\/xml\/ns\/jakartaee\"\n         xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\n         xsi:schemaLocation=\"https:\/\/jakarta.ee\/xml\/ns\/jakartaee https:\/\/jakarta.ee\/xml\/ns\/jakartaee\/web-app_5_0.xsd\"\n         version=\"5.0\"&gt;\n\n&lt;!--    &lt;servlet&gt;--&gt;\n&lt;!--        &lt;servlet-name&gt;RegistServlet&lt;\/servlet-name&gt;--&gt;\n&lt;!--        &lt;servlet-class&gt;top.qaqaq.web.RegistServlet&lt;\/servlet-class&gt;--&gt;\n&lt;!--    &lt;\/servlet&gt;--&gt;\n&lt;!--    &lt;servlet-mapping&gt;--&gt;\n&lt;!--        &lt;servlet-name&gt;RegistServlet&lt;\/servlet-name&gt;--&gt;\n&lt;!--        &lt;url-pattern&gt;\/registServlet&lt;\/url-pattern&gt;--&gt;\n&lt;!--    &lt;\/servlet-mapping&gt;--&gt;\n\n&lt;!--    &lt;servlet&gt;--&gt;\n&lt;!--        &lt;servlet-name&gt;LoginServlet&lt;\/servlet-name&gt;--&gt;\n&lt;!--        &lt;servlet-class&gt;top.qaqaq.web.LoginServlet&lt;\/servlet-class&gt;--&gt;\n&lt;!--    &lt;\/servlet&gt;--&gt;\n&lt;!--    &lt;servlet-mapping&gt;--&gt;\n&lt;!--        &lt;servlet-name&gt;LoginServlet&lt;\/servlet-name&gt;--&gt;\n&lt;!--        &lt;url-pattern&gt;\/loginServlet&lt;\/url-pattern&gt;--&gt;\n&lt;!--    &lt;\/servlet-mapping&gt;--&gt;\n\n    &lt;servlet&gt;\n        &lt;servlet-name&gt;UserServlet&lt;\/servlet-name&gt;\n        &lt;servlet-class&gt;top.qaqaq.web.UserServlet&lt;\/servlet-class&gt;\n    &lt;\/servlet&gt;\n    &lt;servlet-mapping&gt;\n        &lt;servlet-name&gt;UserServlet&lt;\/servlet-name&gt;\n        &lt;url-pattern&gt;\/userServlet&lt;\/url-pattern&gt;\n    &lt;\/servlet-mapping&gt;\n\n    &lt;servlet&gt;\n        &lt;servlet-name&gt;BookServlet&lt;\/servlet-name&gt;\n        &lt;servlet-class&gt;top.qaqaq.web.BookServlet&lt;\/servlet-class&gt;\n    &lt;\/servlet&gt;\n    &lt;servlet-mapping&gt;\n        &lt;servlet-name&gt;BookServlet&lt;\/servlet-name&gt;\n        &lt;url-pattern&gt;\/manager\/bookServlet&lt;\/url-pattern&gt;\n    &lt;\/servlet-mapping&gt;\n\n    &lt;servlet&gt;\n        &lt;servlet-name&gt;ClientBookServlet&lt;\/servlet-name&gt;\n        &lt;servlet-class&gt;top.qaqaq.web.ClientBookServlet&lt;\/servlet-class&gt;\n    &lt;\/servlet&gt;\n    &lt;servlet-mapping&gt;\n        &lt;servlet-name&gt;ClientBookServlet&lt;\/servlet-name&gt;\n        &lt;url-pattern&gt;\/client\/bookServlet&lt;\/url-pattern&gt;\n    &lt;\/servlet-mapping&gt;\n\n    &lt;servlet&gt;\n        &lt;servlet-name&gt;KaptchaServlet&lt;\/servlet-name&gt;\n        &lt;servlet-class&gt;top.qaqaq.web.MyKaptchaServlet&lt;\/servlet-class&gt;\n    &lt;\/servlet&gt;\n    &lt;servlet-mapping&gt;\n        &lt;servlet-name&gt;KaptchaServlet&lt;\/servlet-name&gt;\n        &lt;url-pattern&gt;\/kaptcha.jpg&lt;\/url-pattern&gt;\n    &lt;\/servlet-mapping&gt;\n\n    &lt;servlet&gt;\n        &lt;servlet-name&gt;CartServlet&lt;\/servlet-name&gt;\n        &lt;servlet-class&gt;top.qaqaq.web.CartServlet&lt;\/servlet-class&gt;\n    &lt;\/servlet&gt;\n    &lt;servlet-mapping&gt;\n        &lt;servlet-name&gt;CartServlet&lt;\/servlet-name&gt;\n        &lt;url-pattern&gt;\/cartServlet&lt;\/url-pattern&gt;\n    &lt;\/servlet-mapping&gt;\n\n    &lt;servlet&gt;\n        &lt;servlet-name&gt;OrderServlet&lt;\/servlet-name&gt;\n        &lt;servlet-class&gt;top.qaqaq.web.OrderServlet&lt;\/servlet-class&gt;\n    &lt;\/servlet&gt;\n    &lt;servlet-mapping&gt;\n        &lt;servlet-name&gt;OrderServlet&lt;\/servlet-name&gt;\n        &lt;url-pattern&gt;\/orderServlet&lt;\/url-pattern&gt;\n    &lt;\/servlet-mapping&gt;\n&lt;\/web-app&gt;<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4e66\u57ce\u9879\u76ee-\u8d2d\u7269\u8f66\u6a21\u5757\u7684\u5206\u6790\u3001\u4e66\u57ce\u9879\u76ee-\u8d2d\u7269\u8f66\u6a21\u578b\u7684\u521b\u5efa\u3001\u4e66\u57ce\u9879\u76ee-\u8d2d\u7269\u8f66\u529f\u80fd\u65b9\u6cd5\u7684\u5b9e\u73b0\u548c\u6d4b\u8bd5\u3001\u4e66\u57ce\u9879\u76ee-\u6dfb\u52a0\u5546 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59],"tags":[61],"class_list":["post-2572","post","type-post","status-publish","format-standard","hentry","category-javaweb-code","tag-javaweb"],"_links":{"self":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2572"}],"collection":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2572"}],"version-history":[{"count":4,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2572\/revisions"}],"predecessor-version":[{"id":2725,"href":"https:\/\/qaqaq.top\/index.php?rest_route=\/wp\/v2\/posts\/2572\/revisions\/2725"}],"wp:attachment":[{"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2572"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2572"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qaqaq.top\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2572"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}