Artigo Clube Delphi Edição 42 - Sessões Práticas

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Artigo da Revista Clube Delphi Edição 42.

Esse artigo faz parte da revista Clube Delphi edição 42. Clique aqui para ler todos os artigos desta edição

Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

Sessões Práticas

Criando um carrinho de compras com IntraWeb

Neste artigo veremos como criar passo-a-passo, usando o IntraWeb, um carrinho de compras – uma das aplicações mais comuns encontradas na web. O funcionamento da aplicação é bastante simples: o usuário compra um ou mais produtos e essas informações são armazenadas e uma cache (uma espécie de memória). Quando o usuário finaliza a compra, os dados são enviados ao banco de dados.

Um grande problema ao se construir tal tipo de aplicação é a manipulação de sessões, visto que o usuário fará várias solicitações (requisições HTTP) ao aplicativo servidor, e tudo precisa ser armazenado em memória – que deve ser exclusiva para cada usuário – até que a compra seja finalizada. Como o HTTP é um protocolo stateless (sem-estado), devemos usar sessões para que as informações sejam mantidas entre as requisições. Veremos aqui que o IntraWeb torna esse processo totalmente transparente.

Nota: para o exemplo utilizaremos o tratamento de sessões integrado do IntraWeb, disponível apenas no modelo Application Mode (padrão no Delphi Enterprise/Architect). O modelo Page Mode não dá suporte a esse mecanismo.

 

Atenção: O exemplo deste artigo foi construído utilizando o IntraWeb 5.1. Veja na Edição 41 como baixar e instalar essa nova versão, que está disponível no endereço www.atozedsoftware.com.

Criando o banco de dados

Vamos usar o InterBase como banco de dados para nossa "loja virtual". Abra o IBConsole e crie um novo banco chamado “LOJA.GDB”; chame o Interactive SQL e crie as tabelas usando o script da Listagem 1.

 

Listagem 1. Script para criação do banco

create table PRODUTOS

(ID_PRODUTO integer not null primary key,

 DESCR_PRODUTO char(60),

 FOTO blob,

 VALOR numeric(9,2));

 

create table PEDIDOS

(ID_PEDIDO integer not null primary key,

 DATA date,

 HORA time);

 

create table ITENS_PEDIDO

(ID_PEDIDO integer not null references PEDIDOS (ID_PEDIDO),

 ID_PRODUTO integer not null references PRODUTOS (ID_PRODUTO),

 QUANTIDADE integer,

 primary key (ID_PEDIDO,ID_PRODUTO));

 

Nota: A estrutura do banco criado aqui é bastante simples – foram mantidos apenas os campos essenciais para o funcionamento básico de um carrinho de compras.

Para evitar a repetição de técnicas apresentadas em artigos anteriores na ClubeDelphi, não criaremos um formulário para cadastros de produtos. Assim você deve inserir alguns registros na tabela PRODUTOS antes de construir a aplicação IntraWeb, fornecendo código (ID_PRODUTO), descrição (DESCR_PRODUTO), valor e uma figura (FOTO), para cada um. Para incluir produtos com uma figura, utilizei o QuickDesk (atualmente, o produto mudou de nome e agora chama-se IB Manager), um poderoso front-end para o InterBase (veja a Figura 1). Você pode, claro, usar o seu front-end preferido.

 

Figura 1. Inserindo produtos no banco de dados.

Criando a aplicação e o DataModule

Crie uma aplicação IntraWeb do tipo Stand Alone with DataModule, usando File|New|Other>IntraWeb. Escolha IntraWeb Application Wizard e clique em OK. Depois, escolha StandAlone Application, na seção Application Type. Em Options, escolha Create Data Module e clique em OK. Deixe marcada a opção Create User Session. Clique em File|Save All, salve a unit do formulário principal como “uFrmPrincipal.pas” e mantenha os nomes das units sugeridos para o "

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?