Dans la section précédente, nous avons terminé la page détaillée du produit et utilisé le cache secondaire d'Hibernate pour charger la page détaillée pour améliorer les performances du système. Cliquez sur l'article pour afficher:. Dans cette section, nous commençons à faire la partie du panier.
1. Ajouter une nouvelle table
Tout d'abord, nous ajoutons plusieurs tables à la base de données: table utilisateur, table d'état de commande, table de commande (table de panier) et table d'articles d'achat. Les informations de base de l'utilisateur sont stockées dans la table des utilisateurs. Le tableau d'état de la commande stocke principalement l'état de la commande, comme expédié. Le tableau de commande stocke principalement les informations de l'utilisateur et l'état de la commande, il est donc lié à la table utilisateur et au tableau d'état de la commande. La table des articles d'achat stocke un certain produit et la commande à laquelle il appartient, il est donc lié à la table du produit et au tableau de commande. Pour des informations de table spécifiques, consultez l'instruction SQL suivante:
/ * ======================================================================================. =======================================================================================. Créer une table utilisateur (/ * Numéro d'utilisateur, croissance automatique * / id int clé primaire non null auto_increment, / * Nom de connexion de l'utilisateur * / Connexion Varchar (20), / * Nom réel de l'utilisateur * / Nom Varchar (20), / * Mot de passe de connexion de l'utilisateur * / PASS VARCHAR (20), / * Gender d'utilisateur * / Sex Varchar (20), / * Téléphone utilisateur * / Téléphone Varchar (20), / * Utilisateur Utilisateur * / CEMPLOR (20); / * ===================================================================. ======================================================. / * Tableau: panier (commande) Structure du tableau * / / * ==============================================================. ===============================================================. ===============================================================. ==================================================================. Créer un tableau de table (/ * Numéro de commande, croissance automatique * / id int ke clés primaire non null auto_increment, / * Nom du destinataire * / nom Varchar (20), / * Numéro de téléphone du destinataire * / Téléphone Varchar (20), / * Informations de livraison * / Remarque Varchar (20), / * Date de commande * / Date Timestamp Default Courant_timestamp, / * Montant de commande total * / Total DICIMA VARCHAR (20), / * Code postal du destinataire * / Adresse Varchar (200), / * Statut de commande * / sid int défaut 1, / * Numéro de membre * / UID INT, CONTRAINTION SID_FK Clé étrangère (SID) Références Statut (ID), contrainte UID_FK Foreign Key (UID) références User (ID)); / * ==================================================================================================================================. ===================================================================================================================================. ===================================================================================================================================. ====================================================================================================================================. Prix du produit au moment de l'achat * / prix décimal (8,2), / * Quantité achetée * / numéro int not null, / * Numéro de produit * / pid int, / * Cet élément de ligne, le numéro de commande * / fid int, Contrainte PID_FK Foresty Key (PID) références Produit (ID), CONSTRAINTION FID_FK FORTY CLEY (FID) références (ID));
Ensuite, nous convertissons ces tables en pojo par ingénierie inverse, donc nous n'entrerons pas en détails.
2. Logique des coulisses du panier
2.1 Logique de la couche de service
Lorsqu'un utilisateur ajoute un produit au panier, nous devons d'abord obtenir les informations du produit via l'ID du produit, puis ajouter le produit au panier. Avant d'ajouter, nous devons d'abord déterminer s'il y a un panier dans la session en cours. Sinon, nous devons d'abord créer un panier d'achat. Si c'est le cas, nous ajouterons l'article d'achat actuel au panier. Avant d'ajouter, nous devons déterminer si l'article d'achat existe déjà dans le panier. S'il existe, augmentez simplement la quantité d'achat correspondante. S'il n'existe pas, ajoutez-le, puis calculez le prix total d'achat et économisez enfin le panier à la session. Voir le diagramme ci-dessous pour l'ensemble du processus:
Ensuite, implémentons la logique spécifique, créez d'abord deux nouvelles interfaces de service: SorderService et ForderService. Il existe deux méthodes principalement définies dans Sorderservice: convertissez les articles ajoutés par l'utilisateur en articles de magasinage, puis ajoutez les articles de magasinage au panier; Forderservice définit principalement la méthode de calcul du prix total du panier, comme suit:
// Interface Sorderservice Interface publique Sorderservice étend BaseService <Sorder> {// Ajouter un article d'achat et renvoyer un nouvel ajout de cadrochage Public Frander (Frander Frander, produit produit); // convertir les données du produit en articles d'achat publics Sorder ProductTosOrder (produit produit); } // Interface Forderservice Interface publique Forderservice étend BaseService <Strucder> {// Calculer le prix d'achat total Double Clutotal (Frander Frander); } Ensuite, nous mettons en œuvre ces deux interfaces en détail:
// SorderserviceImpl Implémentation Class @Service ("Sorderservice") Public Class SorderserviceImpl étend BaseServiceImpl <Sorder> Implémente Sorderservice {@Override Public Forder AddSorder (fourder FORDER, produit produit) {Boolean Ishave = false; // Utilisé pour marquer s'il existe des articles d'achat en double // Obtenez l'article d'achat actuel SORDER SOORDER = ProductToSorder (produit); // Jugez si l'article d'achat actuel est en double. S'il est en double, ajoutez la quantité pour (Sorder Old: fourder.getSorders ()) {if (old.getProduct (). GetId (). Equals (sorder.getProduct (). GetID ())) {// il y a des doublures pour les articles de shopping, ajoutez la quantité old.setNumber (old.gember () + Soorder.getNumber ()); isHave = true; casser; }} // L'article d'achat actuel n'existe pas dans le panier, ajoutez-le simplement si (! Ishave) {fourder.getSorders (). Add (Sorder); } return stand; } @Override public Sorder ProductToSorder (produit produit) {Sorder Soorder = new Sorder (); Soorder.SetName (Product.GetName ()); Soorder.setNumber (1); Soorder.SetPrice (Product.GetPrice ()); Soorder.setProduct (produit); retourner Soorder; }} // ForderserviceImpl implémentations @Service ("Forderservice") Classe publique ForderserviceImpl étend BaserServiceImpl <Noder> implémente Forderservice {@Override public double clutotal (FORDER FORDER) {double total = 0,0; pour (Sorder Soorder: FORDER.GetSorders ()) {Total + = Soorder.getNumber () * Soorder.getPrice (); } return total; }} Ensuite, nous devons injecter ces deux haricots dans la réaction de base pour une utilisation par Sorderaction:
@Controller ("Baseaction") @Scope ("Prototype") Classe publique BaseAction <T> étend ActionSupport implémente DequeviseAware, SessionAware, ApplicationAware, ModelDriven <T> {// omettre un autre code non pertinent ... @Resource Protected Forderservice Forderservice; @Resource Protected Sorderservice sordervice; } Ok, la logique de la couche de service est terminée, et ensuite nous allons faire la partie d'action:
2.2 Logique d'action
Nous créons une nouvelle Sorderaction et suivons le processus indiqué sur le diagramme logique ci-dessus pour compléter la logique de l'ajout de paniers d'achat. Le code est le suivant:
@Controller @Scope ("Prototype") Public Class SorderAction étend Baseaction <Sorder> {public String AddSorder () {// 1. Obtenez les données de produit correspondantes en fonction de Product.id Product Product = ProductiveService.get (Model.getProduct (). GetId ()); // 2. Déterminez s'il y a un panier à la session en cours. Sinon, créez if (session.get ("fourder") == null) {// Créez un nouveau panier d'achat et stockez-le dans Session Session.put ("FORDER", nouveau FORDER (New Hashset <Sorder> ())); } // 3. Convertissez les informations sur les produits en Soorder et ajoutez-les au panier (à en juger si l'article d'achat est dupliqué) FORDER FORDER = (FORDER) Session.get ("FORDER"); FORDER = SOORDERSERVICE.ADDSORDE (FORDER, PRODUIT); // 4. Calculez le prix total de Shopping Frander.SetTotal (Forderservice.Clutotal (Frander)); // 5. Stockez le nouveau panier d'achat dans Session Session.PUT ("FORDER", FORDER); retourner "showcart"; }} Configurez le fichier strut.xml:
<action name = "Sorder_ *" Method = "{1}"> <result name = "showcart"> / showcart.jsp </ result> </ action>Ensuite, passez à la page d'affichage du panier de magasinage. Le programme frontal sur la partie du panier dans showcart.jsp est le suivant:
3. Jump de la liaison de la réception
Toutes les pièces d'arrière-plan sont terminées. Ensuite, ajoutez la page de la réception Detail.jsp à l'adresse du lien du panier pour accéder à Sorderaction:
Cela sautera correctement. Jetons un coup d'œil à l'effet spécifique de la page d'affichage du panier:
De cette façon, les fonctions de base de notre panier seront terminées, et nous y apporterons quelques améliorations plus tard.
Adresse originale: http://blog.csdn.net/eson_15/article/details/51418350
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.