Escolar Documentos
Profissional Documentos
Cultura Documentos
Benefrancis do Nascimento 1
Neste material mostrarei passo a passo o
desenvolvimento de uma aplicação SISTEMA WEB
web
utilizando programação orientada a objeto
com Java em conjunto com o framework
para mapeamento objeto relacional
Hibernate. É indicado para estudantes e
profissionais que queiram aprender Java
para web, porém que procuram
desenvolver softwares mais próximos do
que o mercado atualmente exige. Neste
material desenvolveremos um sistema
para controlar um petshop contendo
diversas operações que interagem com
banco de dados.
SISTEMA
WEB
Desenvolva passo a passo
um sistema web utilizando
Java, Hibernate e JSP.
Benefrancis do Nascimento
Benefrancis do Nascimento 2
SISTEMA WEB
Nota do Autor
O material que o leitor tem em mãos, dirigido basicamente, mas não exlusivamente, a alunos
de graduação e pós graduação em cursos de Ciencia da Computação e correlatos, tem como
preocupação fundamental iniciá‐lo no desenvolvimento de aplicações Java, utilizando
Hibernate em ambiente Web.
O objetivo aqui é desenvolver passo a passo um sistema em Java que interage com banco de
dados realcional utilizando o framework de mapeamento objeto relacional Hibernate. Este
sistema, futuramente, será encaminhado a testes de desempenho e segurança para que, em
seguida, possa ser evoluído. Dessa forma, convido você a participar deste projeto que, com
certeza, contribuirá com os seus estudos e futuramente você será capaz de repassar este
conhecimento para outras pessoas.
Não indico a utilização do código fonte deste material para desenvolvimento de sistema
comercial, pois aspectos de segurança nesta obra não foram abordados. Desta forma, não me
responsabilizo por qualquer dano que possa causar a quem quer que seja.
Criticas e sugestões, com objetivo de alimentar o processo de melhoria contínua de minhas
obras, são bem vindas. O contato deverá ser estabelecido pelos meios abaixo.
e‐mail:
benefrancis@gmail.com
twitter:
@Benefrancis
Skype:
Benefrancis.com
Desejo a todos muito sucesso.
Benefrancis do Nascimento
Benefrancis do Nascimento 3
SISTEMA WEB
Aos meus alunos do curso de Pós‐graduação em Desenvolvimento de Sistemas para Web da
Faculdade Anhanguera – Campinas.
Benefrancis do Nascimento 4
SISTEMA WEB
Nota do Autor ............................................................................................................................ 2
Configurando o ambiente ............................................................................................................. 8
Acessando o Mysql .................................................................................................................... 9
Criando o banco de dados do sistema ...................................................................................... 9
Criando uma aplicação Java para web no Netbeans .............................................................. 10
Criando os pacotes da nossa aplicação ................................................................................... 17
Criando as classes da camada de controle .................................................................................. 18
A Classe Pessoa ....................................................................................................................... 19
Métodos da classe pessoa que interagem com o banco de dados ......................................... 21
Mapeando a Classe Pessoa ..................................................................................................... 22
A Classe PF ............................................................................................................................... 27
Mapeando a Classe PF ............................................................................................................. 27
A Classe PJ ............................................................................................................................... 28
Mapeando a Classe PJ ............................................................................................................. 29
A Classe Telefone .................................................................................................................... 30
Métodos da classe Telefone que interagem com o banco de dados ...................................... 30
Mapeando a Classe Telefone .................................................................................................. 31
A classe Endereco .................................................................................................................... 35
Métodos da classe Endereco que interagem com o banco de dados ..................................... 35
Mapeando a classe Endereco .................................................................................................. 36
A classe DocReceita ................................................................................................................. 40
Mapeando a classe DocReceita ............................................................................................... 40
A classe CPF ............................................................................................................................. 43
A classe CNPJ ........................................................................................................................... 44
A classe Animal ........................................................................................................................ 47
Benefrancis do Nascimento 5
SISTEMA WEB
Métodos da classe Animal que interagem com o banco de dados ......................................... 47
Mapeando a classe Animal ...................................................................................................... 48
Informando ao Hibernate quais os atributos da classe animal que serão persistidos ........... 51
A classe Cachorro .................................................................................................................... 53
A classe Gato ........................................................................................................................... 54
A classe abstrata Servico ......................................................................................................... 55
Métodos da classe Servico que interagem com o banco de dados ........................................ 55
Mapeando a Classe Servico ..................................................................................................... 57
Informando ao Hibernate quais os atributos da classe Servico que serão persistidos ........... 58
A classe Banho ......................................................................................................................... 60
A classe Consulta ..................................................................................................................... 61
A classe Tosa ........................................................................................................................... 62
A classe Vacina ........................................................................................................................ 62
Utilizando o Hibernate para criar as tabelas no banco de dados ............................................... 63
Atualizando o arquivo hibernate.cfg.xml ................................................................................ 64
Criando uma conexão com o hibernate .................................................................................. 65
Criando uma classe para testar o funcionamento do Hibernate ............................................ 66
Programando as classes DAO ...................................................................................................... 68
Introdução ............................................................................................................................... 69
Implementado os métodos da classe PessoaDAO .................................................................. 69
Implementado os métodos da classe AnimalDAO .................................................................. 76
Implementado os métodos da classe ServicoDAO .................................................................. 82
Implementado os métodos da classe TelefoneDAO ............................................................... 89
Implementado os métodos da classe EnderecoDAO .............................................................. 95
Testando os métodos das classes do pacote DAO .................................................................... 101
Salvando pessoa, telefone, endereço, animais e serviços. ................................................... 102
Benefrancis do Nascimento 6
SISTEMA WEB
Criando as páginas JSP .............................................................................................................. 106
Mapa do site .......................................................................................................................... 107
Criando diretórios necessários .............................................................................................. 107
Iniciando a programação das páginas JSP ............................................................................. 109
Importando as classes necessárias ........................................................................................ 109
Codificando arquivos do diretório geral ................................................................................... 115
Codificando arquivos do diretório cadastros ............................................................................ 120
Codificando arquivos do diretório serviços ............................................................................... 155
Codificando arquivos do diretório consultas ............................................................................ 173
Considerações finais .................................................................................................................. 265
Benefrancis do Nascimento 7
SISTEMA WEB
Figura 1 ‐ Diagrama de classes do pacote controle
Benefrancis do Nascimento 8
SISTEMA WEB
Configurando o ambiente
Benefrancis do Nascimento 9
SISTEMA WEB
Acessando o Mysql
Iniciaremos a configuração do nosso ambiente de desenvolvimento, conectando com o Mysql.
Para isso utilizaremos o HeidiSQL1. Conectamos com o usuário root em nossa máquina local.
Figura 2 ‐ Conectando o Heidi SQL
Criaremos agora o nosso database. Para isso, clique com o botão da direita do mouse
no Treeview root@127.0.0.1; abrirá um menu suspenso no qual você deverá acessar a
opção Create New / Database. A tela representad na imagem abaixo será aberta.
Preencha os dados conforme a imagem abaixo.
1
Disponível em: http://www.heidisql.com/
Benefrancis do Nascimento 10
SISTEMA WEB
Figura 3 ‐ Criando o banco de dados com o nome estimacao
Criaremos agora uma aplicação java para web no ide Netbeans2. Acesse o menu
Arquivo / Novo projeto. A configuração do projeto segue quatro passos que
descreverei nas imagens a seguir.
2
Disponível em: http://netbeans.org/
Benefrancis do Nascimento 11
SISTEMA WEB
Figura 4 ‐ Criando uma aplicação Java para web no Netbeans [1 º Passo ]
O primeiro passo consiste na escolha do projeto. No nosso caso a categoria do projeto
será java Web e o projeto será Aplicação web.
Benefrancis do Nascimento 12
SISTEMA WEB
Figura 5 ‐ Criando uma aplicação Java para web no Netbeans [2 º Passo ]
No segundo passo demos um nome para o projeto. O nome escolhido foi Estimacao.
Figura 6 ‐ Criando uma aplicação Java para web no Netbeans [3 º Passo ]
Benefrancis do Nascimento 13
SISTEMA WEB
No terceiro passo deveremos escolher o servidor – container para a nossa aplicação.
Escolha o Apache Tomcat. Para a versão do java EE você deverá escolher a 5 ou
superior. O caminho do projeto será sugerido pelo Netbeans. Aceite a sugestão.
Figura 7 ‐ Criando uma aplicação Java para web no Netbeans [4 º Passo ]
O quarto passo será dividido em duas etapas. A primeira é escolher os frameworks que
desejaremos trabalhar em nossa aplicação. Escolha somente o Hibernate 3.x.x. Para
conexão com banco de dados o hibernate trabalha com dialeto, desta maneira ele
saberá tratar as particularidades do banco de dados escolhido. Configuraremos uma
nova conexão com banco de dados. A segunda etapa é apresentada na imagem abaixo:
Benefrancis do Nascimento 14
SISTEMA WEB
Figura 8 ‐ Segunda etapa do 4º passo da configuração do projeto Java para web
A imagem acima mostra como deverá ser configurada a conexão com o banco de dados.
Preencha conforme a imagem, porém você deverá saber qual o usuário e senha do seu banco
de dados Mysql. Após o preenchimento clique em ok para aparecer a tela de finalização da
configuração do projeto (imagem a seguir).
Benefrancis do Nascimento 15
SISTEMA WEB
Figura 9 ‐ Tela de finalização da configuração do projeto
O seu projeto já está configurado para trabalhar com java para web utilizando o
framework Hibernate.
O Netbeans exibirá a estrutura de diretórios conforme imagem a seguir, porém para
visualizar o conteúdo do arquivo hibernate.cfg.xml, você deverá clicar na aba XML do
referido arquivo.
Benefrancis do Nascimento 16
SISTEMA WEB
Figura 10 ‐ o conteúdo do arquivo hibernate.cfg.xml criado pelo ide Netbeans
Figura 11 ‐ Alteramos o arquivo hibernate.cfg.xml
Realizamos a primeira alteração no arquivo hibernate.cfg.xml com o objetivo de que:
1º. Exiba no console os comandos sql;
Benefrancis do Nascimento 17
SISTEMA WEB
2º. Que os comandos sql sejam formatados;
3º. Informando o tamanho do pool de conexões permitidas;
4º. E, por fim, que o hibernate tenha permissão de criar tabelas na nossa base de
dados.
Falta apenas informar neste arquivo quais serão as classes da nossa aplicação que
serão mapeadas para persistirem no banco de dados, mas informaremos após a
criação, codificação e mapeamento das mesmas.
A nossa aplicação terá três camadas, porém apenas dois pacotes, pois a camada de
apresentação será composta pelas páginas web que já possuem diretório em nosso projeto.
Veja imagem abaixo.
Figura 12 ‐ Criando Pacotes: controle e modelo – A camada de visão será no diretório
Páginas Web
Cabe informar que apenas o arquivo hibernate.cfg.xml deverá permanecer no pacote padrão.
Benefrancis do Nascimento 18
SISTEMA WEB
SISTEMA WEB
A Classe Pessoa
Figura 13 ‐ Atributos da Classe abstrata Pessoa.
No momento da criação dos atributos o Netbeans sugere a criação das classes. Por
exemplo, ao digitar public Collection<Telefone> telefone o Netbeans sugere a criação
da classe telefone. Aconselho que criem imediatamente conforme o Netbeans vai
sugerindo, porém depois façam as devidas alterações visto que, por exemplo, ao
digitar public DocReceita docReceita ele sugere a criação de uma classe, mas
conforme nosso diagrama UML, DocReceita é uma interface. Altere.
Benefrancis do Nascimento 20
SISTEMA WEB
Figura 14 ‐ Diretório após a criação das classes do pacote modelo
Neste momento criei as classes DAO – Data Access Object ‐ Classes responsáveis pela
camada de persistência na minha aplicação, mas sem nenhum código neste momento
(apenas para podermos referenciá‐las nos métodos salvar, alterar, excluir e consultar
nas classes do pacote controle). Criaremos também uma classe para testar o
funcionamento do Hibernate (detalharei estas classes mais adiante).
Benefrancis do Nascimento 21
SISTEMA WEB
public Autenticavel autenticar(String usuario, String senha) {
return PessoaDAO.autenticar(usuario, senha);
}
public boolean existe(String email) {
return PessoaDAO.existe(email);
}
public boolean existe(DocReceita documento) {
return PessoaDAO.existe(documento);
}
static public boolean salvar(Pessoa p) {
return PessoaDAO.salvar(p);
}
static public ArrayList<Pessoa> consultar() {
return PessoaDAO.consultar();
}
static public Pessoa consultar(int idPessoa) {
return PessoaDAO.consultar(idPessoa);
Benefrancis do Nascimento 22
SISTEMA WEB
}
static public Collection<Pessoa> consultar(String nome) {
return PessoaDAO.consultar(nome);
}
static public boolean alterar(Pessoa p) {
return PessoaDAO.alterar(p);
}
static public boolean excluir(Pessoa p) {
return PessoaDAO.excluir(p);
}
Iniciaremos o mapeamento Objeto Relacional da classe pessoa
Precisamos informar ao Hibernate que a classe pessoa dará origem a objetos que serão
persistidos em banco de dados. Para isso utilizamos a seguinte anotação:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "tipo")
Benefrancis do Nascimento 23
SISTEMA WEB
As anotações acima deverão ser inseridas antes do nome da classe. Veja imagem abaixo:
Figura 15 ‐ Informando ao Hibernate que a Classe Pessoa será persistida e a estratégia de Herança
utilizada
Ao digitar as anotações o Netbeans sugere algumas importações, você deverá escolher as
importações conforme as linhas que vão de 5 a 8 na imagem acima.
O Netbeans ira sugerir a criação do id para hierarquia da classe, para criar o id – que será o id
da tabela no banco de dados; insira o código abaixo antes do atributo idPessoa. Será
necessário alterar de public para private o atributo idPessoa. Não deixe de fazer as
importações sugeridas pelo Netbeans, porém selecione sempre as que começam com
javax.persistence
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int idPessoa;
Benefrancis do Nascimento 24
SISTEMA WEB
Benefrancis do Nascimento 25
SISTEMA WEB
Benefrancis do Nascimento 26
SISTEMA WEB
Figura 16 ‐ Atributos da classe pessoa que serão persistidos
Figura 17 ‐ Encapsulando campos da classe Pessoa
SISTEMA WEB
Figura 18 ‐ Criando método construtor para a classe Pessoa
Verifiquem em nosso diagrama de classes que Pessoa é classe ansestral das classes PF e PJ
(Pessoa Física e Pessoa Jurídica respectivamente). Criaremos abaixo essas classes:
A Classe PF
Iniciaremos a construção da classe que representará as Pessoas Físicas.
Figura 19 ‐ A classe PF
A classe PF herda os métodos e atributos da classe Pessoa, por este motivo o mapeamento
desta classe é mais simples: bastará informar a estratégia de herança. Veja abaixo:
Mapeando a Classe PF
Iniciaremos o mapeamento Objeto Relacional da classe PF.
Informando que a Classe PF dará origem a objetos que serão persistidos
Precisamos informar ao Hibernate que a classe PF dará origem a objetos que serão
Benefrancis do Nascimento 28
SISTEMA WEB
persistidos em banco de dados e que os objetos do tipo PF em nosso banco de dados possui
identificador 1. Este é o valor que identifica que, dentre as classes filhas de Pessoa, o número 1
será usado para PF. Veja a anotação:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorValue("1")
As anotações acima deverão ser inseridas antes do nome da classe. Veja imagem abaixo:
Figura 20 ‐ Informando ao Hibernate que a Classe PF será persistida, a estratégia de Herança e o valor
que a identifica entre as classes que são filhas da classe Pessoa
A Classe PJ
Iniciaremos a construção da classe que representará as Pessoas Jurídicas.
Figura 21 ‐ A classe PJ
Benefrancis do Nascimento 29
SISTEMA WEB
A classe PJ, assim como a classe PF, herda os métodos e atributos da classe Pessoa, por este
motivo o mapeamento desta classe é semelhante ao da classe PF. Assim como PF, bastará
informar a estratégia de herança. Veja abaixo:
Mapeando a Classe PJ
Iniciaremos o mapeamento Objeto Relacional da classe PJ.
Informando que a Classe PJ dará origem a objetos que serão persistidos
Precisamos informar ao Hibernate que a classe PJ dará origem a objetos que serão persistidos
em banco de dados e que os objetos do tipo PJ em nosso banco de dados possui identificador
"2". Este é o valor que identifica que, dentre as classes filhas de Pessoa, o número "2" será
usado para PJ. Veja a anotação:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorValue("2")
As anotações acima deverão ser inseridas antes do nome da classe. Veja imagem abaixo:
Figura 22 ‐ Informando ao Hibernate que a Classe PJ será persistida, a estratégia de Herança
e o valor que a identifica entre as classes que são filhas da classe Pessoa
Benefrancis do Nascimento 30
SISTEMA WEB
A Classe Telefone
Figura 23 ‐ Atributos da Classe Telefone
Incluiremos os métodos salvar, consultar, alterar e excluir na classe Telefone. Esses métodos
serão a ligação entre a classe Telefone e a classe telefoneDAO. Abaixo mostramos os métodos
da classe Telefone. Obs: Quando estiver inserindo os métodos abaixo, o Netbeans irá sugerir a
criação dos métodos na Classe TelefoneDAO. Aceite a sugestão.
public static boolean salvar(Telefone t) {
return TelefoneDAO.salvar(t);
}
public static boolean salvar(Pessoa p) {
return TelefoneDAO.salvar(p);
}
public static Telefone consultar(int idTelefone) {
return TelefoneDAO.consultar(idTelefone);
Benefrancis do Nascimento 31
SISTEMA WEB
}
public static Collection<Telefone> consultar(Pessoa p) {
return TelefoneDAO.consultar(p);
}
public static boolean alterar(Telefone t) {
return TelefoneDAO.alterar(t);
}
public static boolean excluir(Telefone t) {
return TelefoneDAO.excluir(t);
}
public static boolean excluir(Pessoa p) {
return TelefoneDAO.excluir(p);
}
Iniciaremos o mapeamento objeto relacional da classe Telefone.
Para informar que a classe telefone dará origem a objetos que serão persistidos em banco de
dados, basta apenas incluir a anotação @Entity antes do nome da classe.
Benefrancis do Nascimento 32
SISTEMA WEB
Para criar o id – que será o id da tabela no banco de dados; insira o código abaixo antes do
atributo idTelefone. Não deixe de fazer as importações sugeridas pelo Netbeans, porém
selecione sempre as que começam com javax.persistence.
Figura 24 ‐ Informando ao Hibernate qual será o Id da tabela telefone
SISTEMA WEB
Figura 25 ‐ Atributos da classe Telefone que serão persistidos
Para encapsular os campos da classe telefone acesse o menú refatorar / encapsular campos. A
tela abaixo será aberta. Selecione todos os campos e clique em refatorar.
Benefrancis do Nascimento 34
SISTEMA WEB
Figura 26 ‐ Encapsulando os atributos da classe Telefone
Figura 27 ‐ Criando método construtor para a classe Telefone
Benefrancis do Nascimento 35
SISTEMA WEB
A classe Endereco
Figura 28 ‐ Atributos da classe Endereco
Incluiremos os métodos salvar, consultar, alterar e excluir na classe Endereco. Esses métodos
serão a ligação entre a classe Endereco e a classe EnderecoDAO. Abaixo mostramos os
métodos da classe Endereco. Obs: Quando estiver inserindo os métodos abaixo, o Netbeans irá
sugerir a criação dos métodos na Classe EnderecoDAO. Aceite a sugestão.
public static boolean salvar(Endereco e) {
return EnderecoDAO.salvar(e);
}
Benefrancis do Nascimento 36
SISTEMA WEB
public static boolean salvar(Pessoa p) {
return EnderecoDAO.salvar(p);
}
public static Endereco consultar(int idEndereco) {
return EnderecoDAO.consultar(idEndereco);
}
public static ArrayList<Endereco> consultar(Pessoa p) {
return EnderecoDAO.consultar(p);
}
public static boolean alterar(Endereco e) {
return EnderecoDAO.alterar(e);
}
public static boolean excluir(Endereco e) {
return EnderecoDAO.excluir(e);
}
public static boolean excluir(Pessoa p) {
return EnderecoDAO.excluir(p);
}
Iniciaremos o mapeamento objeto relacional da classe Endereco.
Benefrancis do Nascimento 37
SISTEMA WEB
Para informar que a classe Endereco dará origem a objetos que serão persistidos em banco de
dados, basta apenas incluir a anotação @Entity antes do nome da classe.
Para criar o id – que será o id da tabela no banco de dados; insira o código abaixo antes do
atributo idEndereco. Não deixe de fazer as importações sugeridas pelo Netbeans, porém
selecione sempre as que começam com javax.persistence.
Figura 29 ‐ Informando ao Hibernate qual será o Id da tabela endereço
SISTEMA WEB
Figura 30 ‐ Os atributos da classe Endereco que serão persistidos
Benefrancis do Nascimento 39
SISTEMA WEB
Para encapsular os campos da classe endereco acesse o menú refatorar / encapsular campos.
A tela abaixo será aberta. Selecione todos os campos e clique em refatorar.
Figura 31 ‐ Encapsulando campos da classe endereço
SISTEMA WEB
Figura 32 ‐ Métodos construtores para a classe Endereco
A classe DocReceita
Codificaremos agora a classe DocReceita.
Figura 33 ‐ A interface DocReceita
Iniciaremos o mapeamento objeto relacional da classe DocReceita.
Benefrancis do Nascimento 41
SISTEMA WEB
Para informar que a classe DocReceita dará origem a objetos que serão persistidos em banco
de dados, basta apenas incluir a anotação @Entity antes do nome da classe, porém docReceita
será a classe mãe de CPF e CNPJ, desta forma será necessário informar qual a estratégia de
herança que utilizaremos.
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "tipo")
SISTEMA WEB
Figure 1 ‐ Atributos da classe DocReceita que serão persistidos
Benefrancis do Nascimento 43
SISTEMA WEB
A classe CPF
Codificaremos agora a classe CPF. Esta classe implementa a Interface DocReceita. Portanto
deverá possuir o método validar e getNumero.
Figura 34 ‐ A classe CPF
Abaixo apresento o método utilizado para calcular o dígito de um CPF. Na imagem acima ele
está oculto, para melhor visualização.
Benefrancis do Nascimento 44
SISTEMA WEB
Figura 35 ‐ Método utilizado para calcular o dígito de um CPF. Deve estar dentro da classe CPF
A classe CNPJ
A classe CNPJ, assim como a classe CPF implementa a interface DocReceita, portanto também
deverá possuir os métodos validar e getnumero.
Benefrancis do Nascimento 45
SISTEMA WEB
Figura 36 ‐ A classe CNPJ
Abaixo apresento o método utilizado para calcular o dígito de um CNPJ. Na imagem acima ele
está oculto, para melhor visualização.
Benefrancis do Nascimento 46
SISTEMA WEB
Figura 37 ‐ Método utilizado para calcular o dígito de um CNPJ. Deve estar dentro da classe
CNPJ.
Benefrancis do Nascimento 47
SISTEMA WEB
A classe Animal
Iniciaremos a codificação da classe abstrata Animal.
Figura 38 ‐ A classe Abstrata Animal
Incluiremos os métodos salvar, consultar, alterar e excluir na classe Animal. Esses métodos
serão a ligação entre a classe Animal e a classe animalDAO. Abaixo mostramos os métodos da
classe Animal. Obs: Quando estiver inserindo os métodos abaixo, o Netbeans irá sugerir a
criação dos métodos na Classe AnimalDAO. Aceite a sugestão.
public static boolean salvar(Animal a) {
return AnimalDAO.salvar(a);
}
public static boolean salvar(Pessoa p) {
Benefrancis do Nascimento 48
SISTEMA WEB
return AnimalDAO.salvar(p);
}
public static Animal consultar(int idAnimal) {
return AnimalDAO.consultar(idAnimal);
}
public static Collection<Animal> consultar() {
return AnimalDAO.consultar();
}
public static Collection<Animal> consultar(Pessoa p) {
return AnimalDAO.consultar(p);
}
public static boolean alterar(Animal a) {
return AnimalDAO.alterar(a);
}
public static boolean excluir(Animal a) {
return AnimalDAO.excluir(a);
}
public static boolean excluir(Pessoa p) {
return AnimalDAO.excluir(p);
}
Iniciaremos o mapeamento objeto relacional da classe Animal.
Benefrancis do Nascimento 49
SISTEMA WEB
Precisamos informar ao Hibernate que a classe Animal dará origem a objetos que serão
persistidos em banco de dados e qual será a estratégia para hierarquia. Para isso utilizamos as
seguintes anotações:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "tipo")
As anotações acima deverão ser inseridas antes do nome da classe. Veja imagem abaixo:
Figura 39 ‐ informar ao Hibernate que a classe Animal dará origem a objetos que serão persistidos em
banco de dados e qual será a estratégia para hierarquia
Benefrancis do Nascimento 50
SISTEMA WEB
O Netbeans ira sugerir a criação do id para hierarquia da classe, para criar o id – que será o id
da tabela no banco de dados; insira o código abaixo antes do atributo idAnimal. Não deixe de
fazer as importações sugeridas pelo Netbeans, porém selecione sempre as que começam com
javax.persistence
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int idAnimal;
Figura 40 ‐ A criação do id para hierarquia da classe
Benefrancis do Nascimento 51
SISTEMA WEB
Figura 41 ‐ Os atributos da classe animal que serão persistidos
Benefrancis do Nascimento 52
SISTEMA WEB
Para encapsular os campos da classe animal acesse o menú refatorar / encapsular campos. A
tela abaixo será aberta. Selecione todos os campos e clique em refatorar.
Figura 42 ‐ Encapsulando campos da classe Animal
Figura 43 ‐ Métodos construtores para a classe Animal
Benefrancis do Nascimento 53
SISTEMA WEB
A classe Cachorro
Exibimos abaixo a classe Cachorro já com as devidas anotações e o método construtor.
Figura 44 ‐ A classe Cachorro já com as devidas anotações e o método construtor.
Benefrancis do Nascimento 54
SISTEMA WEB
A classe Gato
Exibimos abaixo a classe Gato já com as devidas anotações e o método construtor.
Figura 45 ‐ A classe Gato já com as devidas anotações e o método construtor
Benefrancis do Nascimento 55
SISTEMA WEB
Iniciaremos a codificação da classe abstrata Servico.
Figura 46 ‐ A classe abstrata serviço
A seguir os métodos salvar, consultar, alterar e excluir da classe Servico. Quando estiver
incluindo os métodos abaixo na classe Servico o Netbeans irá sugerir a criação dos métodos na
classe ServicoDAO. Aceite a sugestão.
Benefrancis do Nascimento 56
SISTEMA WEB
public static boolean salvar(Servico s) {
return ServicoDAO.salvar(s);
}
public static boolean salvar(Animal a) {
return ServicoDAO.salvar(a);
}
public static Servico consultar(int idServico) {
return ServicoDAO.consultar(idServico);
}
public static Collection<Servico> consultar(Animal a) {
return ServicoDAO.consultar(a);
}
public static Collection<Servico> consultar() {
return ServicoDAO.consultar();
}
public static boolean alterar(Servico s) {
return ServicoDAO.alterar(s);
}
public static boolean excluir(Servico s) {
return ServicoDAO.excluir(s);
}
public static boolean excluir(Animal a) {
return ServicoDAO.excluir(a);
}
Benefrancis do Nascimento 57
SISTEMA WEB
Iniciaremos o mapeamento objeto relacional da classe abstrata Servico.
Precisamos informar ao Hibernate que a classe Servico dará origem a objetos que serão
persistidos em banco de dados. Para isso utilizamos a seguinte anotação:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "tipo")
As anotações acima deverão ser inseridas antes do nome da classe. Veja imagem abaixo:
Figura 47 ‐ A classe Servico dará origem a objetos que serão persistidos em banco de dados
Benefrancis do Nascimento 58
SISTEMA WEB
As constantes não serão mapeadas.
Figura 48 ‐ Informando ao Hibernate quais os atributos da classe Servico que serão persistidos
Benefrancis do Nascimento 59
SISTEMA WEB
Para encapsular os campos da classe Servico acesse o menú refatorar / encapsular campos. A
tela abaixo será aberta. Selecione todos os campos e clique em refatorar.
Figura 49 ‐ Encapsulando campos da classe Servico
SISTEMA WEB
Figura 50 ‐ Métodos construtores para a classe Servico
A classe Banho
Abaixo o código e anotações da classe Banho
Figure 2 ‐ A classe Banho
Benefrancis do Nascimento 61
SISTEMA WEB
A classe Consulta
Abaixo o código e anotações da classe Consulta
Figure 3 ‐ A classe consulta
Benefrancis do Nascimento 62
SISTEMA WEB
A classe Tosa
Abaixo o código e anotações da classe Tosa
A classe Vacina
Abaixo o código e anotações da classe Vacina
Benefrancis do Nascimento 63
SISTEMA WEB
SISTEMA WEB
Neste momento atualizaremos o arquivo hibernate.cfg.xml. Deveremos incluir informação
sobre as classes que foram mapeadas em nossa aplicação Java.
Abra o arquivo e inclua entre as tags <session‐factory> </session‐factory> o código abaixo:
<mapping class="br.com.benefrancis.controle.Pessoa" />
<mapping class="br.com.benefrancis.controle.PF" />
<mapping class="br.com.benefrancis.controle.PJ" />
<mapping class="br.com.benefrancis.controle.DocReceita" />
<mapping class="br.com.benefrancis.controle.CPF" />
<mapping class="br.com.benefrancis.controle.CNPJ" />
<mapping class="br.com.benefrancis.controle.Telefone" />
<mapping class="br.com.benefrancis.controle.Endereco" />
<mapping class="br.com.benefrancis.controle.Animal" />
<mapping class="br.com.benefrancis.controle.Cachorro" />
<mapping class="br.com.benefrancis.controle.Gato" />
<mapping class="br.com.benefrancis.controle.Servico" />
<mapping class="br.com.benefrancis.controle.Banho" />
<mapping class="br.com.benefrancis.controle.Consulta" />
<mapping class="br.com.benefrancis.controle.Tosa" />
<mapping class="br.com.benefrancis.controle.Vacina" />
Benefrancis do Nascimento 65
SISTEMA WEB
Para obter conexões com o Hibernate criamos a classe ConexaoHibernate no pacote modelo.
O código poderá ser visualizado na imagem abaixo:
Figura 51 ‐ A classe ConexaoHibernate
A classe ConexaoHibernate possui um bloco estático no qual por meio da variável
sessionFactory capturamos as configurações inseridas no arquivo hibernate.cfg.xml. Criamos
também um método estático getInstance() que retornará uma sessão.
Benefrancis do Nascimento 66
SISTEMA WEB
Criaremos a classe TestandoHibernate no pacote modelo. Esta classe será utilizada para testar
o funcionamento do nosso sistema. A principio criaremos um método estático para gerar as
tabelas no banco de dados. E um método main, pois neste momento poderemos executar o
sistema para testar o funcionamento.
Figura 52 ‐ Testando o funcionamento do Hibernate
Podemos agora executrar este arquivo por meio do atalho [ shift + F6 ] . O console irá imprimir
diversas informações e entre elas os comandos do SQL para criação das tabelas no banco de
dados. Abaixo, segue o que foi imprimido:
Benefrancis do Nascimento 67
SISTEMA WEB
Figura 53 ‐ Saída do console da aplicação quando executamos o método gerarTabelas da classe
TestandoHibernate
Agora voltaremos para o HeidiSQL para verificar as tabelas criadas pela nossa aplicação:
Figura 54 ‐ Verificando no HeidiSql as tabelas geradas
Benefrancis do Nascimento 68
SISTEMA WEB
SISTEMA WEB
Introdução
Programaremos os métodos das classes de acesso e manipulação dos dados de nossa
aplicação.
Quando estávamos criando os métodos salvar, consultar, alterar e excluir das classes do
pacote controle, o Netbeans nos sugeria criar os métodos nas classes DAO do pacote modelo.
Caso tenha aceitado conforme orientei os métodos foram criados nas respectivas classes DAO.
Porém o conteúdo dos métodos lança uma exceção dizendo que o método não foi
implementado. Veja a exceção abaixo:
Figura 55 ‐ Exceção de método que não foi implementado
Deveremos inserir o conteúdo dos métodos das classes DAO. E esta será a nossa atividade
neste capitulo. Os códigos das classes DAO serão muito semelhantes aos métodos das outras
classes de acesso e manipulação de dados. Vejam.
Para persistir e manipular os dados em nossa aplicação com segurança trabalharemos com o
conceito de transação. O hibernate possui o objeto Transaction para esse fim. Desta forma,
em caso de erro durante o processamento a aplicação fará o rollback, mantendo assim nosso
banco de dados integro.
Toda comunicação nesses métodos dependerão de uma sessão com o hibernate, por esse
motivo utilizaremos a variável session do tipo org.hibernate.Session.
Benefrancis do Nascimento 70
SISTEMA WEB
Salvar
Neste método salvaremos uma pessoa no banco de dados. O método espera como parâmetro
um objeto do tipo Pessoa. Poderemos enviar pessoas físicas e pessoas jurídicas, pois este é um
clássico método polifórmico.
Figura 56 ‐ Método salvar da classe PessoaDAO
Para salvar uma pessoa no banco de dados utilizamos polimorfismo por meio de método
polifórmico. Repare que no método salvar o parâmetro esperado é do tipo Pessoa, entretanto
se enviarmos uma PF ou PJ as informações serão salvas corretamente nas tabelas do banco de
dados. Outra técnica importante da orientação a objeto empregada nesta classe é a
sobrecarga de métodos presente no método consultar (veja a assinatura dos métodos).
Benefrancis do Nascimento 71
SISTEMA WEB
Figura 57 ‐ Consultando Pessoa pelo id
Benefrancis do Nascimento 72
SISTEMA WEB
Usaremos a sobrecarga de métodos para criar mais uma opção de consulta. Agora
consultaremos todas as pessoas cadastradas.
Figura 58 ‐ Consultando todas as pessoas cadastradas
Benefrancis do Nascimento 73
SISTEMA WEB
Consultaremos pessoa pelo nome. Este método espera como parâmetro uma String e
retornará uma coleção de objetos do tipo pessoa.
Figura 59‐ Consultando pessoas pelo nome
Benefrancis do Nascimento 74
SISTEMA WEB
Alterando pessoas
Agora abordaremos o método alterar. Este método recebe um objeto do tipo pessoa como
parâmetro e retorna verdadeiro; se a atualização for concretizada, ou falso caso aconteça
alguma exceção.
Figura 60 ‐ Alterando pessoa
Benefrancis do Nascimento 75
SISTEMA WEB
Excluindo pessoas
Codificaremos o método excluir. Este método recebe como parâmetro um objeto do tipo
pessoa e retornará verdadeiro; se a transação concluir com sucesso, ou falso caso aconteça
alguma exceção.
Figura 61 ‐ Excluindo pessoas
Benefrancis do Nascimento 76
SISTEMA WEB
Salvar
Neste método salvaremos um animal no banco de dados. O método espera como parâmetro
um objeto do tipo Animal. Poderemos enviar cachorros ou gatos, pois este é um clássico
método polifórmico.
Figura 62 ‐ Salvando animais
Benefrancis do Nascimento 77
SISTEMA WEB
Criamos um método para salvar todos os animais de uma pessoa.
Figura 63 ‐ Salvando todos os animais de uma pessoa
Benefrancis do Nascimento 78
SISTEMA WEB
Codificaremos o método que consulta animal pelo id
Figura 64 ‐ Consultando animais pelo Id
Benefrancis do Nascimento 79
SISTEMA WEB
Alterando animais
Codificaremos o método alterar da classe animalDAO.
Figura 65 ‐ Alterando animal
Benefrancis do Nascimento 80
SISTEMA WEB
Excluindo animal
Abaixo o código do método excluir da classe AnimalDAO.
Figura 66 ‐ Excluindo animal
Benefrancis do Nascimento 81
SISTEMA WEB
Codificaremos um método para exclusão de todos os animais de uma pessoa.
Figura 67 ‐ Excluindo todos os animais de uma pessoa
Benefrancis do Nascimento 82
SISTEMA WEB
Iniciaremos agora a codificação dos métodos da classe ServicoDAO.
Salvar
Abaixo o método salvar da classe ServicoDAO.
Figura 68 ‐ Salvando serviços
Benefrancis do Nascimento 83
SISTEMA WEB
Abaixo o código para consulta de serviço pelo id.
Figura 69 ‐ Consultando serviço pelo id
Benefrancis do Nascimento 84
SISTEMA WEB
Codificaremos um método para salvar todos os serviços de um animal.
Figura 70 ‐ Salvando todos os serviços de um animal
Benefrancis do Nascimento 85
SISTEMA WEB
Codificaremos o método que deverá retornar todos serviços realizados em um animal.
Figura 71 ‐ Consultando todos serviços realizados em um animal
Benefrancis do Nascimento 86
SISTEMA WEB
Codificaremos um método para que seja possível excluir todos os serviços de um animal.
Figura 72 ‐ Excluindo todos os serviços de um animal
Benefrancis do Nascimento 87
SISTEMA WEB
Alterando serviço
Desenvolvendo método para alterar um serviço.
Figura 73 ‐ Alterando serviço
Benefrancis do Nascimento 88
SISTEMA WEB
Excluindo serviço
Abaixo o código para exclusão de serviço
Figura 74 ‐ Excluindo serviço
Benefrancis do Nascimento 89
SISTEMA WEB
Iniciaremos agora a codificação dos métodos da classe TelefoneDAO.
salvar
Figura 75 ‐ Salvando um telefone
Benefrancis do Nascimento 90
SISTEMA WEB
Figura 76 ‐ Consultando telefone pelo id
Benefrancis do Nascimento 91
SISTEMA WEB
O método abaixo prove a consulta de todos os telefones de uma pessoa.
Figura 77 ‐ Consultando todos os telefones de uma pessoa
Benefrancis do Nascimento 92
SISTEMA WEB
O método abaixo salva todos os telefones de uma pessoa
Figura 78 ‐ Salvando todos os telefones de uma pessoa
Benefrancis do Nascimento 93
SISTEMA WEB
Excluindo telefone
O método abaixo exclui um telefone da base de dados
Figura 79 ‐ Excluindo telefone
Benefrancis do Nascimento 94
SISTEMA WEB
O código abaixo exclui todos os telefones de uma pessoa
Figura 80 ‐ Excluindo todos os telefones de uma pessoa
Benefrancis do Nascimento 95
SISTEMA WEB
Iniciaremos agora a codificação dos métodos da classe EnderecoDAO.
Salvar
O método abaixo salva um endereço no banco de dados
Figura 81 ‐ Salvando todos os endereços de uma pessoa
Benefrancis do Nascimento 96
SISTEMA WEB
O método abaixo consulta endereço pelo Id.
Figura 82‐ Consultando endereço pelo id
Benefrancis do Nascimento 97
SISTEMA WEB
O método abaixo consulta todos os endereços de uma pessoa.
Figura 83 ‐ Consultando todos os endereços de uma pessoa
Benefrancis do Nascimento 98
SISTEMA WEB
Alterando um endereço
Abaixo codificaremos um método para alterar endereço
Figura 84 ‐ Alterando um endereço
Benefrancis do Nascimento 99
SISTEMA WEB
Excluindo um endereço
O método abaixo exclui um endereço
Figura 85 ‐ Excluindo endereço
Benefrancis do Nascimento 100
SISTEMA WEB
O método abaixo exclui todos os endereços de uma pessoa.
Figura 86 ‐ Excluindo todos os endereços de uma pessoa
Benefrancis do Nascimento 101
SISTEMA WEB
SISTEMA WEB
Testaremos agora os métodos das classes do pacote DAO. Para isso incluiremos um método a
classe TestandoHibernate.
Neste método invocamos apenas o método salvar da classe Pessoa, porém todos os outros
objetos a ela relacionados foram criados.
Veja código abaixo:
private static void persistindo() throws Exception {
PF pf = new PF();
pf.setNome("Benefrancis do Nascimento");
pf.setEmail("benefrancis@gmail.com");
pf.setSenha("root");
DocReceita cpf = new CPF("24878891874");
pf.setDocReceita(cpf);
cpf.setPessoa(pf);
Endereco end = new Endereco();
end.setBairro("Jd Leni");
end.setCep("05818250");
end.setCidade("São Paulo");
end.setLogradouro("Rua faustino Allende");
end.setNumero("39");
end.setUf("SP");
end.setPessoa(pf);
Benefrancis do Nascimento 103
SISTEMA WEB
Collection<Endereco> e = new ArrayList<Endereco>();
e.add(end);
pf.setEndereco(e);
Telefone t = new Telefone();
t.setDdd(11);
t.setNumero("8281‐6536");
t.setPessoa(pf);
Collection<Telefone> tel = new ArrayList<Telefone>();
tel.add(t);
pf.setTelefone(tel);
Animal a = new Cachorro();
Date d = new Date(2000, 5, 15);
a.setDataNascimento(d);
a.setNome("Pluto");
a.setRaca("Vira lata");
a.setSexo('M');
a.setObservacao("Cachorro muito sem vergonha!");
a.setPessoa(pf);
Servico s = new Banho();
Date diaBanho = new Date(2010, 11, 18);
s.setData(diaBanho);
Benefrancis do Nascimento 104
SISTEMA WEB
s.setDescricao("Banho completo");
s.setValor(20.95);
s.setAnimal(a);
Collection<Servico> serv = new ArrayList<Servico>();
serv.add(s);
a.setServico(serv);
Collection<Animal> ani = new ArrayList<Animal>();
ani.add(a);
pf.setAnimal(ani);
pf.salvar(pf);
}
Verificaremos agora no HeidiSql se todos os campos das tabelas foram preenchidos
corretamente.
Para isso executaremos o seguinte comando:
SISTEMA WEB
Figura 87 ‐ Resultado da consulta dos dados gravados no banco de dados
Benefrancis do Nascimento 106
SISTEMA WEB
SISTEMA WEB
Mapa do site
O nosso sistema web deverá seguir a estrutura representada no mapa do site abaixo:
Index.jsp
Inicio.jsp
Detalhe_animal.jsp
Animal.jsp
Editar_animal.jsp
Excluir_animal.jsp
Pessoa.jsp
Detalhe_pessoa.jsp
Editar_pessoa.jsp
Excluir_pessoa.jsp
Servico.jsp
Detalhe_servico.jsp
Editar_servico.jsp
Excluir_servico.jsp
Figura 88‐ Mapa do site
Agora trabalharemos com a camada de apresentação e, desta forma será necessário criar
diretórios para armazenar imagens, css, javascript e etc. Para criar um diretório no seu projeto
web.
Clique com o botão direito do mouse em cima da pasta Páginas web um menú suspenso
aparecerá; nele selecione: Novo / Diretório. A janela abaixo será exibida.
Benefrancis do Nascimento 108
SISTEMA WEB
Figura 89 ‐ Criando um novo diretório acessível para a internet no seu projeto web
Crie os diretórios conforme tabela abaixo:
Tabela 1 – Os diretórios do nosso sistema web. Neles estão as imagem, css, javascript e etc. (Solicite
para o professor pelo e‐mail: Benefrancis@gmail.com)
NOME Motivo
images Será o local onde guardaremos as imagens do
nosso sistema web.
css Onde serão inseridos os arquivos de estilo.
javascript Onde estarão os arquivos Java script
geral Onde estará o conteúdo html que aparecerá
em todas as telas:
head.jsp – onde faremos os importes
necessários.
topo.jsp – topo do site e o menú
rodapé.jsp – rodapé do site
inicio.jsp – tela de boas vindas do
sistema (após autenticação)
Benefrancis do Nascimento 109
SISTEMA WEB
Figura 90 ‐ Importando todas as classes do pacote controle
Portanto inclua a tag <%@page import="br.com.benefrancis.controle.*"%> em todas as
páginas de nosso sistema web.
Index.jsp
O arquivo index.jsp deverá está na raiz da nossa aplicação web (diretório Páginas web).
Na pagina index, ou seja, a primeira página que será aberta em nossa aplicação.
Desenvolveremos uma tela onde o usuário deverá ser autenticado.
A tela deverá ter um formulário. Veja a tag:
<form name="FrmLogin" id="FrmLogin" method="POST" action="index.jsp">
<!—Incluir os campos do formulário aqui ‐‐>
</form>
Deverá possuir um campo oculto, dois campos editáveis e um botão obedecendo ao que
descreve a tabela abaixo:
hidden op ‐ 1
SISTEMA WEB
O design semelhante à tela da imagem a seguir:
Figura 91 ‐ Layout da página index.jsp
SISTEMA WEB
Figura 92 ‐ Autenticando ‐ index.jsp
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="br.com.benefrancis.controle.*"%>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http‐equiv="Content‐Type" content="text/html; charset=UTF‐8">
<title>PETSHOP</title>
<link rel="stylesheet" type="text/css" href="css/Estilo.css">
</head>
<body>
Benefrancis do Nascimento 112
SISTEMA WEB
<form name="FrmLogin" id="FrmLogin" method="POST" action="index.jsp">
<table width="103%" border="0" cellpadding="0" cellspacing="0"align="center" >
<tr>
<td align="center" valign="middle">
<table width="750" border="0" cellspacing="0" cellpadding="0" align="center"
>
<tr>
<td width="40%" height="500" align="center" valign="middle">
<img src="images/login.png" alt="Petshop"/>
</td>
<td width="60%" align="center" valign="middle">
<table border="0" >
<tr>
<td class="Txt">USUARIO</td>
<td class="Txt"><input type="text" name="usuario" value=""
size="15"/></td>
</tr>
<tr>
<td class="Txt">SENHA</td>
<td class="Txt"><input type="password" name="senha" value=""
size="15" /></td>
</tr>
<tr>
<td colspan="2"><hr size="1"><input type="hidden" name="op"
value="1" /></td>
</tr>
<tr>
Benefrancis do Nascimento 113
SISTEMA WEB
<td></td>
<td><input type="submit" value="Autenticar"
name="btn_autenticar" /></td>
</tr>
<tr><td colspan="2" class="Txt">
<%
String usuario = "";
String senha = "";
int op = 0;
try {
op = Integer.parseInt(request.getParameter("op"));
} catch (Exception ex) {}
try {
if (op == 1) {
usuario = request.getParameter("usuario");
senha = request.getParameter("senha");
Autenticavel p = new PF().autenticar(usuario, senha);
if (p != null) {
session.setAttribute("Usuario", p);
String novaURL = "geral/inicio.jsp";
response.sendRedirect(novaURL);
} else {
out.print("<br>");
out.print("<center><font face='verdana' color='red' " +
"size='2'>Usuario ou senha inválidos</font></center>");
out.print("<br>");
Benefrancis do Nascimento 114
SISTEMA WEB
}
}
} catch (Exception e) {}
%>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
</html>
Benefrancis do Nascimento 115
SISTEMA WEB
Benefrancis do Nascimento 116
SISTEMA WEB
Head.jsp
Abaixo o conteúdo do arquivo head.jsp
Figura 93 ‐ conteúdo do arquivo head.jsp
Benefrancis do Nascimento 117
SISTEMA WEB
Topo.jsp
Abaixo o conteúdo do arquivo topo.jsp
Figura 94 ‐ Código do arquivo topo.jsp
Rodapé.jsp
Abaixo o código do arquivo rodapé.jsp
Figura 95 ‐ Código do arquivo rodapé.jsp
Benefrancis do Nascimento 118
SISTEMA WEB
Inicio.jsp
Abaixo o código do arquivo inicio.jsp. A tela de boas vindas da nossa aplicação.
Figura 96 ‐ Código do arquivo inicio.jsp
Benefrancis do Nascimento 119
SISTEMA WEB
Abaixo a tela de boas vindas da nossa aplicação.
Figura 97 ‐ A tela de boas vindas da nossa aplicação
Benefrancis do Nascimento 120
SISTEMA WEB
SISTEMA WEB
Pessoa.jsp
O arquivo pessoa.jsp do diretório cadastros será a nossa tela para cadastramento de pessoas
em nosso sistemas. Uma pessoa será um usuário ‐ utilizador do sistema. O sistema deverá
verificar se existe uma pessoa cadastrada no sistema. Para fazer a verificação deveremos
verificar, antes do cadastramento de uma pessoa, se:
1º. O e‐mail informado já está registrado no banco de dados;
2º. Se o documento da receita já está cadastrado no sistema.
A tela deverá possuir um formulário. Veja a tag:
<form action="pessoa.jsp" method="post" name="Formulario" >
<!—Incluir os elementos do formulário aqui ‐‐>
</form>
Elementos do formulário
Abaixo segue a lista dos elementos e suas propriedades:
Tabela 2 ‐ Elementos do formulário da página para cadastramento de pessoa
SISTEMA WEB
9 TelCelDDD text 2 2
18 uf select
20 op hidden 1
Exibiremos abaixo o código fonte da página de cadastramento de pessoas. Não será necessário
digitar o código abaixo, pois o arquivo foi disponibilizado.
Benefrancis do Nascimento 123
SISTEMA WEB
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="br.com.benefrancis.controle.*" %>
<%@page import="br.com.benefrancis.util.Util" %>
<%@page import="java.util.ArrayList" %>
<%@page import="java.util.Date" %>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<form action="pessoa.jsp" method="post" name="Formulario" >
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td colspan="2">
<%
int op = 0;
String tipo = null;
Pessoa pessoa = null;
String username = null;
String senha = null;
DocReceita docReceita = null;
try {
op = Integer.parseInt(Util.SoNumero(request.getParameter("op")));
} catch (Exception ex) {
Benefrancis do Nascimento 124
SISTEMA WEB
}
try {
if (op == 1) {//O formulário foi enviado
try {
tipo = request.getParameter("Tipo");
} catch (Exception ex) {
}
if (tipo == "PJ") {
String razao = null;
try {
razao = request.getParameter("razao");
docReceita = new CNPJ(request.getParameter("CNPJ"));
//Criando uma pessoa juridica
pessoa = new PJ();
pessoa.setDocReceita(docReceita);
pessoa.setNome(razao);
docReceita.setPessoa(pessoa);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("<center>" +
"<font face='verdana' color='red' " +
"size='2'>Erro ao cadastrar Utilizador." +
"<br /> Verifique os dados de Pessoa Jurídica" +
" tente novamente</font></center>");
}
} else {
try {
String nome = request.getParameter("Nome");
Benefrancis do Nascimento 125
SISTEMA WEB
docReceita = new CPF(request.getParameter("CPF"));
//Criando uma pessoa física
pessoa = new PF();
pessoa.setDocReceita(docReceita);
pessoa.setNome(nome);
docReceita.setPessoa(pessoa);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("<center>" +
"<font face='verdana' color='red' " +
" size='2'>Erro ao cadastrar Utilizador." +
"<br /> Verifique os dados de Pessoa física" +
" tente novamente</font></center>");
}
}
//Já existe pessoa com o CPF ou CNPJ informado?
if (pessoa.existe(docReceita) == true) {
if (pessoa.getTipo() == 1) {
throw new RuntimeException("<br>" +
"<center><font face='verdana' " +
"color='red' size='2'><br />" +
"já existe cliente cadastrado com" +
" o CPF informado</font></center><br>");
} else {
throw new RuntimeException("<br>" +
"<center><font face='verdana' " +
"color='red' size='2'><br />" +
"já existe cliente cadastrado com" +
" o CNPJ informado</font></center><br>");
Benefrancis do Nascimento 126
SISTEMA WEB
}
}
try {
username = request.getParameter("email");
senha = request.getParameter("senha");
} catch (Exception ex) {
throw new RuntimeException("Verifique " +
"se o e‐mail e senha foram " +
"digitados corretamente");
}
if (username == "" || senha == "") {
throw new RuntimeException("<center>" +
"<font face='verdana' color='red'" +
" size='2'><br />Verifique o e‐mail " +
"e senha foram digitados corretamente" +
"</font></center>");
} else if (pessoa.existe(username) == true) {
throw new RuntimeException("<br><center>" +
"<font face='verdana' color='red' " +
" size='2'><br />já existe usuário " +
"cadastrado com o e‐mail digitado</font>" +
"</center><br>");
} else {
pessoa.setEmail(username);
pessoa.setSenha(senha);
}
//Telefones da pessoa
ArrayList<Telefone> telefone = new ArrayList<Telefone>();
Benefrancis do Nascimento 127
SISTEMA WEB
try {
int dddTel = Integer.parseInt(Util.SoNumero(request.getParameter("TelDDD")));
String Tel = Util.SoNumero(request.getParameter("Tel"));
if (dddTel != 0 && Tel != "") {
telefone.add(new Telefone(dddTel, Tel, pessoa));
}
} catch (Exception eTel) {
}
try {
int dddCel = Integer.parseInt(Util.SoNumero(request.getParameter("TelCelDDD")));
String Cel = Util.SoNumero(request.getParameter("TelCel"));
if (dddCel != 0 && Cel != "") {
telefone.add(new Telefone(dddCel, Cel, pessoa));
}
} catch (Exception eCel) {
}
try {
int dddFax = Integer.parseInt(Util.SoNumero(request.getParameter("TelFaxDDD")));
String Fax = Util.SoNumero(request.getParameter("TelFax"));
if (dddFax != 0 && Fax != "") {
telefone.add(new Telefone(dddFax, Fax, pessoa));
}
} catch (Exception eFax) {
}
//Endereços da pessoa
ArrayList<Endereco> end = new ArrayList<Endereco>();
Endereco endereco = new Endereco();
String logradouro = "";
String numero = "";
Benefrancis do Nascimento 128
SISTEMA WEB
String complemento = "";
String bairro = "";
String cep = "";
String cidade = "";
String uf = "";
try {
logradouro = request.getParameter("logradouro");
numero = request.getParameter("Numero");
complemento = request.getParameter("Complemento");
bairro = request.getParameter("Bairro");
cep = Util.SoNumero(request.getParameter("CEP"));
cidade = request.getParameter("Cidade");
uf = request.getParameter("uf");
if (logradouro == "" || numero == ""
|| bairro == "" || cidade == ""
|| uf == "" || cep == "") {
throw new RuntimeException("O endereço deve conter" +
" logradouro, número, Bairro, " +
"Cidade, Estado e CEP");
} else {
endereco.setLogradouro(logradouro);
endereco.setBairro(bairro);
endereco.setCep(cep);
endereco.setCidade(cidade);
endereco.setComplemento(complemento);
endereco.setNumero(numero);
endereco.setUf(uf);
endereco.setPessoa(pessoa);
end.add(endereco);
Benefrancis do Nascimento 129
SISTEMA WEB
}
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Logradouro é um campo obrigatório");
}
//Salvando a pessoa e todos os seua relacionamentos em banco de dados
//Adicionando a Pessoa
pessoa.setTelefone(telefone);
pessoa.setEndereco(end);
pessoa.setAnimal(null);
//Salvando:
pessoa.salvar(pessoa);
out.print("<br>");
out.print("<br>");
out.print("<br>");
out.print("<center><font face='verdana' color='blue' size='2'>Utilizador cadastrado com
sucesso</font></center>");
out.print("<br>");
out.print("<br>");
out.print("<br>");
} else {//Se op for diferente de 1
%>
</td>
</tr>
<tr>
<td width="162" class="Txt">Tipo</td>
<td width="436" class="Txt">
<select name="Tipo" id="Tipo"
onChange="showCampo(document.forms[0][this.name].options[document.forms[0][this.name].selecte
Benefrancis do Nascimento 130
SISTEMA WEB
dIndex].value,'campo_hidden');">
<option value="0">Selecione</option>
<option value="PJ">PJ</option>
<option value="PF">PF</option>
</select>
</td>
</tr>
<tr id="campo_hiddenPJ" style="display:none">
<td height="104" colspan="2" valign="top">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<!‐‐DWLayoutTable‐‐>
<tr>
<td height="1" colspan="2" valign="top"><hr size="1"></td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>PESSOA JURÍDICA
</strong></td>
</tr>
<tr>
<td width="23%" height="27" valign="top" class="Txt">RAZÃO SOCIAL</td>
<td width="77%" valign="top" class="Txt"><input name="razao" type="text"
id="razao" size="50" maxlength="100">
<span class="style1">*</span></td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">CNPJ</td>
<td valign="top" class="Txt"><input name="CNPJ" type="text" id="CNPJ"
OnKeyPress="formatar(this, '##.###.###/####‐##')" onKeyUp="javascript:Sonumero(this)" size="24"
maxLength="18" >
Benefrancis do Nascimento 131
SISTEMA WEB
+ </td>
</tr>
</table>
</td>
</tr>
<tr id="campo_hiddenPF" style="display:none">
<td height="104" colspan="2" valign="top">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<!‐‐DWLayoutTable‐‐>
<tr>
<td height="1" colspan="2" valign="top"><hr size="1"></td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>PESSOA FÍSICA
</strong></td>
</tr>
<tr>
<td width="20%" valign="top" class="Txt">Nome Completo </td>
<td width="80%" valign="top" class="Txt"><input name="Nome" type="text"
id="Nome" size="50" maxlength="100">
<span class="style1">*</span></td>
</tr>
<tr>
<td width="25%" valign="top" class="Txt">CPF</td>
<td width="75%" valign="top" class="Txt"><input name="CPF" type="text" id="CPF"
OnKeyPress="formatar(this, '###.###.###‐##')" onKeyUp="javascript:Sonumero(this)" size=17
maxlength="14">
Benefrancis do Nascimento 132
SISTEMA WEB
+ </td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="contato" height="104" colspan="2" valign="top">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<!‐‐DWLayoutTable‐‐>
<tr>
<td colspan="2"><hr size="1"></td>
<td></td>
</tr>
<tr>
<td colspan="2" class="Txt"><strong>USUARIO DO SISTEMA</strong></td>
<td></td>
</tr>
<tr>
<td width="162" height="27" valign="top" class="Txt">E‐mail</td>
<td width="436" valign="top" class="Txt"><input name="email" type="text"
id="email" size="50" maxlength="200">
<span class="style1">*</span></td>
</tr>
<tr>
<td width="162" height="27" valign="top" class="Txt">Senha</td>
<td width="436" valign="top" class="Txt"><input name="senha" type="text"
Benefrancis do Nascimento 133
SISTEMA WEB
id="senha" size="50" maxlength="200">
<span class="style1">*</span></td>
</tr>
<tr>
<td colspan="2"><hr size="1"></td>
<td></td>
</tr>
<tr>
<td colspan="2" class="Txt"><strong>CONTATO</strong></td>
<td></td>
</tr>
<tr>
<td class="Txt">Telelefone</td>
<td class="Txt">(<input name="TelDDD" type="text" id="TelDDD"
onKeyUp="javascript:Sonumero(this)" size="2" maxlength="2">) <input name="Tel" type="text" id="Tel"
OnKeyPress="formatar(this, '####‐####')" onKeyUp="javascript:Sonumero(this)" size="12"
maxlength="10"></td>
<td></td>
</tr>
<tr>
<td class="Txt">Celular</td>
<td class="Txt">(<input name="TelCelDDD" type="text"
onKeyUp="javascript:Sonumero(this)" size="2" maxlength="2">) <input name="TelCel" type="text"
OnKeyPress="formatar(this, '####‐####')" onKeyUp="javascript:Sonumero(this)" size="12"
maxlength="10"></td>
<td></td>
</tr>
<tr>
<td class="Txt">Fax</td>
<td class="Txt">(<input name="TelFaxDDD" type="text"
onKeyUp="javascript:Sonumero(this)" size="2" maxlength="2">) <input name="TelFax" type="text"
OnKeyPress="formatar(this, '####‐####')" onKeyUp="javascript:Sonumero(this)" size="12"
Benefrancis do Nascimento 134
SISTEMA WEB
maxlength="10"></td>
<td></td>
</tr>
<tr>
<td colspan="2"><hr size="1"></td>
<td></td>
</tr>
<tr>
<td colspan="2" class="Txt"><strong>ENDEREÇO</strong></td>
<td></td>
</tr>
<tr>
<td class="Txt">LOGRADOURO</td>
<td class="Txt"><input name="logradouro" type="text" size="50"
maxlength="50"></td>
<td></td>
</tr>
<tr>
<td class="Txt">Nº</td>
<td class="Txt"><input name="Numero" type="text" size="10" maxlength="10"></td>
<td></td>
</tr>
<tr>
<td class="Txt">Complemento</td>
<td class="Txt"><input name="Complemento" type="text" size="30"
maxlength="50"></td>
<td></td>
</tr>
<tr>
<td class="Txt">Bairro</td>
Benefrancis do Nascimento 135
SISTEMA WEB
<td class="Txt"><input name="Bairro" type="text" size="30" maxlength="50"></td>
<td></td>
</tr>
<tr>
<td class="Txt">Cidade</td>
<td class="Txt"><input name="Cidade" type="text" size="30" maxlength="50"></td>
<td></td>
</tr>
<tr id="estados" >
<td class="Txt">Estado</td>
<td class="Txt">
<select name="uf">
<option value="">Selecione</option>
<option value="AC">AC</option>
<option value="AL">AL</option>
<option value="AP">AP</option>
<option value="AM">AM</option>
<option value="BA">BA</option>
<option value="CE">CE</option>
<option value="DF">DF</option>
<option value="ES">ES</option>
<option value="GO">GO</option>
<option value="MA">MA</option>
<option value="MT">MT</option>
<option value="MS">MS</option>
<option value="MG">MG</option>
<option value="PA">PA</option>
<option value="PB">PB</option>
<option value="PR">PR</option>
Benefrancis do Nascimento 136
SISTEMA WEB
<option value="PE">PE</option>
<option value="PI">PI</option>
<option value="RJ">RJ</option>
<option value="RN">RN</option>
<option value="RS">RS</option>
<option value="RO">RO</option>
<option value="RR">RR</option>
<option value="SC">SC</option>
<option value="SP">SP</option>
<option value="SE">SE</option>
<option value="TO">TO</option>
</select></td>
<td></td>
</tr>
<tr>
<td class="Txt">CEP</td>
<td class="Txt">
<input name="CEP" type="text" OnKeyPress="formatar(this, '#####‐###')"
onKeyUp="javascript:Sonumero(this)" size="12" maxlength="9">
+ </td>
<td></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"> </td>
<td></td>
</tr>
<tr><td> </td></tr>
Benefrancis do Nascimento 137
SISTEMA WEB
<tr>
<td class="Txt" width="20"> </td>
<td class="Txt" width="80" align="left">
<input type="hidden" name="op" value="1" />
<input type="button" name="Btn_Entrar" value="Cadastrar"
onClick="Validar(document.Formulario);" >
</td>
</tr>
<tr><td> </td></tr>
<%}
} catch (Exception e) {
out.print("<br>");
out.print("<center><font face='verdana' color='red' size='2'>"
+ "Erro ao cadastrar Utilizador</font></center>");
out.print(e.getMessage());
}
%>
<tr>
<td colspan="2">
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</form>
</body>
</html>
Figura 98 ‐ Código fonte do arquivo pessoa.jsp do diretório cadastros
SISTEMA WEB
Abaixo o layout da página de cadastramento de pessoa.
Figura 99 ‐ Layout da página de cadastramento de pessoa
Animal.jsp
Para cadastrar um animal o usuário deverá primeiro selecionar o dono do animal e em seguida
pressionar o botão prosseguir. Em seguida digitar os dados do animal e por fim pressionar o
botão cadastrar.
Elementos do formulário
Abaixo segue a lista dos elementos e suas propriedades:
Benefrancis do Nascimento 139
SISTEMA WEB
Tabela 3 ‐ Elementos do formulário para cadastramento de animal
0 idPessoa hidden 1
6 observacao textarea
7 op hidden 2
Codificaremos agora a página para cadastramento de animais.
Benefrancis do Nascimento 140
SISTEMA WEB
<%‐‐
Document : animal.jsp
Created on : 22/11/2010, 16:35:56
‐‐%>
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="br.com.benefrancis.controle.*" %>
<%@page import="br.com.benefrancis.util.Util" %>
<%@page import="java.util.List" %>
<%@page import="java.util.ListIterator" %>
<%@page import="java.util.ArrayList" %>
<%@page import="java.util.Collection" %>
<%@page import="java.util.Date" %>
<%
//Operações:
// 0 = nenhuma. Neste caso exibiremos o formulário pedindo para selecionar o
// dono do animal. Após selecionado submit será executado.
// 1 = buscar os animais do dono:
// 1a) Mostraremos os dados do dono(apagaremos o combobox de listagem de donos);
// 1b) Aguardamos que o usuário escolha o animal. Após selecionado submit será
executado.
// 2 = registraremos o serviço executado.
//Iniciando a variável op
Benefrancis do Nascimento 141
SISTEMA WEB
int op = 0;
//verificando a variável op enviada pelo formulário:
try {
op = Integer.parseInt(Util.SoNumero(request.getParameter("op")));
} catch (Exception ex) {
ex.printStackTrace();
}
List<Pessoa> pList = new ArrayList<Pessoa>();
%>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>CADASTRAMENTO DE
Benefrancis do Nascimento 142
SISTEMA WEB
ANIMAL DE ESTIMAÇÃO</strong></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<% if (op == 0) {%>
<tr>
<td colspan="2">
<form action="animal.jsp" method="post" name="Formulario" >
<table width="750" border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2">
<tr>
<td width="162" class="Txt">Dono do animal</td>
<td width="436" class="Txt">
<select name="idPessoa">
<option value="0"> Selecione </option>
<%
pList = Pessoa.consultar();
for (ListIterator iter = pList.listIterator(); iter.hasNext();) {
Benefrancis do Nascimento 143
SISTEMA WEB
Pessoa achei = (Pessoa) iter.next();
%>
<option value="<% out.print(achei.getIdPessoa());%>"><%
out.print(achei.getNome());%></option>
<%
}
%>
</select>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td class="Txt"> </td>
<td class="Txt"><input type="hidden" name="op" value="1" />
<input type="button" name="Btn_Entrar" value="Prosseguir >>"
onClick="ValidarRegistro1(document.Formulario);" >
</td>
</tr>
<tr>
<td colspan="2"> </td>
Benefrancis do Nascimento 144
SISTEMA WEB
</tr>
</table>
</form>
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
<% } else if (op == 1) {%>
<tr>
<td colspan="2">
<form action="animal.jsp" method="post" name="Formulario" >
<table width="750" border="0" cellpadding="0" cellspacing="0">
<%
int idPessoa =
Integer.parseInt(Util.SoNumero(request.getParameter("idPessoa")));
Pessoa donoAnimal = Pessoa.consultar(idPessoa);
%>
<tr>
<td colspan="2">
<input type="hidden" name="idPessoa"
value="<%out.print(donoAnimal.getIdPessoa());%>" />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
Benefrancis do Nascimento 145
SISTEMA WEB
<tr>
<td width="20%" class="TopoTit">CLIENTE: </td>
<td class="TextoTit"><% out.print(donoAnimal.getNome());%></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"><hr size="1"></td>
</tr>
<tr>
<td height="22" colspan="2" valign="top"
class="Txt"><strong>ANIMAL</strong></td>
</tr>
<tr>
<td colspan="2">
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<tr>
<td width="162" class="Txt">Tipo</td>
<td width="436" class="Txt">
<select name="tipoAnimal" id="tipoAnimal">
<option value="0">Selecione</option>
<option value="1">Cachorro</option>
<option value="2">Gato</option>
</select>
Benefrancis do Nascimento 146
SISTEMA WEB
</td>
</tr>
<tr>
<td width="162" height="27" valign="top" class="Txt">Nome</td>
<td width="436" valign="top" class="Txt"><input name="nome"
type="text" id="nome" size="50" maxlength="100">
<span class="style1">*</span></td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Raça</td>
<td valign="top" class="Txt"><input name="raca" type="text"
id="raca" size="24" maxLength="50" ></td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Data de Nascimento</td>
<td valign="top" class="Txt"><input name="dataNascimento"
type="text" size="11" maxLength="10" OnKeyPress="formatar(this, '##/##/####')"
onKeyUp="javascript:Sonumero(this)"></td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Sexo</td>
<td valign="top" class="Txt">
<select name="sexo" id="sexo">
<option value="0">Selecione</option>
<option value="M">Macho</option>
<option value="F">Femea</option>
</select>
Benefrancis do Nascimento 147
SISTEMA WEB
<td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Observacao</td>
<td valign="top" class="Txt">
<textarea name="observacao" rows="4" cols="50"></textarea>
<td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td class="Txt" width="23%"> </td>
<td class="Txt" width="77%">
<input type="hidden" name="op" value="2" />
<input type="button" name="Btn_Entrar" value="Cadastrar"
onClick="ValidarAnimal(document.Formulario);" >
</td>
</tr>
<tr>
Benefrancis do Nascimento 148
SISTEMA WEB
<td colspan="2"> </td>
</tr>
</table>
<jsp:include page="../geral/rodape.jsp" />
</form>
</td>
</tr>
<%} else if (op == 2) {%>
<tr>
<td colspan="2">
<%
//Declarando variáveis
//Pessoa
Pessoa pessoa = null;
int idPessoa = 0;
//Animal
Animal animal = null;
int tipoAnimal = 0;
String nome = null;
String raca = null;
String dataNascimento = null;
String sexo = null;
Benefrancis do Nascimento 149
SISTEMA WEB
String observacao = null;
//Tipo, nome, data de nascimento e sexo são obrigatórios
try {
try {
idPessoa =
Integer.parseInt(Util.SoNumero(request.getParameter("idPessoa")));
pessoa = Pessoa.consultar(idPessoa);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Erro ao construir o Objeto pessoa");
}
try {
tipoAnimal =
Integer.parseInt(Util.SoNumero(request.getParameter("tipoAnimal")));
if (tipoAnimal == 1) {
animal = new Cachorro();
} else if (tipoAnimal == 2) {
animal = new Gato();
} else {
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Selecione o Tipo do animal</font></center><br>");
}
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("<br><center><font face='verdana'
Benefrancis do Nascimento 150
SISTEMA WEB
color='red' size='2'><br />Erro ao pegar o tipo do animal</font></center><br>");
}
try {
nome = request.getParameter("nome");
if (nome == null || nome == "" || nome == "0") {
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Informe o nome do animal</font></center><br>");
} else {
animal.setNome(nome);
}
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Erro ao pegar o nome do animal</font></center><br>");
}
try {
raca = request.getParameter("raca");
animal.setRaca(raca);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Erro ao capturar a raça do animal</font></center><br>");
}
Benefrancis do Nascimento 151
SISTEMA WEB
try {
dataNascimento = request.getParameter("dataNascimento");
//validar data e construir um objeto Date() caso a data seja válida
if (dataNascimento == null || dataNascimento == "" || dataNascimento ==
"0") {
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Informe a data de nascimento do animal</font></center><br>");
} else if (Util.validarData(dataNascimento) != true) {
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />A data de nascimento do animal é inválida</font></center><br>");
} else {
animal.setDataNascimento(new Date(dataNascimento));
}
} catch (Exception ex) {
ex.printStackTrace();
}
try {
sexo = request.getParameter("sexo");
if (sexo == null || sexo == "" || sexo == "0") {
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Informe o sexo do animal</font></center><br>");
} else {
animal.setSexo(sexo.charAt(0));
}
} catch (Exception ex) {
Benefrancis do Nascimento 152
SISTEMA WEB
ex.printStackTrace();
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Informe o sexo do animal</font></center><br>");
}
try {
observacao = request.getParameter("observacao");
if (observacao != "") {
animal.setObservacao(observacao);
}
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Erro ao pegar o parâmetro Observação</font></center><br>");
}
animal.setPessoa(pessoa);
animal.setIdAnimal(1);
//Adicionando a uma lista os servicos executados
ArrayList<Servico> servico = new ArrayList<Servico>();
animal.setServico(servico);
//salvando
animal.salvar(animal);
out.print("<br><center><font face='verdana' color='blue' size='2'><br
/>Animal cadastrado com sucesso em nosso banco de dados</font></center><br><br><br>");
} catch (Exception ex) {
ex.printStackTrace();
Benefrancis do Nascimento 153
SISTEMA WEB
out.print("<br>");
out.print("<br>");
out.print("<br>");
out.print("<br><center><font face='verdana' color='red' size='2'><br />Erro
ao cadastrar o animal</font></center><br>");
out.print(ex.getMessage());
out.print("<br>");
out.print("<br>");
}
%>
<jsp:include page="../geral/rodape.jsp" />
</td>
<tr>
<% }//fim do if de op%>
</table>
</body>
</html>
Figura 100 ‐ código fonte da página para cadastramento de animais
Benefrancis do Nascimento 154
SISTEMA WEB
Figura 101 ‐ Layout da página para registro de animal
Benefrancis do Nascimento 155
SISTEMA WEB
SISTEMA WEB
Introdução
Neste diretório teremos apenas um arquivo; O registra.jsp que será o responsável pelo
cadastramento de serviços realizados no animal.
registrar.jsp
Para registrar um serviço, será necessário selecionar uma pessoa, e em seguida o animal desta
pessoa, para que seja aberto o formulário com os campos para cadastramento do serviço.
A tela deverá possuir um formulário. Veja a tag:
<form action="registrar.jsp" method="post" name="Formulario" >
<!—Incluir os elementos do formulário aqui ‐‐>
</form>
Tabela 4 ‐ Elementos do formulário para registro de serviço
0 idPessoa hidden 1
4 observacao textarea
5 op hidden 3
6 idAnimal hidden 1
Benefrancis do Nascimento 157
SISTEMA WEB
<%@page import="br.com.benefrancis.controle.*" %>
<%@page import="br.com.benefrancis.util.Util" %>
<%@page import="java.util.List" %>
<%@page import="java.util.Date" %>
<%@page import="java.util.ListIterator" %>
<%@page import="java.util.ArrayList" %>
<%@page import="java.util.Collection" %>
<%@page import="java.util.Date" %>
<%
//Operações:
// 0 = nenhuma. Neste caso exibiremos o formulário pedindo para selecionar o dono do
animal. Após selecionado submit será executado.
// 1 = buscar os animais do dono:
// 1a) Mostraremos os dados do dono(apagaremos o combobox de listagem de donos);
// 1b) Aguardamos que o usuário escolha o animal. Após selecionado submit será
executado.
// 2 = registraremos o serviço executado.
//Iniciando a variável op
int op = 0;
//verificando a variável op enviada pelo formulário:
try {
op = Integer.parseInt(Util.SoNumero(request.getParameter("op")));
} catch (Exception ex) {
Benefrancis do Nascimento 158
SISTEMA WEB
ex.printStackTrace();
}
List<Pessoa> pList = new ArrayList<Pessoa>();
List<Animal> aList = new ArrayList<Animal>();
//Serviço
int servicoEscolhido = 0;
Servico servico = null;
String nome = null;
%>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
Benefrancis do Nascimento 159
SISTEMA WEB
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>CADASTRAMENTO DE
SERVIÇOS NO ANIMAL</strong></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<% if (op == 0) {%>
<tr>
<td colspan="2">
<form action="registrar.jsp" method="post" name="Formulario" >
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<tr>
<td width="162" class="Txt">Dono do animal</td>
<td width="436" class="Txt">
<select name="idPessoa">
<option value="0"> Selecione </option>
<%
pList = Pessoa.consultar();
for (ListIterator iter = pList.listIterator(); iter.hasNext();) {
Benefrancis do Nascimento 160
SISTEMA WEB
Pessoa achei = (Pessoa) iter.next();
%>
<option value="<% out.print(achei.getIdPessoa());%>"><%
out.print(achei.getNome());%></option>
<%
}
%>
</select>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td class="Txt"> </td>
<td class="Txt"><input type="hidden" name="op" value="1" />
<input type="button" name="Btn_Entrar" value="Prosseguir >>"
onClick="ValidarRegistro1(document.Formulario);" >
</td>
</tr>
<tr>
<td colspan="2"> </td>
Benefrancis do Nascimento 161
SISTEMA WEB
</tr>
</table>
</form>
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
<% } else if (op == 1) {%>
<tr>
<td colspan="2">
<form action="registrar.jsp" method="post" name="Formulario" >
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<%
int idPessoa =
Integer.parseInt(Util.SoNumero(request.getParameter("idPessoa")));
Pessoa donoAnimal = Pessoa.consultar(idPessoa);
%>
<tr>
<td colspan="2">
<input type="hidden" name="idPessoa"
value="<%out.print(donoAnimal.getIdPessoa());%>" />
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="20%" class="TopoTit">CLIENTE: </td>
<td class="TextoTit"><% out.print(donoAnimal.getNome());%></td>
</tr>
</table>
Benefrancis do Nascimento 162
SISTEMA WEB
</td>
</tr>
<tr>
<td colspan="2"> </td>
<tr>
<td width="162" class="Txt">ANIMAL DE ESTIMAÇÃO</td>
<td width="436" class="Txt">
<select name="idAnimal">
<option value="0"> Selecione </option>
<%
aList = (ArrayList<Animal>) Animal.consultar(donoAnimal);
for (ListIterator iter = aList.listIterator(); iter.hasNext();) {
Animal acheiAnimal = (Animal) iter.next();
%>
<option value="<% out.print(acheiAnimal.getIdAnimal());%>"><%
out.print(acheiAnimal.getNome());%></option>
<%
}
%>
</select>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
Benefrancis do Nascimento 163
SISTEMA WEB
<td colspan="2"> </td>
</tr>
<tr>
<td class="Txt"> </td>
<td class="Txt">
<input type="hidden" name="op" value="2" />
<input type="button" name="Btn_Entrar" value="Prosseguir >>"
onClick="ValidarRegistro2(document.Formulario);" >
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
</table>
<jsp:include page="../geral/rodape.jsp" />
</form>
</td>
</tr>
<%} else if (op == 2) {%>
<tr>
<td height="104" colspan="2" valign="top" >
<form action="registrar.jsp" method="post" name="Formulario" >
Benefrancis do Nascimento 164
SISTEMA WEB
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<!‐‐DWLayoutTable‐‐>
<%
int idPessoa =
Integer.parseInt(Util.SoNumero(request.getParameter("idPessoa")));
Pessoa donoAnimal = Pessoa.consultar(idPessoa);
int idAnimal =
Integer.parseInt(Util.SoNumero(request.getParameter("idAnimal")));
Animal animal = Animal.consultar(idAnimal);
%>
<tr>
<td colspan="2">
<input type="hidden" name="idPessoa"
value="<%out.print(donoAnimal.getIdPessoa());%>" />
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<tr >
<td width="20%" class="TopoTit">CLIENTE: </td>
<td class="TextoTit"><% out.print(donoAnimal.getNome());%></td>
</tr>
<tr>
<td width="20%" class="TopoTit">ANIMAL DE ESTIMAÇÃO: </td>
<td class="TextoTit" ><% out.print(animal.getNome());%></td>
</tr>
</table>
Benefrancis do Nascimento 165
SISTEMA WEB
</td>
</tr>
<tr>
<td colspan="2"><hr size="1"></td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>SERVIÇO
EXECUTADO</strong></td>
</tr>
<tr>
<td colspan="2">
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<tr>
<td width="165" class="Txt">Serviço</td>
<td width="581" class="Txt">
<select name="servico" id="servico">
<option value="0">Selecione</option>
<option value="1">Consulta Veterinária</option>
<option value="2">Banho</option>
<option value="3">Tosa</option>
<option value="4">Vacina</option>
</select>
</td>
</tr>
<tr>
<td width="165" height="27" valign="top" class="Txt">Nome /
Benefrancis do Nascimento 166
SISTEMA WEB
Descrição </td>
<td width="581" valign="top" class="Txt">
<input name="nome" type="text" id="nome" size="50"
maxlength="100">
<span class="style1">*</span></td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Valor R$ </td>
<td valign="top" class="Txt">
<input name="valor" type="text" size="11" maxLength="10"
onKeyUp="javascript:Sonumero(this)">
</td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Observacao</td>
<td valign="top" class="Txt">
<textarea name="observacao" rows="4" cols="50"></textarea>
<td width="10">
</tr>
<tr>
<td colspan="2"> </td>
</tr>
</table>
</td>
</tr>
Benefrancis do Nascimento 167
SISTEMA WEB
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td class="Txt" width="23%"> </td>
<td class="Txt" width="77%">
<input type="hidden" name="op" value="3" />
<input type="hidden" name="idAnimal" value="<%
out.print(Util.SoNumero(request.getParameter("idAnimal")));%>" />
<input type="button" name="Btn_Entrar" value="Cadastrar"
onClick="ValidarRegistro(document.Formulario);" >
</td>
</tr>
</table>
</form>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
Benefrancis do Nascimento 168
SISTEMA WEB
<%} else if (op == 3) {%>
<tr>
<td colspan="2">
<%
try{
Animal animal=null;
try {
//Cadastraremos o serviço executado no animal de estimação de uma pessoa
//Buscando Animal
int idAnimal =
Integer.parseInt(Util.SoNumero(request.getParameter("idAnimal")));
animal = Animal.consultar(idAnimal);
if (animal == null) {
throw new RuntimeException("Erro na busca dos dados do animal.");
}
//Criando um objeto serviço conforme o serviço escolhido:
try {
servicoEscolhido =
Integer.parseInt(Util.SoNumero(request.getParameter("servico")));
switch (servicoEscolhido) {
case 1:
servico = new Banho();
break;
case 2:
servico = new Consulta();
break;
Benefrancis do Nascimento 169
SISTEMA WEB
case 3:
servico = new Tosa();
break;
case 4:
servico = new Vacina();
break;
default:
throw new RuntimeException("Serviço inválido! Favor selecionar o
serviço executado.");
}
} catch (Exception ex) {
}
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Erro ao pegar o nome do serviço efetuado</font></center><br>");
}
double valor = 0;
try {
valor = Double.parseDouble(request.getParameter("valor"));
servico.setValor(valor);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Informe corretamente o valor do serviço
executado</font></center><br>");
}
Benefrancis do Nascimento 170
SISTEMA WEB
String descricao = null;
try {
descricao = request.getParameter("nome");
servico.setDescricao(descricao);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Erro ao pegar o nome / descrição do serviço
efetuado</font></center><br>");
}
String observacao = null;
try {
observacao = request.getParameter("observacao");
servico.setObservacao(observacao);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("<br><center><font face='verdana'
color='red' size='2'><br />Erro ao pegar observação referente ao serviço
efetuado</font></center><br>");
}
//Adicionando o animal
servico.setAnimal(animal);
servico.setData(new Date());
//salvando
servico.salvar(servico);
out.print("<br>");
out.print("<br>");
Benefrancis do Nascimento 171
SISTEMA WEB
out.print("<br>");
out.print("<br><center><font face='verdana' color='blue' size='2'><br
/>Serviço cadastrado com sucesso</font></center><br>");
out.print("<br>");
out.print("<br>");
} catch (Exception ex) {
ex.printStackTrace();
out.print("<br>");
out.print("<br>");
out.print("<br>");
out.print("<br><center><font face='verdana' color='red' size='2'><br />Erro
ao cadastrar o serviço executado</font></center><br>");
out.print("<br><center><font face='verdana' color='red' size='2'><br />" +
ex.getMessage() + "</font></center><br>");
out.print("<br>");
out.print("<br>");
}
%>
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
<% }//fim do if de op%>
</table>
</body>
</html>
Figura 102 ‐ Código fonte da página para registro de serviço
Benefrancis do Nascimento 172
SISTEMA WEB
Figura 103 ‐ Layout da pagina para registro de serviço
Benefrancis do Nascimento 173
SISTEMA WEB
SISTEMA WEB
Introdução
Neste diretório teremos telas para consulta de Pessoas, animais e serviços. No relatório das
consultas terão opções para detalhar, editar, excluir e etc. São arquivos deste diretório:
Tabela 5 ‐ Arquivos do diretório consultas
NOME DESCRIÇÃO
pessoa.jsp Retorna todas as pessoas cadastradas no
sistema. Apresenta link para cadastrar um
novo animal para uma pessoa, visualizar os
dados da pessoa, editar os dados da pessoa
ou excluir a pessoa.
animal.jsp Retorna os animais cadastrados para uma
pessoa selecionada ou todos os animais
registrados. Apresenta link para incluir novo
serviço para o animal, visualizar os dados
deste animal, editar os dados do animal ou
excluir o animal.
servico.jsp Retorna todos os serviços realizados.
Apresenta link para visualizar os dados do
serviço realizado, editar o serviço ou excluir o
serviço.
detalhe_pessoa.jsp Exibe todas as informações de uma pessoa.
detalhe_animal.jsp Exibe todas as informações de um animal.
detalhe_servico.jsp Exibe todas as informações de um serviço
realizado.
editar_pessoa.jsp Permite alterar os dados de uma pessoa
editar_animal.jsp Permite alterar os dados de um animal.
editar_servico.jsp Permite alterar os dados de um serviço
realizado.
excluir_pessoa.jsp Permite excluir uma pessoa do sistema.
excluir_animal.jsp Permite excluir um animal do sistema.
Benefrancis do Nascimento 175
SISTEMA WEB
excluir_serviço.jsp Permite excluir um serviço realizado em um
animal cadastrado no sistema.
Pessoa.jsp
A página pessoa.jsp do diretório consultas lista todas as pessoas cadastradas no sistema. Veja
abaixo o código fonte.
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="br.com.benefrancis.controle.*" %>
<%@page import="br.com.benefrancis.util.Util" %>
<%@page import="java.util.ArrayList" %>
<%@page import="java.util.Date" %>
<%@page import="java.util.List" %>
<%@page import="java.util.ListIterator" %>
<%
//Iniciando variavel que receberá a lista de pessoas
List<Pessoa> pList = new ArrayList<Pessoa>();
%>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
Benefrancis do Nascimento 176
SISTEMA WEB
</td>
</tr>
<tr>
<td height="22" colspan="2" valign="top"
class="Txt"><strong>PESSOAS</strong></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<tr>
<td colspan="2"><hr size="1"></td>
</tr>
<tr>
<td colspan="2">
<table border="0" width="100%">
<thead>
<tr class="TopoTit">
<th>NOME</th>
<th>TELEFONES</th>
<th>EMAIL</th>
<th>ANIMAIS</th>
<th>AÇÕES</th>
Benefrancis do Nascimento 177
SISTEMA WEB
</tr>
</thead>
<tbody>
<%
pList = Pessoa.consultar();
for (ListIterator iter = pList.listIterator(); iter.hasNext();) {
Pessoa achei = (Pessoa) iter.next();
%>
<tr>
<td align="left" class="Txt"><% out.print(achei.getNome());%></td>
<td align="left" class="Txt">
<%
List<Telefone> telefones = (List<Telefone>) Telefone.consultar(achei);
for (int i = 0; i <= telefones.size(); i++) {
try {
out.print(telefones.get(i).getDdd());
out.print(" ‐ ");
out.print(telefones.get(i).getNumero()+" ");
} catch (Exception e) {
}
}
%>
</td>
<td align="left" class="Txt"><%out.print(achei.getEmail());%></td>
Benefrancis do Nascimento 178
SISTEMA WEB
<td align="center" class="Txt">
<%
List<Animal> animais = (ArrayList<Animal>) Animal.consultar(achei);
out.print(animais.size());
%>
</td>
<td class="Txt" align="center">
<table border="0" align="center" cellpadding="2" cellspacing="2"
width="100%" >
<tr align="center" valign="middle">
<td>
<a
href="../cadastros/animal.jsp?op=1&idPessoa=<%out.print(achei.getIdPessoa());%>">
<img src="../images/img_gato.png" width="30" height="30"
alt="Inserir animal de estimação" title="Inserir animal de estimação" border="0" />
</a>
</td>
<td>
<a
href="../consultas/detalhe_pessoa.jsp?idPessoa=<%out.print(achei.getIdPessoa());%>">
<img src="../images/img_lupa_transparente.png" width="30"
height="30" alt="consultar" title="consultar" border="0"/>
</a>
</td>
<td>
<a
Benefrancis do Nascimento 179
SISTEMA WEB
href="../consultas/editar_pessoa.jsp?op=2&idPessoa=<%out.print(achei.getIdPessoa());%
>">
<img src="../images/img_caderno_transparente.png" width="30"
height="30" border="0" alt="editar" title="editar"/>
</a>
</td>
<td>
<a
href="../consultas/excluir_pessoa.jsp?idPessoa=<%out.print(achei.getIdPessoa());%>">
<img src="../images/img_lixeira_transparente.png" width="30"
height="30" border="0" alt="excluir" title="excluir"/>
</a>
</td>
</tr>
</table>
</td>
</tr>
<%}%>
</tbody>
</table>
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</body>
</html>
Benefrancis do Nascimento 180
SISTEMA WEB
Abaixo o layout da página de consulta de pessoas.
Figure 4 ‐ Layout da página de consulta de pessoas
Editar_pessoa.jsp
Veja o código da pagina editar_pessoa.jsp
Benefrancis do Nascimento 181
SISTEMA WEB
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="br.com.benefrancis.controle.*" %>
<%@page import="br.com.benefrancis.util.Util" %>
<%@ page import="java.util.List"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="java.util.ListIterator" %>
<%@ page import="java.util.Collection" %>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<form action="editar_pessoa.jsp" method="post" name="Formulario" >
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td colspan="2">
<%
//iniciando variáveis:
int op = 0;
String tipo = null;
Benefrancis do Nascimento 182
SISTEMA WEB
int idPessoa=0;
Pessoa p = null;
String nome = "";
String razao = "";
String docReceita = "";
int dddTel = 0;
String Tel = "";
int dddCel = 0;
String Cel = "";
int dddFax = 0;
String Fax = "";
try {
if (!request.getParameter("op").isEmpty()) {
op = Integer.parseInt(request.getParameter("op"));
}
} catch (Exception ex) {
throw new RuntimeException("<center><font face='verdana' color='red'
size='2'>Erro ao tentar localizar dados da pessoa.<br /> Verifique os dados e tente
novamente</font></center>");
}
try{
idPessoa = Integer.parseInt(Util.SoNumero(request.getParameter("idPessoa")));
}catch(Exception e){
throw new RuntimeException("<center><font face='verdana' color='red'
size='2'>Erro ao tentar localizar dados da pessoa.<br /> Verifique os dados e tente
Benefrancis do Nascimento 183
SISTEMA WEB
novamente</font></center>");
}
p = new PF().consultar(idPessoa);
try {
if (op == 1) {
try{
idPessoa = Integer.parseInt(Util.SoNumero(request.getParameter("idPessoa")));
}catch(Exception e){
throw new RuntimeException("<center><font face='verdana' color='red'
size='2'>Erro ao tentar localizar dados da pessoa.<br /> Verifique os dados e tente
novamente</font></center>");
}
try {
tipo = request.getParameter("Tipo");
} catch (Exception ex) {
}
if (tipo == "PJ") {
p = new PJ().consultar(idPessoa);
try {
nome = request.getParameter("razao");
docReceita = request.getParameter("CNPJ");
docReceita = Util.SoNumero(docReceita);
//Criando uma pessoa juridica
} catch (Exception ex) {
throw new RuntimeException("<center><font face='verdana' color='red'
Benefrancis do Nascimento 184
SISTEMA WEB
size='2'>Erro ao cadastrar Utilizador.<br /> Verifique os dados de Pessoa Jurídica tente
novamente</font></center>");
}
} else {
p = new PF().consultar(idPessoa);
try {
nome = request.getParameter("Nome");
docReceita = request.getParameter("CPF");
docReceita = Util.SoNumero(docReceita);
} catch (Exception ex) {
throw new RuntimeException("<center><font face='verdana' color='red'
size='2'>Erro ao cadastrar Utilizador.<br /> Verifique os dados de Pessoa física tente
novamente</font></center>");
}
}
//Endereço da pessoa
Endereco endereco = new Endereco();
String logradouro = "";
String numero = "";
String complemento = "";
String bairro = "";
String cep = "";
String cidade = "";
String uf = "";
Benefrancis do Nascimento 185
SISTEMA WEB
//Endereço
List<Endereco> novoEndereco = new ArrayList<Endereco>();
try {
logradouro = request.getParameter("logradouro");
numero = request.getParameter("Numero");
complemento = request.getParameter("Complemento");
bairro = request.getParameter("Bairro");
cep = Util.SoNumero(request.getParameter("CEP"));
cidade = request.getParameter("Cidade");
uf = request.getParameter("uf");
if (logradouro == "" || numero == "" || bairro == "" || cidade == "" || uf == ""
|| cep == "") {
throw new RuntimeException("O endereço deve conter logradouro, número,
Bairro, Cidade, Estado e CEP");
} else {
endereco.setLogradouro(logradouro);
endereco.setBairro(bairro);
endereco.setCep(cep);
endereco.setCidade(cidade);
endereco.setComplemento(complemento);
endereco.setNumero(numero);
endereco.setUf(uf);
}
} catch (Exception ex) {
throw new RuntimeException("Logradouro é um campo obrigatório");
}
Benefrancis do Nascimento 186
SISTEMA WEB
//Telefones
ArrayList<Telefone> telefone = new ArrayList<Telefone>();
try {
dddTel = Integer.parseInt(Util.SoNumero(request.getParameter("TelDDD")));
Tel = Util.SoNumeroTel(request.getParameter("Tel"));
} catch (Exception eTel) {
}
try {
dddCel =
Integer.parseInt(Util.SoNumero(request.getParameter("TelCelDDD")));
Cel = Util.SoNumeroTel(request.getParameter("TelCel"));
} catch (Exception eCel) {
}
try {
dddFax =
Integer.parseInt(Util.SoNumero(request.getParameter("TelFaxDDD")));
Fax = Util.SoNumeroTel(request.getParameter("TelFax"));
} catch (Exception eFax) {
}
if (dddTel != 0 && Tel != "") {
telefone.add(new Telefone(dddTel, Tel, p));
}
if (dddCel != 0 && Cel != "") {
Benefrancis do Nascimento 187
SISTEMA WEB
telefone.add(new Telefone(dddCel, Cel, p));
}
if (dddFax != 0 && Fax != "") {
telefone.add(new Telefone(dddFax, Fax, p));
}
//Excluindo endereço anterior
List<Endereco> end = endereco.consultar(p);
for(int i=0; i<end.size();i++){
Endereco.excluir(end.get(i));
}
//Excluindo Telefones anteriores
List<Telefone> tel = (List<Telefone>) Telefone.consultar(p);
for(int i=0; i<tel.size();i++){
Telefone.excluir(tel.get(i));
}
p.setNome(nome);
endereco.setPessoa(p);
novoEndereco.add(endereco);
p.setEndereco(novoEndereco);
p.setTelefone(telefone);
p.alterar(p);
Benefrancis do Nascimento 188
SISTEMA WEB
out.print("<br>");
out.print("<br>");
out.print("<br>");
out.print("<center><font face='verdana' color='blue' size='2'>Utilizador
cadastrado com sucesso</font></center>");
out.print("<br>");
out.print("<br>");
out.print("<br>");
} else if (op == 2) {
%>
</td>
</tr>
<tr>
<td width="162" class="Txt">Tipo</td>
<td width="436" class="Txt">
<select name="Tipo" id="Tipo"
onChange="showCampo(document.forms[0][this.name].options[document.forms[0][this.nam
e].selectedIndex].value,'campo_hidden');">
<option <%if (p.getTipo()==2) {%> selected <%}%> value="PJ" >PJ</option>
<option <%if (p.getTipo()==1) {%> selected <%}%> value="PF" >PF</option>
</select>
</td>
</tr>
Benefrancis do Nascimento 189
SISTEMA WEB
<tr id="campo_hiddenPJ" style<% if (p.getTipo()==2) {%> ="display:''" <%} else {%>
="display:none" <%}%>>
<td height="104" colspan="2" valign="top">
<table width="100%" border="0" cellpadding="0" cellspacing="0" align="center">
<!‐‐DWLayoutTable‐‐>
<tr>
<td height="1" colspan="2" valign="top"><hr size="1"></td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>PESSOA
JURÍDICA </strong></td>
</tr>
<tr>
<td width="162" height="27" valign="top" class="Txt">RAZÃO SOCIAL</td>
<td width="436" valign="top" class="Txt"><input name="razao" value="<% if
(p.getTipo()==2) {
out.print(p.getNome());
}%>" type="text" id="razao" size="50"
maxlength="100">
<span class="style1">*</span></td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">CNPJ</td>
<td valign="top" class="Txt">
<input name="CNPJ"
Benefrancis do Nascimento 190
SISTEMA WEB
type="text"
id="CNPJ"
OnKeyPress="formatar(this, '##.###.###/####‐##')"
onKeyUp="javascript:Sonumero(this)"
size="24"
maxLength="18"
value="<% if (p.getTipo()==2)
{out.print(p.getDocReceita().getNumero());}%>" >
+ </td>
</tr>
</table>
</td>
</tr>
<tr id="campo_hiddenPF" style<% if (p.getTipo()==1) {%> ="display:''" <%} else {%>
="display:none" <%}%>>
<td height="104" colspan="2" valign="top">
<table width="100%" border="0" cellpadding="0" cellspacing="0" align="center">
<!‐‐DWLayoutTable‐‐>
<tr>
<td height="1" colspan="2" valign="top"><hr size="1"></td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>PESSOA
FÍSICA </strong></td>
Benefrancis do Nascimento 191
SISTEMA WEB
</tr>
<tr>
<td width="162" height="27" valign="top" class="Txt">Nome Completo
</td>
<td width="436" valign="top" class="Txt">
<input
name="Nome"
value="<% if (p.getTipo()==1) {out.print(p.getNome());}%>"
type="text"
id="Nome"
size="50"
maxlength="100">
<span class="style1">*</span></td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">CPF</td>
<td valign="top" class="Txt">
<input
name="CPF"
type="text"
id="CPF"
OnKeyPress="formatar(this, '###.###.###‐##')"
onKeyUp="javascript:Sonumero(this)"
size=17
maxlength="14"
value="<% if (p.getTipo()==1)
Benefrancis do Nascimento 192
SISTEMA WEB
{out.print(p.getDocReceita().getNumero());}%>">
+ </td>
</tr>
</table>
</td>
</tr>
<tr>
<td id="contato" height="104" colspan="2" valign="top">
<table width="100%" border="0" cellpadding="0" cellspacing="0" align="center">
<!‐‐DWLayoutTable‐‐>
<tr>
<td colspan="3"><hr size="1"></td>
<td></td>
</tr>
<tr>
<td colspan="3" class="Txt"><strong>TELEFONES</strong></td>
</tr>
<%
List<Telefone> telefones = new ArrayList<Telefone>();
Benefrancis do Nascimento 193
SISTEMA WEB
telefones = (List<Telefone>)Telefone.consultar(p);
for (int i = 0; i <= 2; i++) {
if (i == 0) {
try {
%>
<tr>
<td class="Txt">Telefone</td>
<td colspan="2" class="Txt">
<%if (telefones.size() >= 1) {%>
(<input name="TelDDD" value="<%out.print(telefones.get(i).getDdd());%>"
type="text" id="TelDDD" onKeyUp="javascript:Sonumero(this)" size="2" maxlength="2">)
<input name="Tel" value="<%out.print(telefones.get(i).getNumero());%>"
type="text" id="Tel" OnKeyPress="formatar(this, '####‐####')"
onKeyUp="javascript:Sonumero(this)" size="12" maxlength="10">
<%} else {%>
(<input name="TelDDD" type="text" id="TelDDD"
onKeyUp="javascript:Sonumero(this)" size="2" maxlength="2">)
<input name="Tel" type="text" id="Tel" OnKeyPress="formatar(this,
'####‐####')" onKeyUp="javascript:Sonumero(this)" size="12" maxlength="10">
<%}%>
</td>
</tr>
<%
} catch (Exception e) {
e.printStackTrace();
Benefrancis do Nascimento 194
SISTEMA WEB
}
}
if (i == 1) {
try {
%>
<tr>
<td class="Txt">Telefone</td>
<td colspan="2" class="Txt">
<%if (telefones.size() >= 2) {%>
(<input name="TelCelDDD"
value="<%out.print(telefones.get(i).getDdd());%>" type="text"
onKeyUp="javascript:Sonumero(this)" size="2" maxlength="2">)
<input name="TelCel"
value="<%out.print(telefones.get(i).getNumero());%>" type="text" OnKeyPress="formatar(this,
'####‐####')" onKeyUp="javascript:Sonumero(this)" size="12" maxlength="10">
<%} else {%>
(<input name="TelCelDDD" onKeyUp="javascript:Sonumero(this)"
size="2" maxlength="2">)
<input name="TelCel" type="text" OnKeyPress="formatar(this, '####‐
####')" onKeyUp="javascript:Sonumero(this)" size="12" maxlength="10">
<%}%>
</td>
</tr>
<%
} catch (Exception e) {
Benefrancis do Nascimento 195
SISTEMA WEB
e.printStackTrace();
}
}
if (i == 2) {
try {
%>
<tr>
<td class="Txt">Telefone</td>
<td colspan="2" class="Txt">
<%if (telefones.size() >= 3) {%>
(<input name="TelFaxDDD"
value="<%out.print(telefones.get(i).getDdd());%>" type="text"
onKeyUp="javascript:Sonumero(this)" size="2" maxlength="2">)
<input name="TelFax"
value="<%out.print(telefones.get(i).getNumero());%>" type="text" OnKeyPress="formatar(this,
'####‐####')" onKeyUp="javascript:Sonumero(this)" size="12" maxlength="10">
<%} else {%>
(<input name="TelFaxDDD" type="text"
onKeyUp="javascript:Sonumero(this)" size="2" maxlength="2">)
<input name="TelFax" type="text" OnKeyPress="formatar(this, '####‐
####')" onKeyUp="javascript:Sonumero(this)" size="12" maxlength="10">
<%}%>
</td>
</tr>
<%
} catch (Exception e) {
e.printStackTrace();
Benefrancis do Nascimento 196
SISTEMA WEB
}
}
}
%>
<tr>
<td colspan="3"><hr size="1"></td>
<td></td>
</tr>
<%
List<Endereco> enderecos = Endereco.consultar(p);
for (ListIterator iter = enderecos.listIterator(); iter.hasNext();) {
Endereco end = (Endereco) iter.next();
%>
<tr>
<td colspan="3" class="Txt"><strong>ENDEREÇO</strong></td>
</tr>
<tr>
<td class="Txt">LOGRADOURO</td>
<td colspan="2" class="Txt"><input name="logradouro"
value="<%out.print(end.getLogradouro());%>" type="text" size="50" maxlength="50"></td>
</tr>
<tr>
<td class="Txt">Nº</td>
<td colspan="2" class="Txt"><input name="Numero"
value="<%out.print(end.getNumero());%>" type="text" size="10" maxlength="10"></td>
Benefrancis do Nascimento 197
SISTEMA WEB
</tr>
<tr>
<td class="Txt">Complemento</td>
<td colspan="2" class="Txt"><input name="Complemento"
value="<%out.print(end.getComplemento());%>" type="text" size="30" maxlength="50"></td>
</tr>
<tr>
<td class="Txt">Bairro</td>
<td colspan="2" class="Txt"><input name="Bairro"
value="<%out.print(end.getBairro());%>" type="text" size="30" maxlength="50"></td>
</tr>
<tr>
<td class="Txt">Cidade</td>
<td colspan="2" class="Txt"><input name="Cidade"
value="<%out.print(end.getCidade());%>" type="text" size="30" maxlength="50"></td>
</tr>
<tr id="estados" >
<td class="Txt">Estado</td>
<td colspan="2" class="Txt">
<select name="uf">
<option value="AC">AC</option>
<option value="AL">AL</option>
<option value="AP">AP</option>
<option value="AM">AM</option>
<option value="BA">BA</option>
<option value="CE">CE</option>
Benefrancis do Nascimento 198
SISTEMA WEB
<option value="DF">DF</option>
<option value="ES">ES</option>
<option value="GO">GO</option>
<option value="MA">MA</option>
<option value="MT">MT</option>
<option value="MS">MS</option>
<option value="MG">MG</option>
<option value="PA">PA</option>
<option value="PB">PB</option>
<option value="PR">PR</option>
<option value="PE">PE</option>
<option value="PI">PI</option>
<option value="RJ">RJ</option>
<option value="RN">RN</option>
<option value="RS">RS</option>
<option value="RO">RO</option>
<option value="RR">RR</option>
<option value="SC">SC</option>
<option value="SP">SP</option>
<option value="SE">SE</option>
<option value="TO">TO</option>
<option selected="true"
value="<%out.print(end.getUf());%>"><%out.print(end.getUf());%></option>
</select></td>
</tr>
<tr>
Benefrancis do Nascimento 199
SISTEMA WEB
<td class="Txt">CEP</td>
<td colspan="2" class="Txt">
<input name="CEP" value="<%out.print(end.getCep());%>" type="text"
OnKeyPress="formatar(this, '#####‐###')" onKeyUp="javascript:Sonumero(this)" size="12"
maxlength="9">
+ </td>
</tr>
<%}%>
</table>
</td>
</tr>
<tr>
<td colspan="2"> </td>
<td></td>
</tr>
<tr>
<td class="Txt" width="23%"> </td>
<td class="Txt" width="77%">
<input type="hidden" name="op" value="1" />
<input type="hidden" name="idPessoa" value="<%out.print(p.getIdPessoa());%>"
/>
<input type="button" name="Btn_Entrar" value="Alterar"
onClick="Validar(document.Formulario);" >
</td>
<td> </td>
</tr>
<tr>
Benefrancis do Nascimento 200
SISTEMA WEB
<td colspan="2">
<%
}
} catch (Exception e) {
out.print("<br>");
out.print("<center><font face='verdana' color='red' size='2'>Erro ao
cadastrar</font></center>");
out.print("<center><font face='verdana' color='red' size='2'>" + e.getMessage() +
"</font></center>");
}
%>
</td>
</tr>
<tr>
<td colspan="2">
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</form>
</body>
</html>
Figure 5 ‐ Código fonte da página editar_pessoa
Benefrancis do Nascimento 201
SISTEMA WEB
Abaixo o layout da página editar_pessoa.jsp
Figure 6 ‐ Layout da página editar_pessoa.jsp
Excluir_pessoa.jsp
A página excluir_pessoa.jsp do diretório consultas solicita a confirmação da exclusão de uma
pessoa, animais e serviços relacionados àquela pessoa. Veja abaixo o código fonte.
Benefrancis do Nascimento 202
SISTEMA WEB
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="br.com.benefrancis.controle.*" %>
<%@page import="br.com.benefrancis.util.Util" %>
<%@ page import="java.util.List"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="java.util.ListIterator" %>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td colspan="2">
<%
int op = 0;
int idPessoa = 0;
Pessoa p = null;
try {
if (!request.getParameter("op").isEmpty()) {
Benefrancis do Nascimento 203
SISTEMA WEB
op = Integer.parseInt(request.getParameter("op"));
}
} catch (Exception ex) {
ex.printStackTrace();
}
try {
if (!request.getParameter("idPessoa").isEmpty()) {
idPessoa = Integer.parseInt(Util.SoNumero(request.getParameter("idPessoa")));
}
} catch (Exception ex) {
ex.printStackTrace();
}
p = Pessoa.consultar(idPessoa);
try {
if (op == 1 && idPessoa > 0) { //Op =1 : Deletar
p.excluir(p);
out.print("<br>");
out.print("<br>");
out.print("<br>");
out.print("<center><font face='verdana' color='blue' size='2'>Registro excluído
com sucesso</font></center>");
out.print("<br>");
out.print("<br>");
out.print("<br>");
} else {%>
<table border="0" width="100%">
Benefrancis do Nascimento 204
SISTEMA WEB
<thead>
<tr class="TextoTit" align="center">
<th colspan="2" height="50">Esta operação excluirá
<%out.print(p.getNome());%>, seus animais de estimação e serviços realizados do sistema.
</th>
</tr>
</thead>
<tbody>
<tr class="TextoTit">
<td colspan="2"align="center" height="60">Confirma a exclusão?</td>
</tr>
<tr align="center" >
<td width="50%" align="right" height="150"><form
action="excluir_pessoa.jsp" method="post" name="Formulario"> <input type="hidden"
name="op" value="1"><input type="hidden" name="idPessoa"
value="<%out.print(p.getIdPessoa());%>"> <input type="submit" name="btn_sim"
value="SIM"> </form></td>
<td width="50%" align="left" height="150"><form
action="../consultas/pessoa.jsp" method="post" name="Formulario"> <input
type="submit" name="btn_sim" value="NÃO" > </form></td>
</tr>
</tbody>
</table>
<%
}
} catch (Exception e) {
out.print("<br>");
out.print("<center><font face='verdana' color='red' size='2'>Erro ao
excluir</font></center>");
Benefrancis do Nascimento 205
SISTEMA WEB
out.print("<center><font face='verdana' color='red' size='2'>" + e.getMessage() +
"</font></center>");
}
%>
<tr>
<td colspan="2">
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</body>
</html>
Figure 7 ‐ código fonte da página excluir_pessoa.jsp
Benefrancis do Nascimento 206
SISTEMA WEB
Abaixo, o layout da página excluir_pessoa.jsp.
Figure 8 ‐ Layout da página excluir_pessoa.jsp
Animal.jsp
A página animal.jsp do diretório de consultas lista todos os animais registrados no sistema.
Apresenta link para inserir um serviço, detalhar, alterar e excluir.
Abaixo, o código fonte da página animal.jsp.
Benefrancis do Nascimento 207
SISTEMA WEB
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="br.com.benefrancis.controle.*" %>
<%@page import="br.com.benefrancis.util.Util" %>
<%@page import="java.util.List" %>
<%@page import="java.util.ListIterator" %>
<%@page import="java.util.ArrayList" %>
<%
//Lista de animais
List<Animal> pList = new ArrayList<Animal>();
%>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td height="22" colspan="2" valign="top"
class="Txt"><strong>ANIMAIS</strong></td>
</tr>
<tr>
Benefrancis do Nascimento 208
SISTEMA WEB
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<tr>
<td colspan="2"><hr size="1"></td>
</tr>
<tr>
<td colspan="2">
<table border="0" width="100%">
<thead>
<tr class="TopoTit">
<th>NOME</th>
<th>NASCIMENTO</th>
<th>TIPO</th>
<th>RAÇA</th>
<th>QTD SERVIÇOS</th>
<th>AÇÕES</th>
</tr>
</thead>
<tbody>
<%
pList = (List<Animal>) Animal.consultar();
Benefrancis do Nascimento 209
SISTEMA WEB
for (ListIterator iter = pList.listIterator(); iter.hasNext();) {
Animal achei = (Animal) iter.next();
%>
<tr class="Txt" >
<td><%out.print(achei.getNome());%></td>
<td><%out.print(achei.getDataNascimento().toLocaleString().substring(0,
10));%></td>
<td><%out.print(achei.getDescricao());%></td>
<td><%out.print(achei.getRaca());%></td>
<td align="center">
<%
List<Servico> servicos = (List<Servico>)Servico.consultar(achei);
out.print(servicos.size());
%>
</td>
<td class="Txt" align="center">
<%
int idPessoa = achei.getPessoa().getIdPessoa();
%>
<table border="0" align="center" cellpadding="2" cellspacing="2"
width="100%">
<tr align="center" valign="middle">
<td>
<a
href="../servicos/registrar.jsp?op=2&idPessoa=<%out.print(idPessoa);%>&idAnimal=
<%out.print(achei.getIdAnimal());%>">
<img src="../images/img_cesto.png" width="30" height="30"
Benefrancis do Nascimento 210
SISTEMA WEB
alt="Incluir serviço" title="Incluir serviço" border="0"/>
</a>
</td>
<td>
<a
href="../consultas/detalhe_animal.jsp?idAnimal=<%out.print(achei.getIdAnimal());%>">
<img src="../images/img_lupa_transparente.png" width="30"
height="30" alt="consultar" title="consultar" border="0"/>
</a>
</td>
<td>
<a
href="../consultas/editar_animal.jsp?op=1&idAnimal=<%out.print(achei.getIdAnimal());%
>">
<img src="../images/img_caderno_transparente.png" width="30"
height="30" alt="editar" title="editar" border="0"/>
</a>
</td>
<td>
<a
href="../consultas/excluir_animal.jsp?idAnimal=<%out.print(achei.getIdAnimal());%>">
<img src="../images/img_lixeira_transparente.png" width="30"
height="30" alt="excluir" title="excluir" border="0"/>
</a>
</td>
</tr>
</table>
Benefrancis do Nascimento 211
SISTEMA WEB
</td>
</tr>
<%}%>
</tbody>
</table>
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</body>
</html>
Figure 9 ‐ código fonte da página animal.jsp ‐ diretório consultas
Benefrancis do Nascimento 212
SISTEMA WEB
Abaixo, o layout da página animal.jsp, presente no diretório consultas.
Figure 10 ‐ Layout da página animal.jsp
detalhe_animal.jsp
Abaixo, o código da página detalhe_animal.jsp presente no diretório consultas.
Benefrancis do Nascimento 213
SISTEMA WEB
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="br.com.benefrancis.controle.*" %>
<%@page import="br.com.benefrancis.util.Util" %>
<%@page import="java.util.List" %>
<%@page import="java.util.ListIterator" %>
<%@page import="java.util.ArrayList" %>
<%@page import="java.util.Date" %>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<form action="animal.jsp" method="post" name="Formulario" >
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>DETALHAMENTO
DO ANIMAL DE ESTIMAÇÃO</strong></td>
</tr>
<%
Animal animal;
int idAnimal = 0;
Benefrancis do Nascimento 214
SISTEMA WEB
try {
try {
idAnimal = Integer.parseInt(Util.SoNumero(request.getParameter("idAnimal")));
animal = Animal.consultar(idAnimal);
} catch (Exception ex) {
throw new RuntimeException("Erro ao construir o Objeto animal");
}
%>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<%
Pessoa pessoa = Pessoa.consultar(animal.getPessoa().getIdPessoa());
%>
<tr>
<td width="20%" class="TopoTit">Dono do animal</td>
<td width="80%" class="TextoTit">
<% out.print(pessoa.getNome());%>
</td>
</tr>
<tr>
Benefrancis do Nascimento 215
SISTEMA WEB
<td height="104" colspan="2" valign="top">
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<tr>
<td colspan="2"><hr size="1"></td>
</tr>
<tr>
<td height="22" colspan="2" valign="top"
class="Txt"><strong>ANIMAL</strong></td>
</tr>
<tr>
<td colspan="2">
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<tr>
<td width="162" class="Txt">Tipo</td>
<td width="436" class="Txt">
<%out.print(animal.getDescricao());%>
</td>
</tr>
<tr>
<td width="162" height="27" valign="top" class="Txt">Nome</td>
<td width="436" valign="top" class="Txt">
<%out.print(animal.getNome());%>
</td>
</tr>
<tr>
Benefrancis do Nascimento 216
SISTEMA WEB
<td height="27" valign="top" class="Txt">Raça</td>
<td valign="top" class="Txt">
<%out.print(animal.getRaca());%>
</td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Data de Nascimento</td>
<td valign="top" class="Txt">
<%out.print(animal.getDataNascimento().toLocaleString().substring(0, 10));%>
</td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Sexo</td>
<td valign="top" class="Txt">
<%out.print(animal.getSexo());%>
<td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Observacao</td>
<td valign="top" class="Txt">
<%out.print(animal.getObservacao());%>
<td>
</tr>
<tr>
<td colspan="2"> </td>
Benefrancis do Nascimento 217
SISTEMA WEB
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
</table>
<% } catch (Exception ex) {
ex.printStackTrace();
out.print("<br>");
out.print("<br><center><font face='verdana' color='red' size='2'><br
/>Erro ao consultar o animal</font></center><br>");
out.print(ex.getMessage());
out.print("<br>");
out.print("<br>");
} %>
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</form>
</body>
</html>
Figure 11 ‐ O código da página detalhe_animal.jsp
Benefrancis do Nascimento 218
SISTEMA WEB
Veja abaixo o layout da página detalhe animal.jsp
Figure 12 ‐ layout da página detalhe_animal.jsp
Editar_animal.jsp
Codificaremos agora a página editar_animal.jsp que deverá estar na pasta consultas.
Benefrancis do Nascimento 219
SISTEMA WEB
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="br.com.benefrancis.controle.*" %>
<%@page import="br.com.benefrancis.util.Util" %>
<%@page import="java.util.List" %>
<%@page import="java.util.ListIterator" %>
<%@page import="java.util.ArrayList" %>
<%@page import="java.util.Date" %>
<%
//Iniciando variaveis
int op = 0;
int idPessoa = 0;
int idAnimal = 0;
//verificando a variável op enviada pelo formulário:
try {
op = Integer.parseInt(Util.SoNumero(request.getParameter("op")));
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Não foi informada a operação desejada!");
}
try {
idAnimal = Integer.parseInt(Util.SoNumero(request.getParameter("idAnimal")));
Benefrancis do Nascimento 220
SISTEMA WEB
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("É necessário informar o id do animal!");
}
//Listando pessoas
List<Pessoa> pList = new ArrayList<Pessoa>();
Animal animal;
%>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<form action="editar_animal.jsp" method="post" name="Formulario" >
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>ATUALIZAÇÃO DE
ANIMAL DE ESTIMAÇÃO</strong></td>
</tr>
<tr>
Benefrancis do Nascimento 221
SISTEMA WEB
<td colspan="2">
<%
try {
animal = Animal.consultar(idAnimal);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Animal não encontrado");
}
%>
</td>
</tr>
<tr>
<td ></td>
</tr>
<%if (op != 2) {%>
<tr>
<td colspan="2">
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td width="23%" class="Txt">Dono do animal</td>
<td width="77%" class="Txt">
<select name="idPessoa">
<option value="0"> Selecione </option>
<%
Benefrancis do Nascimento 222
SISTEMA WEB
pList = Pessoa.consultar();
for (ListIterator iter = pList.listIterator(); iter.hasNext();) {
Pessoa achei = (Pessoa) iter.next();
%>
<option value="<% out.print(achei.getIdPessoa());%>" <%if
(animal.getPessoa().getIdPessoa() == achei.getIdPessoa()) {%> selected="true" <%}%> ><%
out.print(achei.getNome());%></option>
<%
}
%>
</select>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2"><hr size="1"></td>
</tr>
</table>
</td>
</tr>
Benefrancis do Nascimento 223
SISTEMA WEB
<%}%>
<% if (op == 1) {%>
<tr>
<td colspan="2">
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td height="22" colspan="2" valign="top"
class="Txt"><strong>ANIMAL</strong></td>
</tr>
<tr>
<td colspan="2">
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<tr>
<td width="162" class="Txt">Tipo</td>
<td width="436" class="Txt">
<select name="tipoAnimal" id="tipoAnimal">
<option value="1" <%if (animal.getTipo()==1) {%>
selected="true" <%}%> >Cachorro</option>
<option value="2" <%if (animal.getTipo()==2) {%>
selected="true" <%}%> >Gato</option>
</select>
</td>
</tr>
<tr>
<td width="162" height="27" valign="top" class="Txt">Nome</td>
Benefrancis do Nascimento 224
SISTEMA WEB
<td width="436" valign="top" class="Txt">
<input value="<%out.print(animal.getNome());%>" name="nome"
type="text" id="nome" size="50" maxlength="100">
<span class="style1">*</span></td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Raça</td>
<td valign="top" class="Txt">
<input value="<%out.print(animal.getRaca());%>" name="raca"
type="text" id="raca" size="24" maxLength="50" >
</td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Data de Nascimento</td>
<td valign="top" class="Txt">
<input
value="<%out.print(animal.getDataNascimento().toLocaleString().substring(0, 10));%>"
name="dataNascimento" type="text" size="11" maxLength="10"
OnKeyPress="formatar(this, '##/##/####')" onKeyUp="javascript:Sonumero(this)">
</td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Sexo</td>
<td valign="top" class="Txt">
<select name="sexo" id="sexo">
<option value="M" <%if (animal.getSexo() == 'M') {%>
selected="true" <%}%> >Macho</option>
<option value="F" <%if (animal.getSexo() == 'F') {%>
Benefrancis do Nascimento 225
SISTEMA WEB
selected="true" <%}%> >Femea</option>
</select>
<td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Observacao</td>
<td valign="top" class="Txt">
<textarea name="observacao" rows="4" cols="50">
<%
if (animal.getObservacao() != null) {
out.print(animal.getObservacao());
}
%>
</textarea>
<td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
Benefrancis do Nascimento 226
SISTEMA WEB
<tr>
<td class="Txt" width="23%"> </td>
<td class="Txt" width="77%">
<input type="hidden" name="op" value="2" />
<input type="hidden" name="idAnimal"
value="<%out.print(animal.getIdAnimal());%>" />
<input type="button" name="Btn_Entrar" value="Alterar"
onClick="ValidarAnimal(document.Formulario);" >
</td>
</tr>
<tr>
<td colspan="2">
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</td>
</tr>
<%} else if (op == 2) {%>
<tr>
<td colspan="2">
<%
//Declarando variáveis
//Pessoa
Benefrancis do Nascimento 227
SISTEMA WEB
Pessoa pessoa = null;
//Animal
int tipoAnimal = 0;
String nome = null;
String raca = null;
String dataNascimento = null;
String sexo = null;
String observacao = null;
//Tipo, nome, data de nascimento e sexo são obrigatórios
try {
try {
idPessoa =
Integer.parseInt(Util.SoNumero(request.getParameter("idPessoa")));
pessoa = Pessoa.consultar(idPessoa);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Erro ao construir o Objeto pessoa");
}
try {
tipoAnimal =
Integer.parseInt(Util.SoNumero(request.getParameter("tipoAnimal")));
if (tipoAnimal == 0) {
throw new RuntimeException("Selecione o Tipo do animal");
} else {
Benefrancis do Nascimento 228
SISTEMA WEB
animal.setTipo(tipoAnimal);
}
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Erro ao pegar o tipo do animal");
}
try {
nome = request.getParameter("nome");
if (nome == null || nome == "" || nome == "0") {
throw new RuntimeException("Informe o nome do animal");
} else {
animal.setNome(nome);
}
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Erro ao capturar o nome do animal");
}
try {
raca = request.getParameter("raca");
animal.setRaca(raca);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Erro ao capturar a raça do animal");
}
Benefrancis do Nascimento 229
SISTEMA WEB
try {
dataNascimento = request.getParameter("dataNascimento");
//validar data e construir um objeto Date() caso a data seja válida
if (dataNascimento == null || dataNascimento == "" || dataNascimento
== "0") {
throw new RuntimeException("Informe a data de nascimento do
animal");
} else if (Util.validarData(dataNascimento) != true) {
throw new RuntimeException("A data de nascimento do animal é
inválida");
} else {
animal.setDataNascimento(new Date(dataNascimento));
}
} catch (Exception ex) {
ex.printStackTrace();
}
try {
sexo = request.getParameter("sexo");
if (sexo == null || sexo == "" || sexo == "0") {
throw new RuntimeException("Informe o sexo do animal");
} else {
animal.setSexo(sexo.charAt(0));
}
} catch (Exception ex) {
ex.printStackTrace();
Benefrancis do Nascimento 230
SISTEMA WEB
throw new RuntimeException("Informe o sexo do animal");
}
try {
observacao = request.getParameter("observacao");
if (observacao != "") {
animal.setObservacao(observacao.trim());
}
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Erro ao pegar o parâmetro Observação");
}
animal.setIdAnimal(idAnimal);
animal.setPessoa(pessoa);
Animal.alterar(animal);
out.print("<br><center><font face='verdana' color='blue' size='2'><br
/>Animal atualizado com sucesso em nosso banco de dados</font></center><br>");
} catch (Exception ex) {
ex.printStackTrace();
out.print("<br>");
out.print("<br>");
out.print("<br>");
out.print("<br><center><font face='verdana' color='red' size='2'><br
/>Erro ao atualizar dados do animal</font></center><br>");
out.print("<br><center><font face='verdana' color='red' size='2'><br />" +
ex.getMessage() + "</font></center><br>");
out.print("<br>");
out.print("<br>");
Benefrancis do Nascimento 231
SISTEMA WEB
}
%>
<jsp:include page="../geral/rodape.jsp" />
</td>
<tr>
<% }//fim do if de op%>
</table>
</form>
</body>
</html>
Figure 13 – código fonte da página editar_animal.jsp
Benefrancis do Nascimento 232
SISTEMA WEB
Veja o layout da página editar_animal.jsp.
Figure 14 ‐ Layout da página editar_animal.jsp
Excluir_animal.jsp
Segue o código fonte da página que exclui um animal do sistema.
Benefrancis do Nascimento 233
SISTEMA WEB
<%@ page contentType="text/html" pageEncoding="UTF‐8"%>
<%@ page import="br.com.benefrancis.controle.*" %>
<%@ page import="br.com.benefrancis.util.Util" %>
<%@ page import="java.util.List"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="java.util.ListIterator" %>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td colspan="2">
<%
int op = 0;
Benefrancis do Nascimento 234
SISTEMA WEB
int idAnimal = 0;
Animal a = null;
try {
if (!request.getParameter("op").isEmpty()) {
op = Integer.parseInt(request.getParameter("op"));
}
} catch (Exception ex) {
ex.printStackTrace();
}
try {
if (!request.getParameter("idAnimal").isEmpty()) {
idAnimal =
Integer.parseInt(Util.SoNumero(request.getParameter("idAnimal")));
}
} catch (Exception ex) {
ex.printStackTrace();
}
a = Animal.consultar(idAnimal);
try {
if (op == 1 && idAnimal > 0) { //Op =1 : Deletar
Animal.excluir(a);
out.print("<br>");
out.print("<br>");
Benefrancis do Nascimento 235
SISTEMA WEB
out.print("<br>");
out.print("<center><font face='verdana' color='blue' size='2'>Registro
excluído com sucesso</font></center>");
out.print("<br>");
out.print("<br>");
out.print("<br>");
%>
<%} else {%>
<table border="0" width="100%">
<thead>
<tr class="TextoTit" align="center">
<th colspan="2" height="50">Esta operação excluirá o
<%out.print(a.getDescricao());%> de <font
color="blue"><%out.print(a.getPessoa().getNome());%> </font> chamado:<font color="blue">
<%out.print(a.getNome());%> </font> </th>
</tr>
</thead>
<tbody>
<tr class="TextoTit">
<td colspan="2"align="center" height="60">Confirma a exclusão?</td>
</tr>
<tr align="center" >
<td width="50%" align="right" height="150"><form
action="excluir_animal.jsp" method="post" name="Formulario"> <input type="hidden"
name="op" value="1"><input type="hidden" name="idAnimal"
value="<%out.print(a.getIdAnimal());%>"> <input type="submit" name="btn_sim"
value="SIM"> </form></td>
<td width="50%" align="left" height="150"><form
action="../consultas/animal.jsp" method="post" name="Formulario"> <input
Benefrancis do Nascimento 236
SISTEMA WEB
type="submit" name="btn_sim" value="NÃO" > </form></td>
</tr>
</tbody>
</table>
<%
}
} catch (Exception e) {
out.print("<br>");
out.print("<center><font face='verdana' color='red' size='2'>Erro ao
excluir </font></center>");
out.print("<center><font face='verdana' color='red' size='2'>" +
e.getMessage() + "<br>" + e.getCause() + "</font></center>");
}
%>
</td>
</tr>
<tr>
<td colspan="2">
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</body>
</html>
Figure 15 ‐ código fonte da página excluir_animal.jsp
Benefrancis do Nascimento 237
SISTEMA WEB
Veja abaixo o layout da página excluir_animal.jsp.
Figure 16 ‐ Layout da página excluir_animal.jsp
servico.jsp
A página servico.jsp do diretório de consultas lista todos os serviços realizados que estão
registrados no sistema. Apresenta link para detalhar, alterar e excluir.
Abaixo, o código fonte da página servico.jsp.
Benefrancis do Nascimento 238
SISTEMA WEB
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@ page import="br.com.benefrancis.controle.*" %>
<%@ page import="br.com.benefrancis.util.Util" %>
<%@page import="java.util.List" %>
<%@page import="java.util.ListIterator" %>
<%@page import="java.util.ArrayList" %>
<%
List<Servico> sList = new ArrayList<Servico>();
String data = "";
%>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>SERVIÇOS
REALIZADOS</strong></td>
</tr>
<tr>
Benefrancis do Nascimento 239
SISTEMA WEB
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
<tr>
<td colspan="2"><hr size="1"></td>
</tr>
<tr>
<td colspan="2">
<table border="0" width="100%">
<thead>
<tr class="TopoTit">
<th>DATA</th>
<th>TIPO</th>
<th>NOME</th>
<th>ANIMAL</th>
<th>VALOR</th>
<th>AÇÕES</th>
</tr>
</thead>
<tbody><%
try {
sList = (List<Servico>)Servico.consultar();
Benefrancis do Nascimento 240
SISTEMA WEB
for (ListIterator iter = sList.listIterator(); iter.hasNext();) {
Servico achei = (Servico) iter.next();
data = achei.getData().toLocaleString().substring(0, 10);
%>
<tr class="Txt" >
<td><%out.print(data);%></td>
<td><%out.print(achei.getNome());%></td>
<td><%out.print(achei.getDescricao());%></td>
<td><% out.print(achei.getAnimal().getNome());%></td>
<td align="right"><%out.print(achei.getValor());%></td>
<td class="Txt" align="center">
<table border="0" align="center" cellpadding="2" cellspacing="2"
width="100%">
<tr align="center" valign="middle">
<td><a
href="../consultas/detalhe_servico.jsp?idServico=<%out.print(achei.getIdServico());%>">
<img src="../images/img_lupa_transparente.png" width="30"
height="30" alt="consultar" title="consultar" border="0"/>
</a>
</td>
<td><a
href="../consultas/editar_servico.jsp?idServico=<%out.print(achei.getIdServico());%>">
<img src="../images/img_caderno_transparente.png"
width="30" height="30" alt="editar" title="editar" border="0"/>
</a>
</td>
<td>
Benefrancis do Nascimento 241
SISTEMA WEB
<a href="../consultas/excluir_servico.jsp?idServico=<%out.print(achei.getIdServico());%>">
<img src="../images/img_lixeira_transparente.png" width="30"
height="30" alt="excluir" title="excluir" border="0"/>
</a>
</td>
</tr>
</table>
</td>
</tr>
<%}
} catch (Exception e) {
out.print("<br>");
out.print("<center><font face='verdana' color='red' size='2'>Erro ao listar
serviços </font></center>");
out.print("<center><font face='verdana' color='red' size='2'>" + e.getMessage()
+ "</font></center>");
}
%>
</tbody>
</table>
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</body>
</html>
Figure 17 ‐ O código fonte da página servico.jsp
Benefrancis do Nascimento 242
SISTEMA WEB
Veja abaixo o layout da página servico.jsp
Figure 18 ‐ Layout da página servico.jsp
detalhe_servico.jsp
Codificaremos agora a página detalhe_servico.jsp.
Benefrancis do Nascimento 243
SISTEMA WEB
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="java.util.*" %>
<%@page import="br.com.benefrancis.controle.*" %>
<%@page import="br.com.benefrancis.util.Util" %>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>DETALHAMENTO DE
SERVIÇO REALIZADO</strong></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
</td>
</tr>
Benefrancis do Nascimento 244
SISTEMA WEB
<tr>
<td height="104" colspan="2" valign="top" >
<form action="registrar.jsp" method="post" name="Formulario" >
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<!‐‐DWLayoutTable‐‐>
<tr>
<td colspan="2">
<%
int idServico =
Integer.parseInt(Util.SoNumero(request.getParameter("idServico")));
String data = "";
try {
Servico servico = Servico.consultar(idServico);
data = servico.getData().toLocaleString().substring(0, 10);
%>
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<tr >
<td width="20%" class="TopoTit">CLIENTE: </td>
<td class="TextoTit"><%
out.print(servico.getAnimal().getPessoa().getNome());%></td>
</tr>
<tr>
Benefrancis do Nascimento 245
SISTEMA WEB
<td width="20%" class="TopoTit">ANIMAL DE ESTIMAÇÃO: </td>
<td class="TextoTit" ><%
out.print(servico.getAnimal().getNome());%></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"><hr size="1"></td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>SERVIÇO
EXECUTADO</strong></td>
</tr>
<tr>
<td colspan="2">
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<tr>
<td width="162" class="Txt">Serviço</td>
<td width="436" class="Txt">
<% out.print(servico.getNome());%>
</td>
</tr>
<tr>
<td width="162" height="27" valign="top" class="Txt">Nome /
Descrição </td>
Benefrancis do Nascimento 246
SISTEMA WEB
<td width="436" valign="top" class="Txt">
<% out.print(servico.getNome());%>
</td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Valor R$ </td>
<td valign="top" class="Txt">
<% out.print(servico.getValor());%>
</td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Data de execução</td>
<td valign="top" class="Txt">
<% out.print(data);%>
</td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Observacao</td>
<td valign="top" class="Txt">
<% out.print(servico.getObservacao());%>
<td>
</tr>
<tr>
<td colspan="2"> </td>
Benefrancis do Nascimento 247
SISTEMA WEB
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
</table>
</form>
</td>
</tr>
<tr>
<td class="Txt"> </td>
<td class="Txt">
</td>
</tr>
<tr>
<td colspan="2">
<% } catch (Exception ex) {
ex.printStackTrace();
out.print("<br>");
out.print("<br>");
out.print("<br>");
out.print("<br><center><font face='verdana' color='red' size='2'><br
Benefrancis do Nascimento 248
SISTEMA WEB
/>Erro ao cadastrar o serviço executado</font></center><br>");
out.print("<br><center><font face='verdana' color='red' size='2'><br />"
+ ex.getMessage() + "</font></center><br>");
out.print("<br>");
out.print("<br>");
}
%>
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</body>
</html>
Figure 19 ‐ Código fonte da página detalhe_servico.jsp
Abaixo o layout da página detalhe_servico.jsp.
Benefrancis do Nascimento 249
SISTEMA WEB
Figure 20 ‐ Layout da página detalhe_servico.jsp
Editar_servico.jsp
Codificaremos agora a página editar_servico.jsp.
Benefrancis do Nascimento 250
SISTEMA WEB
<%@page contentType="text/html" pageEncoding="UTF‐8"%>
<%@page import="java.util.*" %>
<%@ page import="br.com.benefrancis.controle.*" %>
<%@ page import="br.com.benefrancis.util.Util" %>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>DETALHAMENTO DE
SERVIÇO REALIZADO</strong></td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2">
</td>
Benefrancis do Nascimento 251
SISTEMA WEB
</tr>
<tr>
<td height="104" colspan="2" valign="top" >
<form action="editar_servico.jsp" method="post" name="Formulario" >
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<!‐‐DWLayoutTable‐‐>
<tr>
<td colspan="2">
<%
int op = 0;
try {
op = Integer.parseInt(Util.SoNumero(request.getParameter("op")));
} catch (Exception e) {
e.printStackTrace();
}
int idServico =
Integer.parseInt(Util.SoNumero(request.getParameter("idServico")));
String data = "";
Servico servico = Servico.consultar(idServico);
data = servico.getData().toLocaleString().substring(0, 10);
try {
Benefrancis do Nascimento 252
SISTEMA WEB
if (op == 0) {
%>
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<tr >
<td width="20%" class="TopoTit">CLIENTE: </td>
<td class="TextoTit"><%
out.print(servico.getAnimal().getPessoa().getNome());%></td>
</tr>
<tr>
<td width="20%" class="TopoTit">ANIMAL DE ESTIMAÇÃO: </td>
<td class="TextoTit" ><%
out.print(servico.getAnimal().getNome());%></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"><hr size="1"></td>
</tr>
<tr>
<td height="22" colspan="2" valign="top" class="Txt"><strong>SERVIÇO
EXECUTADO</strong></td>
</tr>
<tr>
<td colspan="2">
Benefrancis do Nascimento 253
SISTEMA WEB
<table width="100%" border="0" cellpadding="0" cellspacing="0"
align="center">
<tr>
<td width="162" class="Txt">Serviço</td>
<td width="436" class="Txt">
<select name="servico" id="servico">
<option value="Consulta" <%if
(servico.getNome().equals("Consulta")) {%> selected="true" <%}%> >Consulta
Veterinária</option>
<option value="Banho" <%if
(servico.getNome().equals("Banho")) {%> selected="true" <%}%> >Banho</option>
<option value="Tosa" <%if (servico.getNome().equals("Tosa"))
{%> selected="true" <%}%> >Tosa</option>
<option value="Vacina" <%if
(servico.getNome().equals("Vacina")) {%> selected="true" <%}%> >Vacina</option>
</select>
</td>
</tr>
<tr>
<td width="162" height="27" valign="top" class="Txt">Nome /
Descrição </td>
<td width="436" valign="top" class="Txt">
<input name="nome" value="<%
out.print(servico.getNome());%>"type="text" id="nome" size="50" maxlength="100">
</td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Valor R$ </td>
<td valign="top" class="Txt">
Benefrancis do Nascimento 254
SISTEMA WEB
<input name="valor" value="<% out.print(servico.getValor());%>"
type="text" size="11" maxLength="10" onKeyUp="javascript:Sonumero(this)">
</td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Data de execução</td>
<td valign="top" class="Txt">
<input type="text" value="<% out.print(data);%>" name="data" >
</td>
</tr>
<tr>
<td height="27" valign="top" class="Txt">Observacao</td>
<td valign="top" class="Txt">
<textarea name="observacao" rows="4" cols="50"><%
if (servico.getObservacao() != null && servico.getObservacao() != "" &&
servico.getObservacao() != "null") {
out.print(servico.getObservacao().trim());
}%></textarea>
<td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
</table>
</td>
Benefrancis do Nascimento 255
SISTEMA WEB
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td class="Txt" width="23%"> </td>
<td class="Txt" width="77%">
<input type="hidden" name="op" value="3" />
<input type="hidden" name="idAnimal" value="<%
out.print(servico.getAnimal().getIdAnimal());%>" />
<input type="hidden" name="idServico" value="<%
out.print(servico.getIdServico());%>" />
<input type="button" name="Btn_Entrar" value="Alterar"
onClick="ValidarRegistro(document.Formulario);" >
</td>
</tr>
</table>
</form>
</td>
</tr>
<tr>
<td class="Txt"> </td>
<td class="Txt">
<%
} else if (op == 3) {
String servicoEscolhido = "";
String nome = "";
Benefrancis do Nascimento 256
SISTEMA WEB
int periodicidade = 0;
String novaData = "";
//Criando um objeto serviço
servicoEscolhido = request.getParameter("servico");
novaData = request.getParameter("data");
servico = Servico.consultar(servico.getIdServico());
if (Util.validarData(novaData)) {
servico.setData(new Date(novaData));
}
try {
nome = request.getParameter("nome");
if (nome == null || nome == "" || nome == "0") {
throw new RuntimeException("Informe o nome ou descrição do serviço efetuado");
} else {
servico.setNome(nome);
}
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Erro ao pegar o nome do serviço efetuado");
}
double valor = 0;
try {
valor = Double.parseDouble(request.getParameter("valor"));
Benefrancis do Nascimento 257
SISTEMA WEB
servico.setValor(valor);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Informe corretamente o valor do serviço executado");
}
String observacao = null;
try {
observacao = request.getParameter("observacao");
servico.setObservacao(observacao);
} catch (Exception ex) {
ex.printStackTrace();
throw new RuntimeException("Erro ao pegar o nome do serviço efetuado");
}
Servico.alterar(servico);
out.print("<br>");
out.print("<br>");
out.print("<br>");
out.print("<br><center><font face='verdana' color='blue' size='2'><br />Serviço atualizado
com sucesso!</font></center><br>");
out.print("<br>");
out.print("<br>");
} else {
throw new RuntimeException("Operação inválida");
}
Benefrancis do Nascimento 258
SISTEMA WEB
%>
</td>
</tr>
<tr>
<td colspan="2">
<% } catch (Exception ex) {
ex.printStackTrace();
out.print("<br>");
out.print("<br>");
out.print("<br>");
out.print("<br><center><font face='verdana' color='red' size='2'><br
/>Erro ao cadastrar o serviço executado</font></center><br>");
out.print("<br><center><font face='verdana' color='red' size='2'><br />"
+ ex.getMessage() + "</font></center><br>");
out.print("<br>");
out.print("<br>");
}
%>
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</body>
</html>
Figure 19 ‐ Código fonte da página editar_servico.jsp
Benefrancis do Nascimento 259
SISTEMA WEB
Abaixo o layout da página editar_servico.jsp.
Figure 20 ‐ Layout da página editar_servico.jsp
Excluir_servico.jsp
E para finalizar codificaremos a página excluir_servico.jsp
Benefrancis do Nascimento 260
SISTEMA WEB
<%@ page contentType="text/html" pageEncoding="UTF‐8"%>
<%@ page import="br.com.benefrancis.controle.*" %>
<%@ page import="br.com.benefrancis.util.Util" %>
<%@ page import="java.util.List"%>
<%@ page import="java.util.ArrayList"%>
<%@ page import="java.util.ListIterator" %>
<!DOCTYPE HTML PUBLIC "‐//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<jsp:include page="../geral/head.jsp" />
<body>
<table width="750" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="2">
<jsp:include page="../geral/topo.jsp" />
</td>
</tr>
<tr>
<td colspan="2">
<%
int op = 0;
int idServico = 0;
Servico s = null;
Benefrancis do Nascimento 261
SISTEMA WEB
try {
if (!request.getParameter("op").isEmpty()) {
op = Integer.parseInt(request.getParameter("op"));
}
} catch (Exception ex) {
ex.printStackTrace();
}
try {
if (!request.getParameter("idServico").isEmpty()) {
idServico = Integer.parseInt(Util.SoNumero(request.getParameter("idServico")));
}
} catch (Exception ex) {
ex.printStackTrace();
}
s = Servico.consultar(idServico);
try {
if (op == 1 && idServico > 0) { //Op =1 : Deletar
Servico.excluir(s);
out.print("<br>");
out.print("<br>");
out.print("<br>");
out.print("<center><font face='verdana' color='blue' size='2'>Registro excluído
com sucesso</font></center>");
out.print("<br>");
out.print("<br>");
out.print("<br>");
Benefrancis do Nascimento 262
SISTEMA WEB
} else {%>
<table border="0" width="100%">
<thead>
<tr class="TextoTit" align="center">
<th colspan="2" height="50">Esta operação excluirá o serviço referente <%
out.print(s.getNome() +" ‐ "+s.getDescricao() );%> em <font
color="blue"><%out.print(s.getAnimal().getNome());%> </font> que pertence a <font
color="blue"> <%out.print(s.getAnimal().getPessoa().getNome());%></font> </th>
</tr>
</thead>
<tbody>
<tr class="TextoTit">
<td colspan="2"align="center" height="60">Confirma a exclusão?</td>
</tr>
<tr align="center" >
<td width="50%" align="right" height="150"><form
action="excluir_servico.jsp" method="post" name="Formulario"> <input type="hidden"
name="op" value="1"><input type="hidden" name="idServico"
value="<%out.print(s.getIdServico());%>"> <input type="submit" name="btn_sim"
value="SIM"> </form></td>
<td width="50%" align="left" height="150"><form
action="../consultas/servico.jsp" method="post" name="Formulario"> <input
type="submit" name="btn_sim" value="NÃO" > </form></td>
</tr>
</tbody>
</table>
<%
}
Benefrancis do Nascimento 263
SISTEMA WEB
} catch (Exception e) {
out.print("<br>");
out.print("<center><font face='verdana' color='red' size='2'>Erro ao excluir
</font></center>");
out.print("<center><font face='verdana' color='red' size='2'>" + e.getMessage() +
"<br>" + e.getCause() + "</font></center>");
}
%>
</td>
</tr>
<tr>
<td colspan="2">
<jsp:include page="../geral/rodape.jsp" />
</td>
</tr>
</table>
</body>
</html>
Figure 21 ‐ Código fonte da página excluir_servico.jsp
Benefrancis do Nascimento 264
SISTEMA WEB
Aprento o layout da página excluir_servico.jsp.
Figure 22 ‐ excluir_servico.jsp
Benefrancis do Nascimento 265
SISTEMA WEB
Considerações finais
Lembrando mais uma vez que estou aberto à criticas e sugestões, com objetivo de
alimentar o processo de melhoria contínua de meus artigos. O contato deverá ser
estabelecido por meio do seguinte endereço eletrônico:
benefrancis@gmail.com
twitter:
@Benefrancis
Skype:
Benefrancis.com
Importante:
1 ‐ Conforme lei 9.610/98, que dispõe sobre direitos autorais, a reprodução parcial ou integral
desta obra sem autorização prévia e expressa do autor constitui ofensa aos seus direitos
autorais (art. 29). Em caso de interesse, em editar ou publicar esta obra entre em contato com
o autor do texto.
2 ‐ Entretanto, de acordo com a lei 9.610/98, art. 46, não constitui ofensa aos direitos autorais
a citação de passagens da obra para fins de estudo, crítica ou polêmica, na medida justificada
para o fim a atingir, indicando‐se o nome do autor (Benefrancis do Nascimento) .