Java na WEB Componentes Bean



Documentos relacionados
Java II. Sérgio Luiz Ruivace Cerqueira

Curso de Java. Geração de Páginas WEB através de JSP. Todos os direitos reservados Klais

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

Estudo Dirigido - Parte 1

Desenvolvimento de aplicações Web. Java Server Pages

Java na WEB Banco de Dados

Coleções. Conceitos e Utilização Básica. c Professores de ALPRO I 05/2012. Faculdade de Informática PUCRS

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

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

Implementação de Classe e Auto-Relacionamento em Java

mkdir /srv/www/default/html/calculadora/imagens mkdir /srv/www/default/html/calculadora/blocos

Programação Orientada a Objetos em Java

Programação web Prof. Wladimir

JSP - ORIENTADO A OBJETOS

POO Programação Orientada a Objetos. Classes em Java

WebWork 2. João Carlos Pinheiro.

JSP (Java Server Pages)

" # $ %&'( ) *' ( +,)+ ( - $ (+*' 0 12 ' ( %+ -12 )+3 ) (4 )) ) % 12 ) *' (

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Tecnologias Web. Java Enterprise Edition

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

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

JSP e Servlet Princípio de MVC

Scriptlets e Formulários

Servlets, JSPs e Java Beans

0,5 pelo negrito das palavras ID, Nome, e Analisar em outro momento.

3 Classes e instanciação de objectos (em Java)

Programação de Computadores - I. Profª Beatriz Profº Israel

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web

TUTORIAL JSP & SERVLET

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

Noções sobre Objetos e Classes

SIMULADOS & TUTORIAIS

Programando em PHP. Conceitos Básicos

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Programação Web Prof. Wladimir

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

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

Conteúdo. DHTML tópicos Hamilton Lima

Introdução a Java. Hélder Nunes

PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof. Marcelo da Silveira Siedler siedler@gmail.com

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

Introdução ao PHP. Prof. Késsia Marchi

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

Introdução à Tecnologia Web

CAPITULO 5 COMANDO DE FLUXO IF

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}

Orientação a Objetos

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Mais sobre uso de formulários Site sem Ajax

Programação Orientada a Objetos

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

O código acima descreve o formulário com uma caixa de texto e dois botões

Capítulo 13. Encapsulamento. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Capítulo 22. Associações entre Classes. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Encapsulamento de Dados

Programação para Internet I

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Java para WEB. Servlets

Java na WEB Servlet. Sumário

Implementando uma Classe e Criando Objetos a partir dela

INTRODUÇÃO AO DESENVOLVIMENTO WEB

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br Escola CDI de Videira

JavaScript 2.0X X

Programação por Objectos. Java

Programação de Computadores - I. Profª Beatriz Profº Israel

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

Bool setcookie (string nome [, string valor [, int validade [, string caminho [, string dominio [, int seguro]]]]] )

Prof. Jhonatan Fernando

PROGRAMAÇÃO WEB DO LADO DO CLIENTE

Lógica de Programação

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

Desenvolvimento Web XHTML Formulários. Prof. Bruno E. G. Gomes

SISTEMA GERENCIAMENTO DE PRODUTOS PHP E MySQL 1. APRESENTAÇÃO

Capítulo 6. Delphi x Web x WebBroker. Primeiro Exemplo (Hello World)

Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

sobre rogério gonçalves gerente de projetos > digitale agência digital rogerio@digitale.com.br h7p:// h7p://leveme.

Orientação a Objetos com Java

UML Aspectos de projetos em Diagramas de classes

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL

NetBeans. Conhecendo um pouco da IDE

Mini-curso de PHP. Aulas ministradas por: André Luis de Paula Arthur Kalsing Diego Silva

HTML: Listas, Tabelas e Formulários CST Sistemas para Internet

Associação Carioca de Ensino Superior Centro Universitário Carioca

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

FBV - Linguagem de Programação II. Um pouco sobre Java

BSI UFRPE Prof. Gustavo Callou

Técnicas de Programação II

