Na seção anterior, concluímos a página detalhada do produto e usamos o cache secundário do Hibernate para carregar a página detalhada para melhorar o desempenho do sistema. Clique no artigo para visualizar:. Nesta seção, começamos a fazer a parte do carrinho de compras.
1. Adicione uma nova tabela
Primeiro, adicionamos várias tabelas ao banco de dados: tabela de usuários, tabela de status do pedido, tabela de pedidos (mesa de carrinho de compras) e mesa de compras. As informações básicas do usuário são armazenadas na tabela de usuários. A tabela de status do pedido armazena principalmente o status da ordem, como enviado. A tabela de pedidos armazena principalmente as informações do usuário e o status do pedido, por isso está relacionado à tabela de usuários e à tabela de status do pedido. A mesa de itens de compras armazena um determinado produto e a ordem a que pertence, por isso está relacionado à tabela de produtos e à tabela de pedidos. Para informações específicas da tabela, consulte a seguinte instrução SQL:
/*===================================================================================== ==================================================================================// Crie a tabela Usuário ( /* Número do usuário, crescimento automático* / ID int Primária Tecla não NULL Auto_increment, /* Nome do login do usuário* / Login varchar (20), /* Nome real do usuário* / Nome varchar (20), /* Usuário Login Senha* / Pass Varchar (20), /* Usuário gênero* / sexo varchar (20), /* telefone* / Passe* / Pass Varchar (20), /* Usuário gênero* / sexo (20), /* Phonelephone* /*============================================================ ==============================================================/ /* Tabela: Carrinho de compras (pedido) Estrutura da tabela* / /*======================================================================== ========================================================================== ========================================================================== =========================================================================== Crie tabela FORDER ( /* Número do pedido, crescimento automático* / id int primário não é nulo auto_increment, /* nome do destinatário* / nome varchar (20), /* número de telefone do receptor* / telefone varchar (20), /* informações de entrega* / observa varchar (20), /* data de data / data de timestamp (timestamp / timestamp /* /* ordy (* total* /* total* /*, /* pós -date* / date date), /*. varchar (20), /* Código postal do destinatário* / endereço varchar (200), /* status do pedido* / sid int inadimple 1, /* Número do membro* / uid int, restrição sid_fk chave estrangeira (sid) referências (id), restrição uid_fk key chave (uid) referências (id)); /*================================================================================================================= =================================================================================================================== =================================================================================================================== ==================================================================================================================== Preço do produto no momento da compra*/ preço decimal (8,2),/*Quantidade comprada*/ número não nula,/*número do produto*/ pid int,/*Este item de linha, o número do pedido*/ fid int, restrição PID_FK Key Foreign Key (PID) Referências (ID), REFERÊNCIAS DE ID;
Em seguida, convertemos essas tabelas em Pojo através da engenharia reversa, para não entrarmos em detalhes.
2. Lógica dos bastidores do carrinho de compras
2.1 Lógica da camada de serviço
Quando um usuário adiciona um produto ao carrinho de compras, primeiro precisamos obter as informações do produto através do ID do produto e depois adicionar o produto ao carrinho de compras. Antes de adicionar, devemos primeiro determinar se existe um carrinho de compras na sessão atual. Caso contrário, devemos primeiro criar um carrinho de compras. Nesse caso, adicionaremos o item de compras atual ao carrinho de compras. Antes de adicionar, precisamos determinar se o item de compras já existe no carrinho de compras. Se existir, basta aumentar a quantidade de compra correspondente. Se não existir, adicione -o e calcule o preço total de compras e, finalmente, salve o carrinho de compras na sessão. Veja o diagrama abaixo para todo o processo:
Em seguida, vamos implementar a lógica específica, primeiro crie duas novas interfaces de serviço: SorderService e ForderService. Existem dois métodos definidos principalmente em SorderService: converta os itens adicionados pelo usuário em itens de compras e adicione os itens de compras ao carrinho de compras; FordserService define principalmente o método de calcular o preço total do carrinho de compras, como segue:
// interface sorderService interface pública sorderService estende BaseService <sorder> {// Adicione o item de compras e devolva um novo carrinho de compras public Forder Addsorder (FORDER FORDER, produto do produto); // Converter dados do produto em itens de compras ProductToSorder (Product Product); } // FordserService Interface Interface pública FordserService estende o BaseService <storder> {// calcular o preço total do preço de compra public duplo clutotal (FORDER FORDER); } Em seguida, implementamos essas duas interfaces em detalhes:
// SORDERSERVICEIMPL Classe de implementação @Service ("SorderService") Public Classe SorderServiceImpl estende o BasEserViceImpl <sorder> implementa SordserService {@Override public Forde Addsorder (FORDER FORDER, Produto Produto) {boolean Ishave = false; // usado para marcar se existem itens de compras duplicados // obtendo o item de compra atual Sorder SoOrder = ProductToSorde (Produto); // julga se o item de compra atual é duplicado. Se for duplicado, adicione a quantidade para (mais antigo: forder.getSorders ()) {if (Old.getProduct (). GetId (). Equals (Sorder.getProduct (). GetId ())) {// há duplicações para compras, adicione a quantidade antiga. ishave = true; quebrar; }} // O item de compra atual não existe no carrinho de compras, basta adicionar se (! Ishave) {forder.getSorders (). Add (Sorder); } retornar forder; } @Override Public Sorder ProductToDer (produto) {Sorder Soorder = new Sorder (); soorder.setName (product.getName ()); Soorder.SetNumber (1); soorder.setPrice (Product.getPrice ()); soorder.setProduct (Produto); retornar SoOrder; }} // forderServiceImpl implementações @service ("ForderService") Classe pública ForderServiceImpl estende a base BaseServiceImpl <Forder> implementa ForderService {@Override Public Double Clutotal (FORDER FORDER) {Double Total = 0,0; para (Sorder SoOrder: forder.getSorders ()) {total += soorder.getNumber () * Soorder.getPrice (); } retornar total; }} Então, precisamos injetar esses dois feijões em bases para uso pela Sorderaction:
@Controller ("Baseaction") @Scope ("Prototype") Public Class Baseaction <T> Estende o ACTIÇOPPORT IMPLEMPEMENTE SOBLEAWARE, SESSIONCIAL, ApplicationAware, Modeldriven <T> {// omiti outro código irrelevante ... @Resource Protected ForderService ForderService; @Resource protegido SorderService SorderService; } OK, a lógica da camada de serviço está concluída e, em seguida, faremos a parte da ação:
2.2 Lógica de ação
Criamos uma nova sorveteria e seguimos o processo mostrado no diagrama lógico acima para concluir a lógica de adicionar carrinhos de compras. O código é o seguinte:
@Controller @Scope ("prototype") classe pública SorderAction estende Baseaction <sorder> {public string addSorder () {// 1. Obtenha os dados do produto correspondentes de acordo com o produto.id Product Product = ProductService.get (Model.getProduct (). GetId ()); // 2. Determine se existe um carrinho de compras na sessão atual. Caso contrário, crie if (session.get ("forder") == null) {// crie um novo carrinho de compras e armazene -o em session.put ("forder", new Forder (New Hashset <sorder> ())); } // 3. Converta as informações do produto em SoOrder e adicione -as ao carrinho de compras (julgando se o item de compras é duplicado) FORDER FORDER = (FORDER) session.get ("FORDER"); FORDER = SOORDERSERVICE.ADDORD (FORDER, Produto); // 4. Calcule o preço total das compras forder.settotal (ForderService.clutotal (Foreder)); // 5. Armazene o novo carrinho de compras na sessão session.put ("FORDER", FORDER); retornar "Showcart"; }} Configure o arquivo struts.xml:
<ação name = "Sorder_*" Method = "{1}"> <Nome do resultado = "SHOSTCART">/SHOSTCART.JSP </resultado> </action>Em seguida, pule para a página de exibição do carrinho de compras Showcart.jsp. O programa front-end sobre a parte do carrinho de compras em Showcart.jsp é o seguinte:
3. Jump do link da recepção
Todas as peças de fundo são feitas. Em seguida, adicione a página da recepção detalhe.jsp ao endereço do link do carrinho de compras para acessar a SorderAction:
Isso vai pular corretamente. Vamos dar uma olhada no efeito específico da página de exibição do carrinho de compras:
Dessa forma, as funções básicas do nosso carrinho de compras serão concluídas e faremos algumas melhorias mais tarde.
Endereço original: http://blog.csdn.net/eson_15/article/details/51418350
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.