Carrinho e Variavéis de Sessão!

Ola me esclareçam uma dúvida a respeito de váriaves de sessão… por favor…



Vamos supor que eu queira fazer uma páginas de compras…tipo um submarino da vida…



Não sei como funciona a página deles…e não sei se seria a melhor forma de implementar compras com váriaveis de sessão…mas mesmo assim gostaria de saber como funcionaria esta ideia…



Como poderia armazenar meus pedidos que em variaves de sessão …se eu nao sei quantas compras o usuário irá realizar???ou seja quantas variaves vou ter que criar…e como isso seria dinâmico , como iria colocar nomes para elas???



e qual seria a melhor forma de fazer isso com essa idéia???







Obrigado



Felipe Pitttella.

Vamos por partes:

"e não sei se seria a melhor forma de implementar compras com váriaveis de sessão"

E de que outra maneira poderia ser? Acho que sessão é a melhor maneira de se transportar informações entre as paginas. Em jsp isso funciona mais ou menos assim:



Vc declara uma variavel usando a tag <jsp:useBean>. Não sei se essa é a unica maneira de se fazer isso, mas é a que acho melhor. Um exemplo é:



<jsp:useBean id="compras" class="java.util.Vector" scope="session" />



Aqui eu declarei uma variavel chamada compras do tipo Vector para funcionar numa session. Eu a declarei como vector para poder inserir uma quantidade indeterminada de compras. Isso responde a sua perguntas sobre não saber quantas compras o cliente vai realizar. Essa tag vai estar em todas as paginas que fazem parte da session.



Agora, vou supor que os produtos oferecidos estão em uma base de dados e são identificados por alguma chave. Então, no Vector compras, ao inves de armazenar todas as informações do produto eu armazeno apenas a chave, que, digamos, é o nome do produto(geralmente usa-se algo como o id no banco ou uma chave que é unica para cada produto. Estou considerando o nome apenas para simplificar.) Então toda vez que o cliente quiser um produto vc adiciona o nome desse produto ao Vector. Depois, quando ele concluir a compra vc consulta a base de dados para pegar os preços de todos os produtos que estiverem no Vector, soma e dá o total para o cliente.



É claro que há muito mais em Sessions. Isso é apenas uma parte.

:-]



valeuz…

Ilustrando com servlets…



// na servlet de carrinho



Vector pedido = new Vector();

while(…)

{

codigo = req.getParameter("codigo");

quantidade= req.getParameter("quantidade");

PedidoItem item = new PedidoItem(codigo, quantidade);

pedido.addElement(item);

}

session.putValue(pedido);







// na servlet de check-out



Vector pedido = (Vector) session.getValue("pedido");

for(int i = 0; i < pedido.size(); i++)

{

PedidoItem item = (PedidoItem) pedido.elementAt(i);



}



session.invalidate(); // se quiser detonar a sessão



session.removeValue(pedido); // se quiser manter a sessão