JavaServer Pages. Também são conhecidas pela sigla correspondente (JSP). Representam mais uma tecnologia da plataforma JEE.

JDBC Java Database Connectivity

Transcrição:

1 Java na WEB Componentes Bean Objetivo: Ao final da aula o aluno será capaz de: Criar site dinâmico utilizando componentes Bean Utilizar Tags de ação Empregar Coleções de Bean. Sumário 5. Definição de JavaBean... 2 Introdução:... 2 Convenção de Criação:... 2 Convenção de Modificadores de Acesso.... 2 Convenção de Construtor... 2 Exemplo de Implementação de Construtores:... 2 Implementação de Métodos em um Bean... 4 O que torna a classe Pessoa um Bean?... 4 Como utilizar um Bean em uma página JSP?... 4 Como utilizar o Bean em uma sessão... 5 6. Coleção de Bean (exemplo)... 6 6.1 Definição do Bean... 6 6.2 Definição da Página que coletará os dados... 7 6.3 Definição da Página que processará as informações:... 8 6.4 Definição da Página que fará o Tratamento de Erros... 10 6.5 Definição da Página de Relatório... 10 7. Tags de Bean... 10 Tags:... 10 Tag <jsp:usebean>... 10 Tag <jsp:setproperty>... 10 Como usar a <jsp:setproperty>... 10 A Tag <jsp:getproperty>... 10 Arquivo UsoBean.jsp exemplo de Uso de Bean:... 10 Arquivo UsoBeans2.jsp exemplo de Uso de Bean:... 10 Armazenamento na Sessão... 10 Arquivo UsoBeans3.jsp - exemplo de Armazenamento em Sessão... 10 8. Exemplo de Coleções.... 10 Arquivo de Cadastro de Produto (Cadastro.html)... 10 Arquivo de Gravação do Produto (gravarproduto.jsp).... 10 Arquivo de Relatório do Carrinho de Compras (relatorioprodutos.jsp)... 10

2 5. Definição de JavaBean Introdução: Convenção de Criação: Convenção de Modificadores de Acesso. Convenção de Construtor Um JavaBean é um componente de software que pode ser reutilizado e vinculado facilmente a outros componentes para formar novas aplicações. Ele deve ser implementado de acordo com algumas regras ou convenções. Essa é a primeria convenção a ser considerada no desenvolvimento. A classe necessita implementar a interface java.io.serializable. Exemplo: public class MinhaClasse implements java.io.serializable{ } A interface Serializable não contém declaração de métodos e, portanto, o JavaBean não necessita implementar nenhum método específico. Essa interface têm a função marcadora para a classe e indica que instâncias podem ser serializadas. Em um Bean, todas as variáveis necessitam possuir o encapsulamento private e os seus identificaores devem ser escritos somente com letras minúsculas. Um Bean necessita possuir um construtor sem parâmetro algum. Esse construtor é utilizado pelo contêiner para instanciá-lo. Um Bean também admite a definição de contrutores com parâmetros. Caso o programador opte por utilizar um construtor dessa forma, um construtor sem parâmetro necessita ser definido, mesmo que esse contrutor não execute operação alguma. No exemplo a seguir, essa exigência é atendida n linha 07 do código. Nessa linha, um contrutor sem parâmetro algum é implementado. Exemplo de Implementação de Construtores: // arquivo Pessoa.java /*00*/ package javanaweb.beans; /*01*/ public class Pessoa implements /*02*/ java.io.serializable /*03*/ { /*04*/ String nome=""; /*05*/ int idade=0; /*06*/ String cpf=""; /*07*/ public Pessoa() {}

3 /*08*/ public Pessoa(String vnome, int vidade /*09*/, String vcpf) /*10*/ { setnome(vnome); setidade(vidade); setcpf(vcpf);} // metodos de acesso: leitura /*11*/ public String getnome() {return nome;} /*12*/ public int getidade() {return idade; } /*13*/ public String getcpf() {return cpf; } //metodos de acesso:escrita /*14*/ public void setnome(string v ) {nome=v;} /*15*/ public void setidade(int v) {idade=v;} /*16*/ public void setcpf(string v) {cpf=v;} /*17*/ public String tostring(){ /*18*/ String saida = \n Nome: + nome /*19*/ + \n Idade: + idade + anos /*20*/ + \n CPF: + cpf; /*21*/ return saida; /*22*/ } }

