Carrinho de compras Struts2 + JSP + Hibernate

3 respostas
R

Já tentei de várias maneiras, mas não consegui implementar um carrinho de compras usando struts2, jsp e hibernate. Vou colocar meus códigos aí, se alguém tiver alguma idéia.

public class Produto {
	private String imagem;
	private String descricao;
	private Double preco;
	private Integer id;
	
	public Produto(){}
	
	public Produto(String imagem, String descricao, Double preco){
		setImagem(imagem);
		setDescricao(descricao);
		setPreco(preco);
	}
	
	public String getImagem() {
		return imagem;
	}
	
	public void setImagem(String imagem) {
		this.imagem = imagem;
	}
	
	public String getDescricao() {
		return descricao;
	}
	
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	
	public Double getPreco() {
		return preco;
	}
	
	public void setPreco(Double preco) {
		this.preco = preco;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

}
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class ProdutoDAO {
	
	Session session;
	Transaction transaction;
	
	@SuppressWarnings("unchecked")
	public List<Produto> listProduto(){
		List<Produto> courses = null;
		try{
			session = HibernateUtil.getSession();
			courses = session.createQuery("from Produto").list();
			
		}
		catch(Exception e){
			e.printStackTrace();
		}
		return courses;
	}
	
	public void saveProduto(Produto produto){
		try{
			transaction = session.beginTransaction();
			session.save(produto);
		}
		catch(Exception e){
			transaction.rollback();
			e.printStackTrace();
		}
	}
		
		/*
		Session sessao = HibernateUtil.getSession();
		if(sessao == null){
			System.out.println("ProdutoDAO: Session not found");
			return null;
		}
		else{
			Transaction tx = sessao.beginTransaction();
			
			Query select = sessao.createQuery("from Produto");
			List<Produto> produtos = select.list();
			tx.commit();
			sessao.close();
			System.out.println("ProdutoDAO: caregaCabo() executado");
			return produtos;
		}*/
	
	
}
import java.util.ArrayList;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class ProdutoAction extends ActionSupport implements ModelDriven<Produto> {

	private static final long serialVersionUID = 1L;
	
	private Produto produto = new Produto();
	private List<Produto> produtoList = new ArrayList<Produto>();
	private ProdutoDAO produtoDAO = new ProdutoDAO();
	private List<Produto> carrinhoCompras = new ArrayList<Produto>();
	private List<Produto> carrinhoComprasFinal = new ArrayList<Produto>();

	
	@Override
	public Produto getModel() {
		return produto;
	}
	
	public String list(){
		produtoList = produtoDAO.listProduto();
		System.out.println("metodo list Produto Action deu certo");
		return "SUCCESS";
	}
	
	public String adicionaItem(){
		carrinhoCompras.add(produto);
		return "SUCCESS";
	}
	
	public String mostraCarrinho(){
		carrinhoComprasFinal = carrinhoCompras;
		return "SUCCESS";
	}
	
	public Produto getProduto(){
		return produto;
	}
	
	public void setProduto(Produto produto){
		this.produto = produto;
	}
	
	public List<Produto> getProdutoList(){
		return produtoList;
	}
	
	public void setProdutoList(List<Produto> produtoList){
		this.produtoList = produtoList;
	}

	public List<Produto> getCarrinhoCompras() {
		return carrinhoCompras;
	}

	public void setCarrinhoCompras(List<Produto> carrinhoCompras) {
		this.carrinhoCompras = carrinhoCompras;
	}

	public List<Produto> getCarrinhoComprasFinal() {
		return carrinhoComprasFinal;
	}

	public void setCarrinhoComprasFinal(List<Produto> carrinhoComprasFinal) {
		this.carrinhoComprasFinal = carrinhoComprasFinal;
	}
	
	
}

Aqui esta o codigo jsp que exibe os produtos, e o botao comprar

<tr>
<s:iterator value="produtoList">
<td align="center">
<img src=<s:property value="imagem"/> width="132" height="119"><br>
<p><s:property value="descricao"/> </p>
<p class="preco">R$<s:property value="preco"/> </p>
<form method="post" action="addItem">
<input type="submit" value="Comprar" name="submit">
</form>
</td>
</s:iterator> 
</tr>
<struts>
    
	<include file="struts-default.xml" />

	<package name="default" extends="struts-default">
	     <action name="index" >
	     	<result>index2.jsp</result>  
	     </action>
	     <action name="listProduto" method="list" class="br.ufu.facom.pi.trabalho.model.ProdutoAction" >
	     	<result name="SUCCESS">cabo.jsp</result>  
	     </action>
	     <action name="addItem" method="adicionaItem" class="br.ufu.facom.pi.trabalho.model.ProdutoAction">
	     	<result name="SUCCESS" type="redirect">finalizarCompra</result>
	     </action>
	     <action name="finalizarCompra" method="mostraCarrinho" class="br.ufu.facom.pi.trabalho.model.ProdutoAction">
	     	<result name="SUCCESS">finalizarPedido.jsp</result>
	     </action>
	</package>

</struts>

3 Respostas

starkiller

Cara, geralmente em uma loja de compras online, só se persiste os intems a serem comprados depois que o usuario finaliza a compra, o que vc deve fazer é guardar esse itens na sessão de sua aplicação web, que é diferente de sessão de banco de dados, da uma estudada em servlet básico pra entender esse conceito.

R

Em servlet eu consigo fazer, porém agora migrei minha aplicação para struts2, sem usar servlets, e não sei como fazer isso com struts2.
Mas valeu mesmo assim.

R

Se alguém souber pelo menos a idéia já tá bom, não precisa gastar tempo entendendo meu código.

Criado 5 de julho de 2011
Ultima resposta 5 de jul. de 2011
Respostas 3
Participantes 2