Aplicativos Web com Orientação a Objetos



Documentos relacionados
1. Crie um banco de dados (no MySQL) chamado produtos e um tabela produto. Realise as inserções na tabela produto de acordo com os scripts abaixo.

Autenticação e Autorização

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

Tutorial Jogo da Velha WEB

Faculdades Integradas Santa Cruz. Tutorial de Java MVC WEB Criando uma tela de Login com Banco de Dados

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

Unidade 9: Middleware JDBC para Criação de Beans

J2EE. Exemplo completo Utilização Servlet. Instrutor HEngholmJr

Prof. Roberto Desenvolvimento Web Avançado

Universidade São Judas Tadeu. Faculdade de Tecnologia e Ciências Exatas. Sistemas de Informação 3ASIN

Gerador de código JSP baseado em projeto de banco de dados MySQL

Java na Web. Aplicações Web

JDBC. Prof. Márcio Bueno

JSP e Servlet Princípio de MVC

Exibir relatórios gerados pelo Jasper Report em Flex

Programação II Programação para a Web. Christopher Burrows

Leonardo Gresta Paulino Murta

Mini-Tutorial. Como criar relatórios Java para Web com JasperReports e ireport por Roberto J. Furutani 20/07/2005

Funcionamento da Aplicação. Simulações do funcionamento. Simulação SAC

Persistência Java para Web com MySQL

Executando comandos do Sistema Operacional em uma aplicação WEB Java

Java Server Pages. Arquitectura de uma aplicação distribuída em Internet. Figura 1 Modelo 2

TUTORIAL DE INTRODUÇÃO AO CEWOLF

Programação Orientada a Objetos JDBC Java Database Connectivity

Projeto webservicejax

Drive MySql de conexão para Eclipse

!" # # # $ %!" " & ' ( 2

Listando, gravando, alterando e excluindo registro do banco de dados com JSP

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

Faculdades Network Bacharelado em Sistemas de Informação Tópicos Avançados. Aulas 25 e 26 Exemplo de Aplicação usando JSP e MySQL

Arquitetura de Aplicações JSP/Web. Padrão Arquitetural MVC

JavaServer Faces JSF

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

TUTORIAL JSP & SERVLET

Programação para Internet II

Programação Orientada a Objetos II

Integrando Java com Banco de Dados

UNIDADE II Sistemas Cadastrais com acesso a Banco de Dados

Código-Fonte da Prática 02

Estrutura do Projeto - Trabalhando com Banco de Dados

Java na WEB Banco de Dados

Driver Mysql para Banco de Dados. Conexão com um Banco de Dados

INSTALAÇÃO E USO DO GOOGLE APP ENGINE PLUGIN utilizando o Eclipse Galileo

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

Padrões de Projeto e Persistência com DAO

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Tutorial de NetBeans IDE Acessando banco de dados com Struts Data Source

Manipulação de Banco de Dados com Java 1. Objetivos

Trabalhando com Servlet

Programação Na Web. Sessão II. Índice. Visão geral da API Sessão. Obter dados sobre uma sessão. Extrair informação sobre uma Sessão

J550 Integração com Bancos de Dados

Java para Desenvolvimento Web

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

Material de apoio a aulas de Desenvolvimento Web. Tutorial Java WEB JSP & HTML & CSS & CLASSE & OBJETOS. AAS -

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

PROJETO WEB: Java. Prof Fernando Gomes

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

Código-Fonte da Prática 04

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

Especialização em web com interfaces ricas

Java na WEB Servlet. Sumário

JAVA JDBC Java Database Connectivity

Curso de Java. Acesso a banco de dados através de JDBC. Todos os direitos reservados Klais

Registo de condutor (Protótipo funcional) Página apresentada ao utilizador

Web Services. EclipseSDK/DB2 Construindo/Consumindo Serviços

1. Fazer aplicação exemplo

JAVA JDBC COMO FUNCIONA. Programação Orientada a Objetos Flávio de Oliveira Silva 315. Programação Orientada a Objetos Flávio de Oliveira Silva 316

JDBC Java Database Connectivity

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans efetuando um micro projeto swing.

Código do Sistema Ponto de Vendas

Banco de Dados. Banco de Dados. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

JDBC. Java DataBase Connectivity

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Exercícios de fixação: Listas

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