4 Implementação de Métodos em um Bean O que torna a classe Pessoa um Bean? Os métodos em um Bean são implemtentados da mesma forma que classes normais. Esses métodos podem ser implementados para realizar quaisquer tipos de operações. A classe Pessoa foi criada de maneira similar à qualquer outra classe, mas com algumas pequenas diferenças que são oriundas das regras do bean, a saber: Implementa a interface java.io.serializable. Os atributos ou propriedades da classe são privados. Construtor sem parâmetro algum. Implementação de Métodos de acesso. Como utilizar um Bean em uma página JSP? <%@ page import="javanaweb.beans.*" <% Pessoa p = new Pessoa(); p.setnome("vinicius de Moraes"); p.setidade(45); p.setcpf("01234567890"); <html><body> <center> <table border=0> <tr><th> Nome: </th> <td> <%= p.getnome() </td></tr> <tr><th> Idade: </th> <td> <%= p.getidade() anos </td></tr> <tr><th> CPF: </th> <td> <%= p.getcpf() </td></tr> </table></body></html>

5 Como utilizar o Bean em uma sessão. <%@ page import="javanaweb.beans.*" <% Pessoa p = (Pessoa) session.getattribute("pessoa"); if (p==null) {p= new Pessoa();} <% String nome = (String)request.getParameter("nome"); String idade = (String)request.getParameter("idade"); String cpf = (String)request.getParameter("cpf"); if (nome!= null) {p.setnome(nome);} if (idade!= null) {p.setidade(integer.parseint(idade.trim()));} if (cpf!= null) {p.setcpf(cpf.trim());} session.setattribute("pessoa",p); <html> <body> <center> <table border=0> <form action="beanpessoa.jsp" method= post > <tr><th> Nome: </th> <td> <input type="text" name = "nome" value="<%= p.getnome().trim() "> </td></tr> <tr><th> Idade: </th> <td> <input type="text" name = "idade" value="<%= p.getidade() "> anos </td></tr> <tr><th> CPF: </th> <td> <input type="text"name = "cpf" value="<%= p.getcpf().trim() "> </td></tr> <tr><td align=center colspan=2> <input type="submit" value="atualizar">

6 </form></td></tr> </table> <br> </body></html> 6. Coleção de Bean (exemplo) Coleções de Bean podem ser utilizadas em diversas situações. Talvez, a mais típica seja o carrinho de compras de uma loja virtual. Cada produto inserido no carrinho pode ser representado como um bean e o carrinho de compras como a coleção de Bean. Essa coleção pode ser armazenada na sessão. Uma coleção de Bean pode ser definida utilizando-se arrays ou a classe java.util.vector, por exemplo. 6.1 Definição do Bean //////////////////////////////////// arquivo Produto.java package javanaweb.mercado; public class Produto implements java.io.serializable{ private int codigo; private String nome; private double valor; private int quantidade = 1; public Produto(){} public Produto(int _codigo, String _nome, double _valor) { this.codigo = _codigo; this.nome= _nome;

