Heim  >  Artikel  >  Java  >  Teilen Sie ein praktisches Online-Einkaufszentrum – Einkaufsmodul und Bestellmodul

Teilen Sie ein praktisches Online-Einkaufszentrum – Einkaufsmodul und Bestellmodul

零下一度
零下一度Original
2017-06-25 10:26:203609Durchsuche

Heutige Aufgabe

  • Funktionen des Einkaufsmoduls vervollständigen

  • Funktionen des Bestellmoduls vervollständigen

1.1 Einkaufsmodul:

1.1.1 Funktionsdemonstration:

Produktdetails:

Warenkorbmodul:

1.1.2 Code-Implementierung:

1 Klicken Sie auf den Link [Zum Warenkorb hinzufügen]. Produktdetailseite und .

2. An das Servlet senden:

* Geben Sie die Menge des gekauften Produkts ein.

* Geben Sie die ID des gekauften Produkts ein.

3. Speichern Sie die Einkaufsinformationen in der Sitzung.

* Speichern Sie die Warenkorbinformationen in der Sitzung.

* Kapselung des Einkaufsartikelobjekts (jeder gekaufte Artikel in der Einkaufsliste). Warenkorbinformationen)

* Produktobjekt:

* Menge

* Zwischensumme

* Kapselung des Warenkorbobjekts (Informationen zum Kauf aller Produkte)

* Sammlung von Einkaufsartikeln

* Gesamtmenge

4. Holen Sie sich die Warenkorbinformationen auf der Seite

* Zeigen Sie sie auf der Seite an

[Einkapselung der Einkaufsartikelentität: CartItem]

public class CartItem {private Product product;// 购买的商品的信息private int count; // 购买的数量private double subtotal; // 购买商品的小计

   public Product getProduct() {return product;

    }public void setProduct(Product product) {this.product = product;

    }public int getCount() {return count;

    }public void setCount(int count) {this.count = count;

    }public double getSubtotal() {return count * product.getShop_price();

    }/*public void setSubtotal(double subtotal) {

        this.subtotal = subtotal;

    }*/}

[Einkaufswagenentität: Warenkorb 】

public class Cart {// 定义一个购物项的集合的属性:集合采用Map集合,因为移除购物项的时候方便.使用商品的id作为Map的key// 使用购物项作为Map的value.private Map<String,CartItem> map = new LinkedHashMap<String,CartItem>();// 定义购物车中的总计:private double total;   public Map<String, CartItem> getMap() {return map;

    }   public double getTotal() {return total;

    }   // 方法:将购物项添加到购物车public void addCart(CartItem cartItem){// 判断购物车中是否已经存在该购物项.String id = cartItem.getProduct().getPid();if(map.containsKey(id)){// 如果已经存在:在原来的数量的基础上+新买的数量. 总计发生变化.// 获得购物车中的原来购物项的信息CartItem _cartItem = map.get(id);

            _cartItem.setCount(_cartItem.getCount()+cartItem.getCount());

        }else{// 如果不存在:在集合中添加一个新的购物项. 总计发生变化.map.put(id, cartItem);

        }

       

        total += cartItem.getSubtotal();

       

    }   // 方法:从购物车中移除购物项public void removeCart(String id){// 从map中移除选中的元素.// CartItem cartItem = map.get(id);CartItem cartItem = map.remove(id);// 将总计 - 移除购物项的小计total -= cartItem.getSubtotal();

       

    }   // 方法:清空购物车public void clearCart(){ ////  将map集合清空.map.clear();// 将总结设置为0.total = 0;

    }

}

【Klicken Sie auf der Einkaufsdetailseite auf den Link zum Hinzufügen zum Warenkorb】

 

public String addCart(HttpServletRequest req,HttpServletResponse resp){// 接收参数:String pid = req.getParameter("pid");int count = Integer.parseInt(req.getParameter("count"));       try {// 封装购物项:CartItem cartItem = new CartItem();// 商品对象:通过商品ID查询商品.ProductService productService = (ProductService) BeanFactory.getBean("productService");

            Product product = productService.findById(pid);

            cartItem.setProduct(product);

            cartItem.setCount(count);// 调用购物车中的添加到购物车的方法:// Cart cart = new Cart();Cart cart = getCart(req);

            cart.addCart(cartItem);

           

            resp.sendRedirect(req.getContextPath()+"/jsp/cart.jsp");

        } catch (Exception e) {

            e.printStackTrace();throw new RuntimeException();

        }return null;

    }

【Klicken Sie, um den Warenkorb auf der Warenkorbseite zu leeren】

    public String clearCart(HttpServletRequest req,HttpServletResponse resp){// 获得购物车对象.Cart cart = getCart(req);// 调用购物车中的方法:cart.clearCart();try {

            resp.sendRedirect(req.getContextPath()+"/jsp/cart.jsp");

        } catch (Exception e) {

            e.printStackTrace();throw new RuntimeException();

        }return null;

    }

[Klicken Sie auf den Link „Löschen“ auf der Warenkorbseite]

public String removeCart(HttpServletRequest req,HttpServletResponse resp){try {// 接收参数:String pid = req.getParameter("pid");// 获得购物车:Cart cart = getCart(req);

            cart.removeCart(pid);// 页面跳转resp.sendRedirect(req.getContextPath()+"/jsp/cart.jsp");

        } catch (Exception e) {

            e.printStackTrace();throw new RuntimeException();

        }return null;

    }

1.2 Bestellmodul:

1.2.1 Funktionsdemonstration:

1.2.2 Code-Implementierung:

1.2.2.1 Tabellen und Entitäten erstellen:

CREATE TABLE `orders` (

  `oid` varchar(32) NOT NULL,

  `ordertime` datetime DEFAULT NULL,

  `total` double DEFAULT NULL,

  `state` int(11) DEFAULT NULL,

  `address` varchar(30) DEFAULT NULL,

  `name` varchar(20) DEFAULT NULL,

  `telephone` varchar(20) DEFAULT NULL,

  `uid` varchar(32) DEFAULT NULL,  PRIMARY KEY (`oid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `orderitem` (

  `itemid` varchar(32) NOT NULL,

  `count` int(11) DEFAULT NULL,

  `subtotal` double DEFAULT NULL,

  `pid` varchar(32) DEFAULT NULL,

  `oid` varchar(32) DEFAULT NULL,  PRIMARY KEY (`itemid`),  KEY `fk_0001` (`pid`),  KEY `fk_0002` (`oid`),  CONSTRAINT `fk_0001` FOREIGN KEY (`pid`) REFERENCES `product` (`pid`),  CONSTRAINT `fk_0002` FOREIGN KEY (`oid`) REFERENCES `orders` (`oid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.2.2.2 Bestellung erstellen:

[Klicken Sie auf die Warenkorbseite, um die Bestellung abzuschicken]

An Servlet senden:

* Bestellungen und Einzelposten kapseln.

* Business-Schicht aufrufen

* Warenkorb leeren

* Seitensprung

Das obige ist der detaillierte Inhalt vonTeilen Sie ein praktisches Online-Einkaufszentrum – Einkaufsmodul und Bestellmodul. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn