Cet article continue de partager avec vous le module de panier de panier dans la librairie Javaweb pour votre référence. Le contenu spécifique est le suivant
Stockage de paniers
Enregistrer en session Enregistrer dans les cookies Enregistrer dans la base de données
1. Créer des classes connexes
Structure du panier:
Cartitem: entrée de panier, contenant des livres et de la quantité
Chariot: panier, y compris une carte
/ ** * Classe de panier d'achat * / Classe publique Cart {Private Map <String, Cartetem> map = new LinkedHashMap <String, Cartetem> (); / ** * Calculez le total * @return * / public double getTotal () {// Total = somme des sous-totaux de toutes les entrées BigDecimal Total = new BigDecimal ("0"); pour (Carditem Cartem: map.values ()) {bigdecimal subtotal = new BigDecimal ("" + carcitem.getSubTotal ()); total = total.add (subtotal); } return total.doubleValue (); } / ** * Ajoutez une entrée à la voiture * @param carcitem * / public void add (Cartem Cartem) {if (map.containsKey (Cartitem.getBook (). Getbid ())) {// jugez si l'entrée existe dans la voiture originale carditem _cartitem = map.get (cartitem.getbook (). Getbid ()); entrée_cartitem.setCount (_CartiTtem.getCount () + Cartetem.getCount ()); // Définissez le nombre d'anciennes entrées sur son propre numéro + le nombre de nouvelles entrées map.put (Cartem.getBook (). Getbid (), _CartiTtem); } else {map.put (carcitem.getBook (). getbid (), carditem); }} / ** * Effacer toutes les entrées * / public void clear () {map.clear (); } / ** * Supprimer les entrées spécifiées * @param bid * / public void delete (String Bid) {map.reMove (bid); } / ** * Obtenez toutes les entrées * @return * / public Collection <citem> getCartiTtems () {return map.values (); }} / ** * Classe d'entrée de panier d'achat * * / classe publique Cartem {livre de livres privé; // produit private int count; // quantité / ** * Méthode sous-totale * @return * Problème d'erreur de fonctionnement binaire géré * / public double getSubTotal () {// Méthode sous-totale, mais elle n'a pas de membre correspondant! Bigdecimal d1 = new BigDecimal (book.getprice () + ""); Bigdecimal d2 = nouveau bigdecimal (count + ""); retour d1.multiply (d2) .doubleValue (); } livre public getBook () {return livre; } public void setbook (book book) {this.book = book; } public int getCount () {return count; } public void setCount (int count) {this.count = count; }}2. Ajouter une entrée de panier
<% @ Page Language = "Java" Import = "Java.util. *" Pageencoding = "UTF-8"%> <% @ taglib prefix = "C" uri = "http://java.sun.com/jsp/jstl/core"%> <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <% @ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions"%> <! doctype html public "- // w3c // dtd html 4.01 Transitional//EN"><html> <head> <title>Shopping cart list</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" Content = "Keyword1, Keyword2, Keyword3"> <meta http-equiv = "Description" content = "Ceci est ma page"> <méta http-equiv = "contenu-type" contenu = "text / html; charset = utf-8"> <! - <lin type = "text / css"> * {Font-Size: 11pt; } div {margin: 20px; Border: Gris solide 2px; Largeur: 150px; hauteur: 150px; Texte-aligne: Centre; } li {margin: 10px; } #buy {background: url (<c: url value = '/ images / all.png' />) no-repeat; Affichage: bloc en ligne; Position d'arrière-plan: 0 -902px; marge-gauche: 30px; hauteur: 36px; Largeur: 146px; } #buy: hover {background: url (<c: url value = '/ images / all.png' />) no-repeat; Affichage: bloc en ligne; Position d'arrière-plan: 0 -938px; marge-gauche: 30px; hauteur: 36px; Largeur: 146px; } </ style> </ head> <body> <h1> panier </h1> <c: Choose> <% - s'il n'y a pas de voiture, ou que la collection de contenu de la voiture est 0-longueur -%> <c: quand test = "$ {vide sessionscope.cart ou fn: longueur (sessions src =" Value = '/ Images / Cart.png' //// "/> </ c: quand> <C: Sinon> <Table Cellpacing =" 0 "background =" Black "> <tr> <td Colspan =" 7 "Align =" Right "Style =" Font-Size: 15pt; CART </a> </td> </tr> <tr> <th> Picture </ Th> <Th> Titre du livre </th> <Th> Auteur </th> <th> Prix unitaire </th> <th> Quantité </th> <Th> Sous-Total </ Th> <Th> Operation </ Th> </tr> <C: Foreach Items = "$ {SESSIONSCOPE.CART.CART.CARTITEMS}" var = "Cartetem"> <tr> <td> <div> <img src = "<c: url value = '/ $ {cartitem.book.image}' //" /> </ div> </ td> <td> $ {cartitem.book.bname} </ td> <td> $ {Cartitem.Book.Author} </ td> <td> $ {Cartitem.Book.Author} </ td> <Td> $ {cartitem.book.price} yuan </td> <td> $ {cartitem.count} </td> <td> $ {cartitem.subtotal} yuan </td> <td> <a href = "<C: url Value = '/ cartServer? } '/> "> Delete </a> </td> </td> </td> </tr> </c: foreach> <ttr> <td colspan =" 7 "align =" droit "style =" font-size: 15pt; FONT-WEIGHT: 900 "> Total: $ {sessionscope.cart.total} yuan </td> </tr> <tr> <td Colspan =" 7 "align =" droit "style =" font-size: 15pt; FONT-WEIGHT: 900 "> <a id =" buy "href =" <c: url value = '/ orderServlet? Method = add' /> "> </a> </td> </tr> </ table> </ c: sinon> </c: choisis> </body> </html> classe publique CartServlet étend BasEservlet {/ ** * Ajouter une entrée de magasinage * @param demande * @param réponse * @return * @throws servlexception * @throws ioexception * / public String add (httpservletRequest request, httpServletResponse réponse) lance le servletException, ioexception {/ * *. 1. l'entrée de la voiture * / / * * 1. Obtenez la voiture * / cart Cart = (CART) request.getSession (). getAtTribute ("CART"); / * * Le formulaire ne passe que l'offre et la quantité * 2. Obtenez l'entrée *> Obtenez le livre et la quantité *> Obtenez d'abord l'offre du livre, puis nous devons interroger la base de données via l'offre pour obtenir le livre *> Il y a * / String Bid = request.getParamètre ("Bid"); Livre de livres = new bookservice (). Load (bid); int count = Integer.ParseInt (request.getParameter ("count")); Carditem Cartem = nouveau Cartitem (); Cartem.setbook (livre); Cartem.SetCount (Count); / * * 3. Ajouter l'entrée à la voiture * / cart.add (Cartem); return "f: /jsps/cart/list.jsp"; } / ** * Effacer l'entrée d'achat * @param demande * @param réponse * @return * @throws servlexception * @throws ioException * / public String clear (httpservletRequest request, httpservletResponse réponse) lance le servletException, ioexception {/ ** * 1. (CART) request.getSession (). GetAttribute ("CART"); Cart.Clear (); return "f: /jsps/cart/list.jsp"; } / ** * Supprimer les entrées de shopping * @param request * @param réponse * @return * @throws servlexception * @throws ioException * / public String Delete (httpservletRequest request, httpservletResponse réponse) lance le servletException, ioexception {/ * * 1. (CART) request.getSession (). GetAttribute ("CART"); String bid = request.getParameter ("Bid"); Cart.Delete (BID); return "f: /jsps/cart/list.jsp"; }}3. Effacer l'entrée
4. Supprimer la saisie du panier
5. Mon panier
Il y a un lien dans top.jsp: mon panier
Mon panier accède directement /jsps/cart/list.jsp et il affiche toutes les entrées du panier en session.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.