Java JDBC - I. Ex. 2: para o SQLServer da Microsoft, o driver JDBC pode ser obtido em

insfcanceof new public switch transient while byte continue extends for int null

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Persistência de Classes em Tabelas de Banco de Dados

Programação em Rede JDBC

JDBC (Java Database Connectivity) Padrão de Projeto DAO (Data Access Object) Roteiro para instalação do banco de dados e do driver JDBC

Java Servlets. Leonardo Gresta Paulino Murta

Objetos Implícitos. Conceito. Instanciados pelo próprio contêiner. Disponíveis em quaisquer páginas JSP.

Agilizando o processo de redeploy de aplicações Java

Programação em Rede. Servlets. Manipulação de dados de input em Servlets

Acesso a banco de dados

Desenvolvimento Web TCC Turma A-1

Curso: Desenvolvimento Java

JPA: Persistência padronizada em Java

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

Java JDBC Aplicação Java com Acesso a um SGBD. Ricardo Terra (rterrabh [at] gmail.com) Java JDBC Maio, 2010

Desenvolvimento de Sistemas de Informação

Fernando Freitas Costa. Pós-Graduando em Gestão e Docência Universitária. blog.fimes.edu.br/fernando nando@fimes.edu.br

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

Documentação Usando o Javadoc

DATA ACCESS OBJECT (DAO)

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

Transcrição:

Objetivo: Praticar o relacionamento entre classe um para muitos implementando um exemplo de carrinho de compras de produtos. Diagrama de Classes - Model 1. Crie um banco de dados chamado produtos e um tabela produto. Realise as inserções na tabela produto de acordo com os scripts abaixo. create database lojavirtual; create table produto( id serial, nome varchar (100), descricao varchar (255), precounitario real, imagem varchar (100), Primary Key(id) ); insert into produto (nome, descricao, precounitario, imagem) values ('afuche', 'prercursao', 1030, 'afuche.jpg'); insert into produto (nome, descricao, precounitario, imagem) values ('bateria', 'percursao', 1000, 'bateria.jpg'); insert into produto (nome, descricao, precounitario, imagem) values ('sax', 'sopro', 1500, 'sax.jpg'); insert into produto (nome, descricao, precounitario, imagem) values ('ektaratenor', 'sopro', 1200, 'ektaratenor.jpg'); insert into produto (nome, descricao, precounitario, imagem) values ('violao', 'cordas', 3200, 'violao.jpg');

2. Crie um novo projeto web no NetBeans chamado CarrinhoProduto de acordo com a estrutura abaixo: Esta pasta com as imagens esta na rede, copie e cole dento de Páginas Web Paginas JSP s Servlet s Classes Java Configura conexão com o DB