7 this.valor = _valor;} public int getcodigo() {return codigo;} public String getnome() {return nome;} public double getvalor() {return valor;} public void setcodigo(int v) {codigo=v;} public void setnome(string v){nome=v;} public void setvalor(double v) {valor=v;} public String tostring() { return ( "Codigo:" + codigo + "\tnome :" + nome + "\t Valor: + java.text.numberformat.getcurrencyinstance().format(valor));} public boolean isequals(produto p) { boolean saida=false; if ((codigo==p.getcodigo()) && (nome==p.getnome()) && (valor==p.getvalor())) {saida=true;} return saida; } public int getquantidade() {return quantidade;} public void setquantidade(int v){quantidade += v;} public void incrementaquantidade() {quantidade++;} } 6.2 Definição da Página que coletará os dados Após a definição do Bean, implementa-se a página JSP que coletará os dados do produto. Por exemplo: <html> <body> <h1> Cadastro de Produtos </h1> <center>

8 <form action="registrar.jsp" method="post" border=1> <table border=0 align="center"> <tr bgcolor="gray"> <th> codigo: </th> <td> <input type="text" name="codigo" size=8 maxlength=8> </td></tr> <tr bgcolor="white"> <th> nome: </th> <td> <input type="text" name="nome" size=80 maxlength=250> </td></tr> <tr bgcolor="gray"> <th> valor: </th> <td> <input type="text" name="valor" size=8 maxlength=8> </td></tr> <tr bgcolor="white"> <td colspan="2" align="center"> <input type="submit" value="gravar" > </td></tr> </table> </body></html> 6.3 Definição da Página que processará as informações: <!------------------------- Arquivo registrar.jsp > <%@page import="java.util.vector, javanaweb.mercado.*" <%@page errorpage="erro.jsp" <% Vector dados= (Vector)session.getAttribute("registros"); if (dados == null) {dados = new Vector();} <%! private int jahtem(vector lista, javanaweb.mercado.produto novoproduto)

9 { int saida = -1; Produto aux; for (int i = 0; i < lista.size(); i++) { aux = ((Produto)lista.elementAt(i)); if ( aux.isequals(novoproduto) ==true) {saida=i; break;} } return saida; } <% Produto p = new Produto(); String lidocodigo = request.getparameter("codigo"); String lidonome = request.getparameter("nome"); String lidovalor = request.getparameter("valor"); boolean gravado=false; String feito=""; <% if (lidocodigo!= null) p.setcodigo(integer.parseint(lidocodigo.trim())); if (lidonome!= null) p.setnome(lidonome); if (lidovalor!= null) p.setvalor(double.parsedouble(lidovalor.trim())); <% if ((lidocodigo!= null) (lidonome!= null) { int i = jahtem(dados,p); (lidovalor!= null) ) if (i > -1) { ((Produto)dados.elementAt(i)).incrementaQuantidade(); feito= "Quantidade incrementada do produto:"+lidocodigo;} else { dados.add(p); feito="produto [" + lidocodigo + "] inserido no carrinho"; } session.setattribute("registros", dados); gravado=true;}

10 <html><body> <% if (gravado == false) {out.println("<h1> Solicitação sem dados!! </h1>"); out.println( "<form action='..\\html\\cadastrodeproduto.html' method='post'>"); out.println( "<input type='submit' value='fornecer Informações'></form>"); out.println("</body></html>"); } else {out.println("<h1> Dados Gravados!! </h1>"); out.println("<h2>" + feito + "</h2>"); out.println("<form action='relatorio.jsp' method='post' >"); out.println( "<input type='submit' value='prosseguir'></form>"); } </body></html> 6.4 Definição da Página que fará o Tratamento de Erros. Para o tratamento de erros, apenas para reduzir esforços, repete-se o código da página 27 da aula anterior e adiciona-se o botão voltar. <%@page iserrorpage="true"

11 <html><body> <h3> Erro na solicitação </h3> <% String tipo =""; String causa="desconhecida"; String oquefazer="não definido!"; <% if (exception!= null) { tipo = exception.getclass().tostring(); if (tipo.indexof("java.lang.nullpointerexception")>=0) { causa = "Faltou informar um dado!"; oquefazer="volte e preencha os campos obrigatórios."; } if (tipo.indexof("java.lang.numberformatexception")>=0) { causa = "Número Inválido!"; oquefazer="volte e preencha os campos obrigatórios."; } out.println("<br>tipo de erro="+tipo ); out.println("<br>causa Provavel:" + causa); out.println("<br>o que fazer?:" + oquefazer); } <br> <input type="button" value="voltar" onclick="javascript:history.back(1)"/> </body> </html>

12 6.5 Definição da Página de Relatório <!------------------------- Arquivo registrar.jsp > <%@page import="java.util.vector, javanaweb.mercado.*"

13 <%@page errorpage="erro.jsp" <% Vector dados= (Vector)session.getAttribute("registros"); String lista=""; if (dados!= null) { Produto aux; for (int i = 0; i < dados.size(); i++) { aux = ((Produto)dados.elementAt(i)); lista += "\n<tr><td>" + aux.getquantidade() + "</td><td>" + aux.getcodigo() + "</td><td>" + aux.getnome() + "</td><td>" + aux.getvalor()*aux.getquantidade() + "</td></tr>"; } } <html><body><center> <h1> Itens armazenados:</h1> <% if (lista.length() == 0) {out.println("<h2> Carrinho Vazio!! </h2>");} else {out.println("<table border = '1'>"); out.println( "<tr><th> Quantidade</th>" +"<th>código</th>" +"<th>nome</th>" +"<th>valor Unitário</th>" +"<th>valor Final</th></tr>"); out.println(lista); out.println("</table>"); } </body></html>

14

15 7. Tags de Bean. Tags: <jsp:usebean> : Utilizada para instanciar um JavaBean ou recuperar uma instância já existente. <jsp:setproperty> : Utilizada para alterar o valor de uma propriedade. <jsp:getproperty> : Utilizada para recuperar o valor de uma propriedade Tag <jsp:usebean> Tag <jsp:setproperty> A instância de um bean é feita conforme o exemplo a seguir: <jsp:usebean id= nome class= nomeclasse scope= escopo /> Um bean pode conter cinco atributos, a saber: beanname : instância de um bean class : define a classe id : especifica um identificador para o bean scope: especifica o escopo onde o bean será gravado {page, request, session ou application} type : força a conversão do bean para um tipo diferente da classe à qual pertence o bean. Sempre que for necessário aletar a propriedade de um Bean já instanciado, deve-se utilizar a tag <jsp:setproperty>. São atributos da Tag: name: o nome da instância do JavaBean criado. param: define um parâmetro de requisição cujo conteúdo deve ser gravado em uma propriedade JavaBean property: nome da propriedade a ser alterada. value: O novo valor a ser gravado na propriedade.

16 Como usar a <jsp:setproperty> <jsp:setproperty name= produto property= quantidade value= 2 /> : altera o valor da propriedade quantidade para o valor 2. <jsp:setproperty name= produto property= quantidade param= quant /> :altera o valor da propriedade quantidade para o valor do parâmetro quant. <jsp:setproperty name= produto property= quantidade /> : Se o campo do formulário onde o usuário informou o valor a ser gravado tiver exatamente o mesmo nome que a propriedade, não é necessário o uso do atributo param. <jsp:setproperty name= produto property= * /> : Se todos os parâmetros do formulário tiverem o mesmo nome das propriedades, não é necessário especificação de qual propriedade que será alterada nem de qual parâmetro. A Tag <jsp:getproperty> Arquivo UsoBean.jsp exemplo de Uso de Bean: A Tag <jsp:getproperty> contém apenas dois atributos: name e property. Ela deve ser utilizada sempre que desejar recuperar o valor de uma propriedade. Exemplo de sintaxe de uso: <jsp:getproperty name= produto property= quantidade /> <jsp:usebean id="produto" class="javanaweb.mercado.produto" /> <jsp:setproperty name="produto" property="codigo" value="2" /> <jsp:setproperty name="produto" property="nome" value="aparelho de DVD" /> <jsp:setproperty name="produto" property="valor" value="195.5" /> <html> <head><title> Exemplo de Uso de Bean </title></head> <body> <h2> Dados do Produto </h2> <center> <table border=1> <tr align="center"><th>codigo: </th>

17 property="codigo"/></td></tr> <tr align="center"><th>nome: </th> property="nome"/></td></tr> <tr align="center"><th>valor: </th> property="valor"/></td></tr> <tr align="center"><th>quantidade: </th> property="quantidade"/></td></tr> </table> </body></html>

18 Arquivo UsoBeans2.jsp exemplo de Uso de Bean: <jsp:usebean id="produto" class="javanaweb.mercado.produto" /> <jsp:setproperty name="produto" property="*" /> <html> <head><title> Segundo Exemplo de Uso de Bean </title></head> <body> <h2> Dados do Produto </h2> <center> <table border=1> <tr align="center"><th>codigo: </th> property="codigo"/></td></tr> <tr align="center"><th>nome: </th> property="nome"/></td></tr> <tr align="center"><th>valor: </th> property="valor"/></td></tr> <tr align="center"><th>quantidade: </th> property="quantidade"/></td></tr> </table> </body></html> Armazenamento na Sessão O compartilhamento dos Bean entre páginas JSP é feito através da sessão. Nesse caso, a instância do bean é associada a uma sessão.

19 Arquivo UsoBeans3.jsp - exemplo de Armazenamento em Sessão. <jsp:usebean id="produto" class="javanaweb.mercado.produto" scope="session"/> <html> <head><title> Terceiro Exemplo de Uso de Bean </title></head> <body> <h2> Dados do Produto </h2> <center> <table border=1> <tr align="center"><th>codigo: </th> property="codigo"/></td></tr> <tr align="center"><th>nome: </th> property="nome"/></td></tr> <tr align="center"><th>valor: </th> property="valor"/></td></tr> <tr align="center"><th>quantidade: </th> </table> </body></html> property="quantidade"/></td></tr> <jsp:setproperty name="produto" property="codigo" value="2" />

20 8. Exemplo de Coleções. Arquivo de Cadastro de Produto (Cadastro.html). <html> <body> <h1> Cadastro de Produtos </h1> <center> <form action="..\jsp\gravarproduto.jsp" method="post" border=1> <table border=1 align="center"> <tr bgcolor="silver"> <th> codigo: </th> <td> <input type="text" name="codigo" size=8 maxlength=8> </td></tr> <tr bgcolor="white"> <th> nome: </th> <td> <input type="text" name="nome" size=80 maxlength=250> </td></tr> <tr bgcolor="silver"> <th> valor: </th> <td> <input type="text" name="valor" size=8 maxlength=8> </td></tr> <tr bgcolor="white"> <td colspan="2" align="center"> </table> </body></html> <input type="submit" value="gravar" > </td></tr>

21 Arquivo de Gravação do Produto (gravarproduto.jsp). <jsp:usebean id="lista" class="java.util.vector" scope="session"/> <jsp:usebean id="produto" class="javanaweb.mercado.produto"/> <jsp:setproperty name="produto" property="*" /> <% lista.add(produto); <html> <head><title> Dados Recebidos </title></head> <body> <h2> Dados do Produto Gravado </h2> <center><table border=1> <tr align="center"><th>codigo: </th> property="codigo"/></td></tr> <tr align="center"><th>nome: </th> property="nome"/></td></tr> <tr align="center"><th>valor: </th> property="valor"/></td></tr> <tr align="center"><th>quantidade: </th> property="quantidade"/></td></tr> <tr><td><input type="button" value="voltar" onclick="javascript:history.back(1)"/></td> <td><form action = "relatorioprodutos.jsp" method= post > <input type="submit" value="relatorio"/></form></td></tr> </table></body></html>

22 Arquivo de Relatório do Carrinho de Compras (relatorioprodutos.jsp) <jsp:usebean id="lista" class="java.util.vector" scope="session"/> <html> <head><title> Itens do carrinho </title></head> <body> <h2> Itens armazenados </h2> <% for (int i =0 ; i < lista.size(); i++) out.println("<br>" + lista.get(i)); <br> <input type="button" value="voltar" onclick="javascript:history.back(1)"/> </body> </html> É interessante notar que a classe Vector não é um JavaBean, tendo em vista que não segue todas as convenções de sua especificação. Mas a tag <jsp:usebean> pode ser utilizada para criar uma instância de qualquer classe Java que contenha um contrutor sem parâmetros.