Cet article partage le code spécifique du module de panier pour votre référence. Le contenu spécifique est le suivant
Ce n'est pas une session ou un cookie, mais une table
> Ajouter des entrées de magasinage
> Modifier le nombre d'entrées d'achat
> Supprimer une entrée
> Suppression par lots des entrées
> Mon panier, c'est-à-dire des articles de requête par l'utilisateur
> Interrogez les entrées vérifiées
1. Tableau de données
La copie de code est la suivante: Insérer dans `t_cartitem` (` Cartitemid`, `Quantity`,` Bid`, `uid`,` `OrderBy`) ('B8939FC55131469CAB11E3924D40185B', 1, 'CE01F15D435A4C51B0AD8202A318DCA7', 'XXX', 11);
2. Cartitem
classe publique Cartitem {private String Cartemid; // Clé primaire private int quantity; // quantity private livre livre; // réserver correspondant à l'utilisateur privé de l'entrée; // l'utilisateur auquel l'utilisateur // ajouter la méthode subtotale double getSubTotal () {/ * * Il n'y aura pas d'erreurs lorsque vous utilisez BigDecimal * Bigdecimal (book.getCurrPrice () + ""); BigDecimal B2 = nouveau BigDecimal (quantité + ""); BigDecimal B3 = B1.Multiply (B2); retour b3.doubleValue (); } public String getCartiTeMID () {return Carditemid; } public void setCartiTemid (String Carditemid) {this.cartitemid = carcitemid; } public int getQuantity () {return quantité; } public void setQuantity (int quantité) {this.quantity = quantité; } livre public getBook () {return livre; } public void setbook (book book) {this.book = book; } public utilisateur getUser () {return utilisateur; } public void SetUser (utilisateur utilisateur) {this.user = utilisateur; }}Conseils: il n'y aura pas d'erreurs dans l'arrondi BigDecimal à Java
// Ajouter la méthode sous-totale publique double getSubTotal () {/ * * Il n'y aura pas d'erreur lorsque l'utilisation de BigDecimal * nécessite que le constructeur de type de chaîne soit utilisé * / bigdecimal b1 = new BigDecimal (book.getCurrPrice () + ""); BigDecimal B2 = nouveau BigDecimal (quantité + ""); BigDecimal B3 = B1.Multiply (B2); retour b3.doubleValue ();}3. Vérifiez la saisie du panier via les utilisateurs
Chaque entrée de ma saisie de panier doit afficher le prix de liste du livre d'images, ce qui signifie que plusieurs tables sont requises
Liste publique <citem> findByUser (String UID) lève SQELLECTENCE {String Sql = "SELECT * FROM T_CARTITEM C, T_BOOK B où C.BID = B.BID et UID =? Ordre par C.Orderby"; List <map <string, objet >> maplist = qr.query (sql, new MapListhandler (), uid); retourner tocartitemList (maplist);}4. Ajouter des entrées de panier ----- Ajouter
jsp
<div> <form id = "form1" action = "<c: url value = '/ carditemServlet' //>" method = "post"> <input type = "HIDDEN" name = "method" value = "add" /> <input type = "HIDDEN" name = "bid" value = " </ form> <a id = "btn" href = "javascript: $ ('# form1'). soumid ();"> </a> </div>CartitemServlet
Public String Add (httpServLetRequest req, httpServletResponse resp) lève ServletException, ioException {/ * * 1. Encapsuler les données de formulaire à Cartem (bid, quantité) * / map map = req.getParameTermap (); Cartitem Cartem = Commonutils.Tobean (carte, cartitem.class); Livre de livres = Commonutils.Tobean (carte, livre.class); User user = (user) req.getSession (). GetAttribute ("SessionUser"); Cartem.setbook (livre); Cartem.SetUser (utilisateur); CartitemService.add (Cartitem); retourner mycart (req, resp);}CartitemService
public void add (Cartitem Cartem) {try {/ * * 1. Utilisez UID et offre pour demander si cette entrée existe dans la base de données * / Cartitem _Cartitem = Cartitemdao.FindByuidandbid (Cartitem.getUser (). getUid (), cartitem.getbook (). getbid ()); if (_CartiTtem == null) {// s'il n'y avait pas une telle entrée, ajoutez le calitem.setcartitemid (Commonutils.UUID ()); cartitemdao.addcartitem (Cartitem); } else {// S'il y avait cette entrée, modifiez le nombre // Utilisez la quantité d'origine et le nombre de nouvelles entrées à utiliser comme nouvelle quantité Int Quantity = Cartem.Getquantity () + _CartiTtem.Getquantity (); // Modifiez la quantité de cette ancienne entrée Cartemdao.updatequantity (_Cartitem.getCartiTitemid (), quantité); }} catch (exception e) {lancer une nouvelle RuntimeException (e); }}Cartitemdao
public void addCartiTtem (Carditem Cartem) lève SQException {String sql = "Insérer dans T_Cartitem (Cartitemid, Quantity, Bid, UID)" + "Valeurs (?,?,?)"; Object [] params = {carcitem.getCartiteMID (), carcitem.getQuantity (), carcitem.getbid (), cartitem.getUser (). GetUid ()}; Qr.Update (SQL, Params);}5. Page du module de panier JavaScript ---- Vérifiez
Calculez le total
Ajouter un événement de clic pour sélectionner tout
Ajoutez un événement cliquez sur la case à cocher pour toutes les entrées
Ajouter un événement de clic au signe moins
Ajouter un événement de clic au signe plus
Suppression par lots
list.jsp
<% @ Page Language = "Java" import = "java.util. *" Pageencoding = "utf-8"%> <% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> <% @ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/fonctions"%> <! doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> <adread> <t titre> cartlist.jsp </tapt <meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "this is my page"> <! type = "text / css" href = "Styles.css"> -> <script src = "<c: url value = '/ jQuery / jQuery-1.5.1.js' />"> </ script> <script src = "<c: url value = '/ js / rond.js' />"> </ script> <lin href = "<c: url value = '/ jsps / css / cart / list.css' ///>"> <script type = "text / javascript"> $ (function () {showTotal (); // calculer l'événement total / * Ajouter un clic pour sélectionner tout * / $ ("# selectall"). Click (function () {/ * 1. $ ("# selectall"). att ("vérifié"); / * 2. Synchronisez les cases à cocher de toutes les entrées avec le statut de tous sélectionné * / setItemCheckbox (bool); / * 3. Synchronisez le bouton de paiement avec le tout * / setjiesuan (bool) sélectionné; / * 4. Recalculer le total * / showTotal (); }); / * Ajouter un événement cliquez sur les boîtes à cocher de toutes les entrées * / $ (": checkbox [name = checkboxBtn]"). Cliquez sur (function () {var all = $ (": checkbox [name = checkboxBtn]"). Length; // le nombre de toutes les entrées var sélectionne = $ (": vérifiez [Name = CheckBoxBtn] [vérifié = True)"). {// all $ ("# selectall"). Att ("coché", true); // coche la boîte à cocher All cocher la case setJiesUan (true); // rendre le bouton de paiement valide} else if (select == 0) {// personne n'a sélectionné $ ("# selectall"). Att ("vérifié", false); // annuler tout setjiesuan (false); // annuler la vérification} $ ("# selectall"). attr ("vérifié", false); // annuler tous les setjiesuan (false); // annuler la caisse} else {$ ("# selectall"). att ("vérifié", false); // annuler tous les setJiesUan (true); // Let Settlement est valide} showTotal (); // recalculer total}); / * Ajouter un événement cliquez sur le signe moins * / $ (". Jian"). Cliquez sur (fonction () {// Get Cartemid var id = $ (this) .attr ("id"). Substrat (0, 32); // obtenir la quantité dans la quantité de boîte de saisie var quantité = $ ("#" + id + "quantité"). Mais la supprimer. // Ajouter un événement de clic $ (". Jia"). Cliquez sur (function () {// Obtenir le cartitemid var id = $ (this) .attr ("id"). Substring (0, 32); // obtenir le nombre dans la boîte de saisie var quantité = $ ("#" + id + "Quantity"). Val (); Sendupdatequantity (id, nombre (Quantity) +1);});}); modifiez la quantité. Fonction Sentupdatequantity (id, quantité) {$ .ajax ({async: false, cache: false, url: "/ biens / cartitemServlet", data: {méthode: "updatequantity", cartitemid: id, quantité: quantité}, type: "post", datatype: "json", #, fonction (résultat) {// 1. "Quantité"). Val (Result.quantity); / * 1. Obtenez toutes les boîtes à cocher les entrées cochées! Loop Traversal * / $ (": Checkbox [name = checkBoxBtn] [Checked = true]"). Chaque (fonction () {// 2. Obtenez la valeur de la case à cocher, c'est-à-dire le préfixe des autres éléments var id = $ (this) .val (); // 3. Alors recherchez l'élément sous-total via le préfixe et obtenez son texte var = $ ("#" + id + ").). // 4. // 5. Afficher le total sur l'élément total $ ("# total"). Texte (ronde (total, 2)); // La fonction de la fonction rond () consiste à conserver le total 2 bits} / * * Définissez le bouton de cocher pour toutes les entrées en uniforme * / fonction setItemCheckBox (bool) {$ (": checkbox [name = checkboxBtn]"). ATTR ("Checked", bool);} / * * set le bouton de contrôle * / fonction setjiesuan (bool) {if (bool) {bouth) $ ("# jiesuan"). RemoveClass ("kill"). addClass ("jiesuan"); $ ("# jiesuan"). Unbind ("cliquez"); // UNO Cliquez sur tous les événements de l'élément actuel} else {$ ("# jiesuan"). RemoveClass ("jiesuan"). addClass ("kill"); $ ("# jiesuan"). cliquez (function () {return false;}); }} / * * Batch Delete * / Function BatchDelete () {// 1. Obtenez les cases à cocher pour toutes les entrées sélectionnées // 2. Créez un tableau et ajoutez les valeurs de toutes les cases sélectionnées dans le tableau // 3. Spécifiez l'emplacement comme CartitemServlet, Paramètre Méthode = BatchDelelete, paramètre Cartemids = Tostring () de l'array VarTaDay = New Arrayides; $ (": checkbox [name = checkboxBtn] [checked = true]"). Chaque (function () {cartemidArray.push ($ (this) .val ()); // ajouter la valeur de la case à cocher à la table}); Location = "/ Goods / CarTitemServlet? Method = BatchDelete & CartemidArray;} / * * Checkout * / Function Jiesuan () {// 1. Obtenez les ID de toutes les entrées sélectionnées et mettez-les dans le Array Var CartitemidArray = True]"). chaque (") {). CartemidArray.push ($ (this) .val ()); // Ajouter la valeur de la case à la baisse}); $ ("# Hiddentotal"). Val ($ ("# total"). text ()); align = "droite"> <img align = "top" src = "<c: url value = '/ images / icon_empty.png' ////" /> </td> <td> <span> Il n'y a pas de produits dans votre panier </span> </pd> </tr> </s table CellPacing = "0"> <tr align = "Center" bgcolor = "# efeae5"> <td align = "Left"> <entrée type = "checkbox" id = "selectall" checked = "checked" /> <étiquette pour = "SELECTALL"> Sélectionner </ label> </ td> <td ColSpan = "2"> Production Name </ TD> <Td> Quantité </td> <TD> SUBTOTAL </TD> <TD> OPÉRATION </TD> </ TD> </TD> </tr> <C: ForEach Items = "$ {CartitemList}" var = "Cartitem"> <tr align = "Center"> <TD ALIGN = "Left"> <Entrée Value = "$ {Cartitem.Cartemid}" type = "checkbox" name = "checkboxBtn" checked = "checked" /> </td> <td align = "Left"> <a href = "<c: url value = '/ jsps / book / desc.jsp' />"> <img align = "top" src = "<c: url = '/ $ {cartitemb </td> <td align = "Left"> <a href = "<c: url value = '/ jsps / book / desc.jsp' />"> <span> $ {cartitem.book.bname} </span> </a> </ td> <td> <pan> $ {cartitem.book.currPrice} </ spander> id = "$ {cartitem.cartitemid} jian"> </a> <entrée readonly = "readonly" id = "$ {cartitem.cartitemid} quantité" type = "text" value = "$ {cartitem.quantity}" /> <a id = "$ {cartitem.cartitemid} jia"> </a> </ td> <td> <span> ¥ <span id = "$ {cartitem.cartitemid} subtotal"> $ {cartitem.subtotal} </span> </span> </td> <td> <a href = "<c: url value = '/ CartitemSerm? } '/> "> Delete </a> </td> </td> </tr> </c: foreach> <tr> <td Colspan =" 4 "> <a href =" javascript: batchdelete (); "> batch delete </a> </pd> <td ColSpan =" 3 "Align =" droite "> <panneuse: TOTAL: id = "total"> </ span> </ span> </ td> </tr> <tr> <td colspan = "7" align = "droite"> <a href = "javascrip Value = '/ CartitemServlet' //> "Method =" Post "> <input type =" Hidden "name =" Cartitemids "id =" Cartitemids "/> <entrée type =" Hidden "name =" Total "id =" Hiddentotal "/> </ Form> </ C:" Méthode "Value =" LoadCartitems "/> </ Form> </ C: Sinon> </ C: Chook </ body> </html>Conseils: ronde rond.js dans js
// 5. Afficher le total sur l'élément total $ ("# total"). Texte (rond (total, 2)); // La fonction de la fonction ronde () est de conserver 2 bits de total6. fonction de suppression par lots ---- supprimer
jsp
Fonction BatchDelete () {// 1. Obtenez les cases à cocher pour toutes les entrées sélectionnées // 2. Créez un tableau et ajoutez les valeurs de toutes les cases sélectionnées au tableau // 3. Spécifiez l'emplacement en tant que CartemServlet, paramètre méthode = BatchDelete, paramètre carditemids = toString () du tableau Var CartemidArray = New Array ();); $ (": checkbox [name = checkboxBtn] [checked = true]"). Chaque (function () {cartemidArray.push ($ (this) .val ()); // ajouter la valeur de la case à cocher à la table}); Location = "/ Goods / CarTitemServlet? Method = BatchDelete & Cartitemides =" + CartemidArray;}Supprimer un
if (Quantity == 1) {if (confirm ("Voulez-vous vraiment supprimer l'entrée?")) {location = "/ marchandises / carditemServlet? Method = BatchDelete & Cartitemids =" + id; }} autre {7. Nombre de modifications ----- Modifier
jsp
// demande le serveur et modifiez le numéro. Fonction Sentupdatequantity (id, quantité) {$ .ajax ({async: false, cache: false, url: "/ biens / cartitemServlet", data: {méthode: "updatequantity", cartitemid: id, quantité: quantité}, type: "post", datatype: "json", #, fonction (résultat) {// 1. "Quantité"). Val (Result.quantity);servlet
public String Updatequantity (httpServLetRequest req, httpServletResponse resp) lève Servlexception, ioException {String Cartemid = req.getParamètre ("Cartitemid"); INT QUANTITE = Integer.ParseInt (req.getParameter ("Quantité")); Cartitem Cartem = CartitemService.Updatequantity (Cartitemid, Quantit); // renvoie un objet JSON au client StringBuilder SB = new StringBuilder ("{"); SB.APPEND ("/" Quantity / ""). APPEND (":"). APPEND (Cartem.getquantity ()); SB.APPEND (","); SB.APPEND ("/" subtotal / ""). APPEND (":"). APPEND (Cartem.getSubTotal ()); sb.append ("}"); resp.getwriter (). print (sb); retourner null;}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.