3. Implemente a classe ConectaBanco, como o exemplo abaixo: package br.com.musiccenter.util; import java.sql.connection; import java.sql.drivermanager; import java.sql.sqlexception; public class ConectaBanco { public static Connection getconexao() { Connection conexao = null; try { //driver que será utilizado Class.forName("org.postgresql.Driver"); //cria um objeto de conexao com um banco especificado no caminho... conexao = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/lojavirtual", "postgres", " postgres "); catch (ClassNotFoundException erro1) { throw new RuntimeException(erro1); catch (SQLException erro2) { throw new RuntimeException(erro2); return conexao; 4. Implemente a classe Produto com os atributos especificados no diagrama de classes e os métodos get/set.

5. Implemente a classe ItemDeCompra como o exemplo abaixo:

6. Implemente a classe CarrinhoDeCompra como o exemplo abaixo:

7. Implemente a classe ProdutoDAO com os métodos especificados no diagrama de classe. import br.com.musiccenter.util.conectabanco; import java.sql.connection; import java.sql.preparedstatement; import java.sql.resultset; import java.sql.sqlexception; import java.util.arraylist; public class ProdutoDAO { private static final String SELECTALL = "select * from produto"; private static final String SELECTID = "select * from produto where id =?"; public ArrayList<Produto> listar() { Connection conexao = null; ArrayList<Produto> listaproduto = new ArrayList<Produto>(); try { conexao = ConectaBanco.getConexao(); PreparedStatement pstmt = conexao.preparestatement(selectall); ResultSet rs = pstmt.executequery(); while (rs.next()) { Produto prod = new Produto(); prod.setid(rs.getint("id")); prod.setnome(rs.getstring("nome")); prod.setdescricao(rs.getstring("descricao")); prod.setprecounitario(rs.getdouble("precounitario")); prod.setimagem(rs.getstring("imagem")); listaproduto.add(prod); catch (SQLException ex1) { throw new RuntimeException(ex1); finally { try { if (conexao!= null) { conexao.close(); catch (SQLException ex1) { throw new RuntimeException(ex1);

//retorna a lista return listaproduto; public Produto consultarporid(int id) { Connection conexao = null; Produto produto = new Produto(); try { conexao = ConectaBanco.getConexao(); PreparedStatement pstmt = conexao.preparestatement(selectid); pstmt.setint(1, id); ResultSet rs = pstmt.executequery(); while (rs.next()) { produto.setid(rs.getint("id")); produto.setnome(rs.getstring("nome")); produto.setdescricao(rs.getstring("descricao")); produto.setprecounitario(rs.getdouble("precounitario")); produto.setimagem(rs.getstring("imagem")); catch (SQLException ex1) { throw new RuntimeException(ex1); finally { try{ if(conexao!=null){ conexao.close(); catch(sqlexception ex2){ throw new RuntimeException(ex2); return produto;

8. Implemente o Servlet ControleProduto como o exemplo abaixo: package br.com.musiccenter.controller; import br.com.musiccenter.model.produto; import br.com.musiccenter.model.produtodao; import java.io.ioexception; import java.util.arraylist; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class ControleProduto extends HttpServlet { protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html;charset=utf-8"); try { String acao = request.getparameter("acao"); if (acao.equals("listaprodutos")) { //monta uma lista para exibição na pagina principal ArrayList<Produto> produtos = new ProdutoDAO().listar(); //armazena os produto na requisição request.setattribute("produtos", produtos); //invia para index.jsp request.getrequestdispatcher("/index.jsp").forward(request, response); catch (Exception erro) { request.setattribute("erro", erro); request.getrequestdispatcher("erro.jsp").forward(request, response); @Override protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response);

@Override protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); 9. Implemente a Servlet ControleCarrinho como o exemplo a baixo: package br.com.musiccenter.controller; import br.com.musiccenter.model.carrinhodecompra; import br.com.musiccenter.model.itemdecompra; import br.com.musiccenter.model.produto; import br.com.musiccenter.model.produtodao; import java.io.ioexception; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsession; public class ControleCarrinho extends HttpServlet { protected void processrequest(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { response.setcontenttype("text/html;charset=utf-8"); try { String acao = request.getparameter("acao"); if (acao.equals("addproduto")) { //recupera o id do produto que deve ser add no carrinho int idproduto = Integer.parseInt(request.getParameter("idProduto")); //flag para controle de inserção de novos produtos no carrinho boolean existe = false; //recupera a sessão pertencente ao request HttpSession sessao = request.getsession(); //recupera um carrinho de produtos da sessão //se não exite um carrinho na sessão o valor será igual a null CarrinhoDeCompra carrinho = (CarrinhoDeCompra) sessao.getattribute("carrinho"); //verifica se já exista um carrinho na sessao if (carrinho == null) { //cria um carrinho

carrinho = new CarrinhoDeCompra(); sessao.setattribute("carrinho", carrinho); //verifica se o produto existe no carrinho if (carrinho.getitens()!= null) { for (ItemDeCompra item : carrinho.getitens()) { if (item.getproduto().getid() == idproduto) { //incrementa a quantidade item.setquantidade(item.getquantidade() + 1); existe = true; //se não existe o item ou produto, cria um novo if (existe == false) { //encontra o produto no banco Produto produto = new ProdutoDAO().consultarPorId(idProduto); //cria um novo item ItemDeCompra novoitem = new ItemDeCompra(); novoitem.setproduto(produto); novoitem.setquantidade(1); //adiciona novo item carrinho.addnovoitem(novoitem); //carrega a pagina do carrinho de compras request.getrequestdispatcher("/carrinho.jsp").forward(request, response); //fim addproduto else if (acao.equals("removeproduto")) { //recupera a sessão pertencente ao request HttpSession sessao = request.getsession(); //recupera um carrinho de produtos da sessão CarrinhoDeCompra carrinho = (CarrinhoDeCompra) sessao.getattribute("carrinho"); //recupera o id do produto int idproduto = Integer.parseInt(request.getParameter("idProduto")); ItemDeCompra itemremove = new ItemDeCompra(); Produto prodremove = new Produto(); prodremove.setid(idproduto); itemremove.setproduto(prodremove); carrinho.removeritem(itemremove);

//carrega a pagina do carrinho de compras request.getrequestdispatcher("/carrinho.jsp").forward(request, response); else if (acao.equals("cancelacompra")) { //recupera a sessão pertencente ao request HttpSession sessao = request.getsession(); //remove o carrinho da sessão sessao.removeattribute("carrinho"); //redireciona para pagina principal response.sendredirect("index.jsp"); catch (Exception erro) { request.setattribute("erro", erro); request.getrequestdispatcher("/erro.jsp").forward(request, response); @Override protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); @Override protected void dopost(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { processrequest(request, response); 10. Implemente o JSP index.jsp como o exemplo abaixo <%@page import="br.com.musiccenter.model.produto"%> <%@page contenttype="text/html" pageencoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>jsp Page</title> </head> <body>

<% // Recupera os produtos. java.util.list<produto> produtos = (java.util.list<produto>) request.getattribute("produtos"); if(produtos == null) { request.getrequestdispatcher("/controleproduto?acao=listaprodutos").forward(request, response); %> <h1>lista de Produtos</h1> <table border="0" cellpadding="5" align="center"> <% int contadorcoluna=1; for(produto produto : produtos){ //se é o primeiro produto, cria o inicio da linha if(contadorcoluna == 1) { out.println("<tr>"); %> <td align="center" valign="bottom"> <img src="imagens/<%=produto.getimagem()%>" alt="imagem do produto<%=produto.getimagem()%>"/> <br/> <%=produto.getnome()%><br/> <a href="controlecarrinho?acao=addproduto&idproduto=<%=produto.getid()%>"> Comprar</a></td> <% //se é o último produto, exibir o término da linha if(contadorcoluna == 3){ out.println("</tr>"); contadorcoluna =0; //atualiza o contador de colulas contadorcoluna ++; //fim do for %> </table> </body> </html>

11. Implemente o JSP carrinho.jsp como o exemplo abaixo: <%@page import="br.com.musiccenter.model.itemdecompra"%> <%@page import="br.com.musiccenter.model.carrinhodecompra"%> <%@page contenttype="text/html" pageencoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>carrinho de Compras</title> </head> <body> <h1>carrinho de Compras!</h1> <table border="1" cellpadding="2" > <tr> <td bgcolor="#000088"><font color="white">excluir</font></td> <td bgcolor="#000088"><font color="white">item</font></td> <td bgcolor="#000088"><font color="white">qtd</font></td> <td bgcolor="#000088"><font color="white">preço Unitário</font></td> <td bgcolor="#000088"><font color="white">total Item</font></td> <td bgcolor="#000088"><font color="white">+1</font></td> </tr> <% //recupera os produtos do carrinho da sessao CarrinhoDeCompra carrinho = (CarrinhoDeCompra) session.getattribute("carrinho"); for(itemdecompra item : carrinho.getitens()){ %> <tr> <td><a href="controlecarrinho?acao=removeproduto&idproduto=<%=item.getproduto().getid()%>"> X</td> <td><%=item.getproduto().getnome() %></td> <td><%=item.getquantidade() %></td> <td><%=item.getproduto().getprecounitario() %></td> <td><%=item.gettotal()%></td> <td><a href="controlecarrinho?acao=addproduto&idproduto=<%=item.getproduto().getid()%>">+</a ></td> </tr> <% %> </table> <strong>valor Total: <%=carrinho.calculatotal() %></strong><br/> <a href="index.jsp"> Continue comprando</a><br/>

<a href="controlecarrinho?acao=cancelacompra">cancelar comprar</a> </body> </html> 12. Implemente o JSP erro.jsp <%@page contenttype="text/html" pageencoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>erro!</title> </head> <% Exception erro = (Exception) request.getattribute("erro"); %> <body> <h1>erro! <%=erro%></h1> </body> </html> 13.Execute o teste a aplicação!!!