Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


caelum - java - web - fj21, Manuais, Projetos, Pesquisas de Informática

Livro muityo bom para iniciantes em aplicações web com o Java.

Tipologia: Manuais, Projetos, Pesquisas

2011
Em oferta
30 Pontos
Discount

Oferta por tempo limitado


Compartilhado em 10/03/2011

yuri-feitosa-12
yuri-feitosa-12 🇧🇷

2 documentos

1 / 209

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64
Discount

Em oferta

Pré-visualização parcial do texto

Baixe caelum - java - web - fj21 e outras Manuais, Projetos, Pesquisas em PDF para Informática, somente na Docsity!

Caelum

“Mata o tempo e matas a tua carreira” Bryan Forbes

Sobre a empresa

A Caelum atua no mercado desde 2002, desenvolvendo sistemas e prestando consultoria em diversas áreas, à luz sempre da plataforma Java. Foi fundada por profissionais que se encontraram no Brasil depois de uma experiência na Alemanha e Itália, desenvolvendo sistemas de grande porte com integração aos mais variados ERPs. Seus profissionais publicaram já diversos artigos nas revistas brasileiras de Java, assim como artigos em eventos acadêmicos, e são presença constante nos eventos da tecnologia. Em 2004 a Caelum criou uma gama de cursos que rapidamente ganharam grande reconhecimento no mercado. Os cursos foram elaborados por ex instrutores da Sun que queriam trazer mais dinamismo e aplicar as ferramentas e bibliotecas utilizadas no mercado, tais como Eclipse, Hibernate, Struts, e outras tecnlogias open source que não são abordadas pela Sun. O material utilizado foi inicialmente desenvolvido enquanto eram ministrados os cursos de verão de java da Universidade de São Paulo em janeiro de 2004 pelos instrutores da Caelum. Em 2006 a empresa foca seus projetos em três grandes áreas: sistemas de gerenciamento de conteúdo para portais, desenvolvimento de soluções de integração financeira e treinamento com intuito de formação.

Sobre a apostila

Esta é a apostila da Caelum que tem como intuito ensinar Java de uma maneira elegante, mostrando apenas o que é necessário no momento correto e poupando o leitor de assuntos que não costumam ser de seu interesse em determinadas fases do aprendizado. A Caelum espera que você aproveite esse material, e que ele possa ser de grande valia para auto didatas e estudantes. Todos os comentários, críticas e sugestões serão muito bem vindos. O material aqui contido pode ser publicamente distribuído desde que não seja alterado e seus créditos sejam mantidos. Ele não pode ser usado para ministrar qualquer curso, porém pode ser referência e material de apoio. Caso você esteja interessado em usá lo fins comerciais, entre em contato com a empresa. Atenção: Você pode verificar a data de última atualização da apostila no fim do índice. Nunca imprima a apostila que você receber de um amigo ou pegar por email, pois atualizamos constantemente esse material, quase que mensalmente. Vá até o nosso site e faça o download da última versão! www.caelum.com.br

  • Capítulo 1: Como aprender Java......................................................................... Índice
    • 1.1 - O que é realmente importante?..............................................................
    • 1.2 - Sobre os exercícios.................................................................................
    • 1.3 - Tirando dúvidas.......................................................................................
    • 1.4 - Sobre o curso..........................................................................................
    • 1.5 - Sobre os autores.....................................................................................
  • Capítulo 2: JDBC – java.sql.................................................................................
    • 2.1 - Executando o eclipse pela primeira vez..................................................
    • 2.2 - Criando nosso projeto no eclipse............................................................
    • 2.3 - O banco...................................................................................................
    • 2.4 - Sockets: uma idéia inocente...................................................................
    • 2.5 - A conexão em Java..................................................................................
    • 2.6 - Fábrica de Conexões...............................................................................
    • 2.7 - Fábrica de Conexões – facilitando o acesso ao banco.............................
    • 2.8 - Exercícios..............................................................................................
    • 2.9 - A tabela de exemplo..............................................................................
    • 2.10 - Javabeans............................................................................................
    • 2.11 - Exercícios............................................................................................
    • 2.12 - Inserindo dados...................................................................................
    • 2.13 - Soluções para viagem – Design Patterns............................................
    • 2.14 - DAO – Data Access Object..................................................................
    • 2.15 - Exercícios............................................................................................
    • 2.16 - Exercícios adicionais...........................................................................
    • 2.17 - Pesquisando........................................................................................
    • 2.18 - Exercícios............................................................................................
    • 2.19 - Um pouco mais....................................................................................
    • 2.20 - Exercícios adicionais...........................................................................
    • 2.21 - Desafios...............................................................................................
    • 2.22 - Exercícios adicionais...........................................................................
    • 2.23 - Exercícios adicionais...........................................................................
  • Capítulo 3: O que é o JEE?................................................................................
    • 3.1 - As especificações..................................................................................
    • 3.2 - APIs.......................................................................................................
    • 3.3 - Referência de Implementação..............................................................
    • 3.4 - Implementações compatíveis com a especificação...............................
    • 3.5 - Apache?.................................................................................................
  • Capítulo 4: Servlet Contêiner...........................................................................
    • 4.1 - Introdução.............................................................................................
    • 4.2 - Servlet Contêiner..................................................................................
    • 4.3 - Tipos de contêiner.................................................................................
    • 4.4 - Instalando o tomcat...............................................................................
    • 4.5 - Em casa: iniciando o tomcat.................................................................
    • 4.6 - Em casa: parando o tomcat...................................................................
    • 4.7 - O tomcat no windows............................................................................
  • Capítulo 5: O eclipse e seus plugins.................................................................
    • 5.1 - Os plugins Sysdeo e Amateras..............................................................
    • 5.2 - Configurando o plugin do amateras no eclipse.....................................
    • 5.3 - Configurando o plugin do tomcat no eclipse........................................
    • 5.4 - Em casa: Instalando o eclipse............................................................... Caelum Java para desenvolvimento Web
    • 5.5 - Em casa: Instalando o plugin para o tomcat.........................................
    • 5.6 - Em casa: Instalando o plugin para arquivos jsp, html e xml................
    • 5.7 - Plugins do eclipse no windows..............................................................
  • Capítulo 6: Novo projeto web...........................................................................
    • 6.1 - Novo projeto..........................................................................................
    • 6.2 - Configurando no tomcat........................................................................
    • 6.3 - Erros comuns........................................................................................
    • 6.4 - Análise do resultado final......................................................................
    • 6.5 - O driver do oracle em um servidor tomcat..........................................
    • 6.6 - web.xml.................................................................................................
    • 6.7 - Configurando o Amateras.....................................................................
    • 6.8 - Em casa: configurando o tomcat sem o plugin.....................................
  • Capítulo 7: JSP – Java Server Pages..................................................................
    • 7.1 - O que é uma página JSP........................................................................
    • 7.2 - Exercícios..............................................................................................
    • 7.3 - Listando os contatos..............................................................................
    • 7.4 - Exercícios..............................................................................................
    • 7.5 - Erros comuns........................................................................................
    • 7.6 - HTML e Java: eu não quero código Java no meu jsp!...........................
    • 7.7 - EL: Expression language.......................................................................
    • 7.8 - Exercícios..............................................................................................
    • 7.9 - Exercícios adicionais.............................................................................
    • 7.10 - Erros comuns......................................................................................
    • 7.11 - Exercícios Adicionais..........................................................................
    • 7.12 - Instanciando POJOs.............................................................................
    • 7.13 - Compilando os arquivos JSP...............................................................
  • Capítulo 8: JSTL – JavaServer Pages Tag Library............................................
    • 8.1 - JSTL.......................................................................................................
    • 8.2 - As empresas hoje em dia.......................................................................
    • 8.3 - Instalação..............................................................................................
    • 8.4 - Cabeçalho para a JSTL core..................................................................
    • 8.5 - For.........................................................................................................
    • 8.6 - Exercícios..............................................................................................
    • 8.7 - c:out e c:set...........................................................................................
    • 8.8 - Mas quais são as tags da taglib core?...................................................
    • 8.9 - Import: trabalhando com cabeçalhos e rodapés...................................
    • 8.10 - Exercícios............................................................................................
    • 8.11 - Erros Comuns......................................................................................
    • 8.12 - Inclusão estática de arquivos..............................................................
    • 8.13 - Exercícios............................................................................................
    • 8.14 - Trabalhando com links........................................................................
    • 8.15 - Exercícios adicionais...........................................................................
    • 8.16 - Tag <c:if>...........................................................................................
    • 8.17 - Exercícios............................................................................................
  • Capítulo 9: Controle de erro.............................................................................
    • 9.1 - Exceptions.............................................................................................
    • 9.2 - JSTL é a solução?..................................................................................
    • 9.3 - Exercícios adicionais.............................................................................
    • 9.4 - Tratamento padrão de erros – modo declarativo.................................. Caelum Java para desenvolvimento Web
    • 9.5 - Página de erro.......................................................................................
    • 9.6 - Configurando a página de erro.............................................................
    • 9.7 - Quando acontece um erro em uma página jsp......................................
    • 9.8 - Exercícios..............................................................................................
    • 9.9 - Tratamento de outros erros..................................................................
    • 9.10 - Erros comuns......................................................................................
    • 9.11 - Exercícios............................................................................................
    • 9.12 - Erros Comuns......................................................................................
  • Capítulo 10: Servlets.........................................................................................
    • 10.1 - Servlet.............................................................................................
    • 10.2 - A estrutura de diretórios.....................................................................
    • 10.3 - Mapeando uma servlet no web.xml....................................................
    • 10.4 - Exercícios............................................................................................
    • 10.5 - Erros comuns......................................................................................
    • 10.6 - Init e Destroy.......................................................................................
    • 10.7 - Curiosidades do mapeamento de uma servlet....................................
    • 10.8 - OutputStream x PrintWriter................................................................
    • 10.9 - Parâmetros..........................................................................................
    • 10.10 - Exercícios..........................................................................................
    • 10.11 - Exercícios adicionais.........................................................................
    • 10.12 - doGet, doPost e outros......................................................................
    • 10.13 - Conversão de parâmetros.................................................................
    • 10.14 - Exercícios..........................................................................................
    • 10.15 - Exercícios adicionais.........................................................................
    • 10.16 - Variáveis membro..............................................................................
    • 10.17 - Exercícios..........................................................................................
    • 10.18 - HTML e Java: eu não quero código Html na minha servlet!.............
    • 10.19 - Como funciona uma página JSP........................................................
    • 10.20 - Web archive (.war)............................................................................
    • 10.21 - Exercícios..........................................................................................
    • 10.22 - Quando acontece um erro em uma servlet.......................................
    • 10.23 - O try e catch......................................................................................
    • 10.24 - Exercícios..........................................................................................
    • 10.25 - Servlet para adicionar contatos no banco......................................
    • 10.26 - Exercício.........................................................................................
  • Capítulo 11: Servlet e JSP API........................................................................
    • 11.1 - Início e término da sua aplicação.....................................................
    • 11.2 - Exercícios..........................................................................................
    • 11.3 - getServletContext()...........................................................................
    • 11.4 - Exercícios..........................................................................................
    • 11.5 - Acessando a aplicação no jsp............................................................
    • 11.6 - Exercícios..........................................................................................
    • 11.7 - Propriedades de páginas jsp.............................................................
  • Capítulo 12: Model View Controller...............................................................
    • 12.1 - Servlet ou JSP?..................................................................................
    • 12.2 - Request dispatchers.........................................................................
    • 12.3 - Exercício...........................................................................................
    • 12.4 - Resultado..........................................................................................
    • 12.5 - Melhorando o processo..................................................................... Caelum Java para desenvolvimento Web
  • Capítulo 13: Construindo um Framework MVC.............................................
    • 13.1 - Nossa interface de execução............................................................
    • 13.2 - Exercícios..........................................................................................
    • 13.3 - Criando um controlador e um pouco mais de reflection...................
    • 13.4 - Configurando o web.xml...................................................................
    • 13.5 - Exercícios..........................................................................................
    • 13.6 - Exercícios..........................................................................................
    • 13.7 - Exercícios Adicionais........................................................................
    • 13.8 - Model View Controller......................................................................
    • 13.9 - Lista de tecnologias: camada de controle.........................................
    • 13.10 - Lista de tecnologias: camada de visualização................................
    • 13.11 - MVC 2.............................................................................................
  • Capítulo 14: Jakarta Struts.............................................................................
    • 14.1 - Struts.................................................................................................
    • 14.2 - Configurando o Struts.......................................................................
    • 14.3 - Exercícios..........................................................................................
    • 14.4 - Arquivo de mensagens......................................................................
    • 14.5 - Exercícios..........................................................................................
    • 14.6 - Erros comuns....................................................................................
    • 14.7 - Uma ação Struts................................................................................
    • 14.8 - Configurando a ação no struts-config.xml........................................
    • 14.9 - Exercícios..........................................................................................
    • 14.10 - Erros comuns..................................................................................
    • 14.11 - Pesquisando um banco de dados....................................................
    • 14.12 - Criando a ação................................................................................
    • 14.13 - O arquivo web/lista.jsp....................................................................
    • 14.14 - struts-config.xml.............................................................................
    • 14.15 - Exercício.........................................................................................
    • 14.16 - Resultado condicional com o Struts................................................
    • 14.17 - Exercícios........................................................................................
    • 14.18 - Resultado do struts-config.xml.......................................................
    • 14.19 - Novos contatos................................................................................
    • 14.20 - Formulário.......................................................................................
    • 14.21 - Mapeando o formulário no arquivo struts-config.xml.....................
    • 14.22 - Exercício.........................................................................................
    • 14.23 - Lógica de Negócios.........................................................................
    • 14.24 - Exercício.........................................................................................
    • 14.25 - Erros comuns..................................................................................
    • 14.26 - Validando os campos.......................................................................
    • 14.27 - Exercício.........................................................................................
    • 14.28 - Erros comuns..................................................................................
    • 14.29 - Limpando o formulário....................................................................
    • 14.30 - Exercícios........................................................................................
    • 14.31 - Exercícios........................................................................................
    • 14.32 - Dois formulários para a mesma ação..............................................
    • 14.33 - Exercícios adicionais.......................................................................
    • 14.34 - Struts-logic taglib: um exemplo antigo de for................................
    • 14.35 - Um pouco mais................................................................................
  • Capítulo 15: Jakarta Struts............................................................................. Caelum Java para desenvolvimento Web
    • 15.1 - Preparando um sistema de login......................................................
    • 15.2 - Passo 1: Formbean............................................................................
    • 15.3 - Passo 2: A página de login: login.jsp.................................................
    • 15.4 - Exercício...........................................................................................
    • 15.5 - A ação................................................................................................
    • 15.6 - A ação no struts-config.xml...............................................................
    • 15.7 - ok.jsp e erro.jsp.................................................................................
    • 15.8 - Exercícios..........................................................................................
    • 15.9 - Testando............................................................................................
    • 15.10 - Erros comuns..................................................................................
    • 15.11 - Exercícios........................................................................................
    • 15.12 - Cookies............................................................................................
    • 15.13 - Sessão.............................................................................................
    • 15.14 - Configurando o tempo limite..........................................................
    • 15.15 - Registrando o usuário logado na sessão.........................................
    • 15.16 - Exercícios........................................................................................
    • 15.17 - Mas e o login acessando o banco de dados?...................................
  • Capítulo 16: Hibernate 3.2.............................................................................
    • 16.1 - Vantagens..........................................................................................
    • 16.2 - Criando seu projeto...........................................................................
    • 16.3 - Modelo..............................................................................................
    • 16.4 - Configurando a classe/tabela Produto
    • 16.5 - Exercícios..........................................................................................
    • 16.6 - Propriedades do banco......................................................................
    • 16.7 - Exercícios..........................................................................................
    • 16.8 - Configurando....................................................................................
    • 16.9 - Criando as tabelas.............................................................................
    • 16.10 - Exercícios........................................................................................
    • 16.11 - Sessões............................................................................................
    • 16.12 - Hibernate Session Factory..............................................................
    • 16.13 - Exercícios........................................................................................
    • 16.14 - Salvando novos objetos...................................................................
    • 16.15 - Exercícios........................................................................................
    • 16.16 - Buscando pelo id.............................................................................
    • 16.17 - Criando o ProdutoDAO
    • 16.18 - Exercícios........................................................................................
    • 16.19 - Buscando com uma cláusula where................................................
    • 16.20 - ProdutoDAO: Listar tudo e fazer paginação...................................
    • 16.21 - Exercícios para o preguiçoso..........................................................
    • 16.22 - Exercícios adicionais.......................................................................
  • Capítulo 17: E agora?.....................................................................................
    • 17.1 - Certificação.......................................................................................
    • 17.2 - Frameworks......................................................................................
    • 17.3 - Revistas.............................................................................................
    • 17.4 - Falando em Java................................................................................
  • Capítulo 18: Apêndice A - VRaptor.................................................................
    • 18.1 - Eu não quero o que eu não conheço.................................................
    • 18.2 - Vantagens..........................................................................................
    • 18.3 - Vraptor 2........................................................................................... Caelum Java para desenvolvimento Web
    • 18.4 - Instalando e configurando o VRaptor...............................................
    • 18.5 - Minha primeira lógica de negócios...................................................
    • 18.6 - E o jsp com o formulário? web/vraptor-formulario.jsp.....................
    • 18.7 - E a página final? web/contato/adiciona.ok.jsp..................................
    • 18.8 - Como configurar esse redirecionamento?........................................
    • 18.9 - Exercícios..........................................................................................
    • 18.10 - Log..................................................................................................
    • 18.11 - Um pouco mais................................................................................
  • Capítulo 19: Apêndice B - Jakarta Velocity.....................................................
    • 19.1 - Velocity..............................................................................................
    • 19.2 - Vantagens..........................................................................................
    • 19.3 - Templates Velocity............................................................................
    • 19.4 - Instalando e configurando o Velocity e Velocity Tools......................
    • 19.5 - Exercícios..........................................................................................
    • 19.6 - Seu primeiro template......................................................................
    • 19.7 - Exercícios..........................................................................................
    • 19.8 - Mesclando velocity e o struts............................................................
    • 19.9 - Exercícios..........................................................................................
    • 19.10 - Objetos mais complexos..................................................................
    • 19.11 - Diretivas..........................................................................................
    • 19.12 - IF.....................................................................................................
    • 19.13 - FOREACH.......................................................................................
    • 19.14 - PARSE.............................................................................................
    • 19.15 - Comentários....................................................................................
    • 19.16 - Outras ferramentas.........................................................................
    • 19.17 - ImportTool.......................................................................................
    • 19.18 - CookieTool.......................................................................................
    • 19.19 - Um pouco mais................................................................................
  • Capítulo 20: Apêndice C - Design Patterns.....................................................
    • 20.1 - Factory – exemplo de cache de objetos.............................................
  • Capítulo 21: Apêndice D - Servlets................................................................
    • 21.1 - Configuração de uma servlet............................................................
    • 21.2 - Exercícios..........................................................................................
    • 21.3 - Aplicação...........................................................................................
    • 21.4 - Descobrindo todos os parâmetros do request..................................
  • Capítulo 22: Apêndice E - Design Patterns.....................................................
    • 22.1 - Singleton...........................................................................................
    • 22.2 - Exercícios..........................................................................................
    • 22.3 - Um pouco mais..................................................................................

Caelum – http://www.caelum.com.br Java para desenvolvimento Web

1 Como aprender Java

“Homens sábios fazem provérbios, tolos os repetem” Samuel Palmer Como o material está organizado e dicas de como estudar em casa.

1.1 - O que é realmente importante?

Muitos livros, ao passar os capítulos, mencionam todos os detalhes da linguagem juntamente com os princípios básicos dela. Isso acaba criando muita confusão, em especial pois o estudante não consegue distinguir exatamente o que é importante aprender e reter naquele momento daquilo que será necessário mais tempo e principalmente, experiência para dominar. Se uma classe abstrata deve ou não ter ao menos um método abstrato, se o if só aceitar argumentos booleanos e todos os detalhes de classes internas realmente não devem ser preocupações para aquele que possui como objetivo primário aprender Java. Esse tipo de informação será adquirida com o tempo e não é necessária até um segundo momento. Neste curso separamos essas informações em quadros especiais, já que são informações extras. Ou então apenas citamos num exercício e deixamos para o leitor procurar informações se for de seu interesse. Algumas informações não são mostradas e podem ser adquiridas em tutoriais ou guias de referência, normalmente são detalhes que para um programador experiente em Java é algo importante. Por fim falta mencionar sobre a prática, que deve ser tratada seriamente: todos os exercícios são muito importantes e os desafios podem ser feitos quando o curso acabar. De qualquer maneira recomendamos aos alunos estudar em casa, principalmente aqueles que fazem os cursos intensivos.

O curso

Para aqueles que estão fazendo o curso Java para desenvolvimento Web, é recomendado estudar em casa aquilo que foi visto durante a aula, tentando resolver os exercícios que não foram feitos e os desafios que estão lá para envolver mais o leitor no mundo de Java.

Convenções de Código

Para mais informações sobre as convenções de código fonte Java, acesse: http://java.sun.com/docs/codeconv/

1.2 - Sobre os exercícios

Os exercícios do curso variam entre práticos até pesquisas na Internet, ou mesmo Capítulo 1 Como aprender Java Página 1

capítulo 1

Caelum – http://www.caelum.com.br Java para desenvolvimento Web consultas sobre assuntos avançados em determinados tópicos para incitar a curiosidade do aprendiz na tecnologia. Existem também, em determinados capítulos, uma série de desafios. Eles focam mais no problema computacional que na linguagem, porém são uma excelente forma de treinar a sintaxe e principalmente familiarizar o aluno com a biblioteca padrão Java, além de o aluno ganhar velocidade de raciocínio.

1.3 - Tirando dúvidas

Para tirar dúvidas dos exercícios, ou de Java em geral, recomendamos o fórum do site do GUJ (www.guj.com.br), onde sua dúvida será respondida prontamente. Se você já participa de um grupo de usuários java ou alguma lista de discussão, pode tirar suas dúvidas nos dois lugares. Fora isso, sinta se a vontade de entrar em contato conosco para tirar todas as suas dúvidas durante o curso.

1.4 - Sobre o curso

A Caelum (http://www.caelum.com.br) oferece os cursos e a apostila "Falando em Java", que aborda o ensino dessa linguagem e tecnologia de forma mais simples e prática do que em outros cursos, poupando o aluno de assuntos que não são de seu interesse em determinadas fases do seu aprendizado. As apostilas "Falando em Java" estão parcialmente disponíveis no site http://www.caelum.com.br/fj.jsp. Se você possui alguma colaboração, como correção de erros, sugestões, novos exercícios e outros, entre em contato conosco!

1.5 - Sobre os autores

Guilherme Silveira ([email protected]) é programador e web developer certificado pela Sun, trabalhando com Java desde 2000 como especialista e instrutor. Programou e arquiteturou projetos na Alemanha durante 2 anos. Cofundador do GUJ, escreve para a revista Mundo Java, estuda Matemática Aplicada na USP e é instrutor e consultor na Caelum. Um dos comitters do Codehaus XStream. Paulo Silveira ([email protected]) é programador e desenvolvedor certificado Java. Possui grande experiência em desenvolvimento web, trabalhando em projetos na Alemanha e em diversas consultorias no Brasil. Foi instrutor Java pela Sun, é cofundador do GUJ e formado em ciência da computação pela USP, onde realiza seu mestrado. É um dos editores técnicos da revista Mundo Java. Sérgio Lopes ([email protected]) Bacharelando em Ciência da Computação na USP e desenvolvedor Java desde 2002. É programador certificado Java pela Sun, moderador do GUJ e colaborador da revista Mundo Java. Trabalha com Java para Web e dispositivos móveis, além de ministrar treinamentos na Caelum. Inúmeras modificações e sugestões foram realizadas por outros consultores e instrutores da Caelum, em especial Alexandre da Silva, Fábio Kung e Thadeu Russo. Capítulo 1 Como aprender Java Página 2

Caelum – http://www.caelum.com.br Java para desenvolvimento Web

2 JDBC – java.sql

“O medo é o pai da moralidade” Friedrich Wilhelm Nietzsche Ao término desse capítulo, você será capaz de: conectar se a um banco de dados qualquer através da api java.sql; criar uma fábrica de conexões usando o design pattern Factory; pesquisar dados através de queries; executar comandos no banco de dados; DAO – Data Access Object.

2.1 - Executando o eclipse pela primeira vez

1 ) Abra o terminal e digite: eclipseweb. 2 ) Escolha Workbench. Capítulo 2 JDBC – java.sql Página 4

capítulo 2

Caelum – http://www.caelum.com.br Java para desenvolvimento Web

2.2 - Criando nosso projeto no eclipse

1 ) Crie um projeto no eclipse chamado jdbc e selecione o botão para separar diretórios de entrada e saída. Capítulo 2 JDBC – java.sql Página 5

PERSISTÊNCI A DRIVERMANAG ER Caelum – http://www.caelum.com.br Java para desenvolvimento Web persistência. A biblioteca padrão de persistência em banco de dados em Java é a JDBC mas já existem diversos projetos do tipo ORM (Object Relational Mapping) que solucionam muitos problemas que a estrutura da api do JDBC (e ODBC) gerou.

2.4 - Sockets: uma idéia inocente

Para se conectar a um banco de dados, a primeira idéia, simples em sua forma mas complexa em sua implementação, é a de abrir sockets diretamente com o banco de dados desejado, por exemplo um Oracle, e se comunicar com o mesmo através de seu protocolo proprietário – e não só SQL. Mas você conhece o protocolo proprietário de algum banco de dados? Devido a natureza complexa desses protocolos, seria muito mais simples se existisse alguém em Java com quem nosso programa fosse capaz de se comunicar em Java e ele se comunicasse com o banco em um protocolo qualquer, alheio ao nosso programa.

2.5 - A conexão em Java

O sistema desenvolvido em Java abstrai o método através do qual é possível fazer uma conexão pois as conexões são feitas através de uma ponte que implementa todas as funcionalidades que um banco de dados padrão deve nos fornecer. Por exemplo, toda conexão deve permitir executar código de atualização, pesquisa, etc. Essa implementação precisa ser escolhida. Essa escolha não é feita programaticamente e sim basta usar uma ponte. Veja no esquema ao lado a ponte (implementação) entre o programa (cliente) e o banco de dados. O serviço de encontrar uma ponte, ou seja, um driver certo é delegado para um controlador de drivers. Um gerente de drivers. Nada mais normal que ele se chame DriverManager. Através dele, é possível chamar um método getConnection com uma url que indica qual o banco que desejo abrir. O padrão da url para o driver do mysql que iremos utilizar é: jdbc:mysql://ip/banco Devemos substituir ip pelo ip da máquina e banco pelo nome do banco a ser utilizado. Seguindo o exemplo da linha acima e tudo que foi dito até agora, é possível rodar o exemplo abaixo e receber uma Capítulo 2 JDBC – java.sql Página 7 Interface JDBC BD Implementação JDBC. Qual? Cliente Interface JDBC MySQL Implementação JDBC. MySQL Cliente DriverManager.getConnection("jdbc:mysql://localhost/teste"); DriverManager procura por algum de seus Drivers que aceite essa URL como parâmetro.

Caelum – http://www.caelum.com.br Java para desenvolvimento Web conexão para um banco mysql na própria máquina.... package br.com.caelum.jdbc; // imports aqui (ctrl + shift + o) public class JDBCExemplo { public static void main(String[] args) { try { Connection con = DriverManager.getConnection("jdbc:mysql://localhost/teste"); System.out.println("Conectado!"); con.close(); } catch (SQLException e) { e.printStackTrace(); } } } Mas ao testar o código acima, nada funciona. A conexão não pode ser aberta. Por que? O sistema ainda não consegue descobrir qual implementação do JDBC deve ser usado para a URL mencionada. O primeiro passo é adicionar a implementação ao classpath: o arquivo jar contendo a implementação do mysql ( mysql connector ) precisa ser colocado em um lugar visível ou adicionado à variável de ambiente classpath. Ainda falta registrar o driver do mysql no sistema. Para isso basta carregar ele através do método Class.forName(). Esse método abre uma classe que se registra com o DriverManager.getConnection(). package br.com.caelum.jdbc; // imports aqui (ctrl + shift + o) public class JDBCExemplo { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql://localhost/teste", “root”, “”); System.out.println("Conectado!"); con.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } }

Alterando o banco de dados

Capítulo 2 JDBC – java.sql Página 8 DriverManager SQLServer Oracle MySQL Class.forName("com.mysql.jdbc.Driver"); Avisando o DriverManager sobre a existência de um Driver para o MySQL Drivers conhecidos

Caelum – http://www.caelum.com.br Java para desenvolvimento Web 1 ) Copie o driver do mysql para o seu projeto. a) entre no File Browser; b) procure o diretório caelum; c) clique da direita no driver do mysql, escolha Copy; d) volte para o diretório anterior; e) entre no diretório workspace, jdbc; f) clique da direita e escolha Paste: você acaba de colocar o arquivo .jar no seu projeto. 2 ) Crie uma classe chamada ConnectionFactory que fabrica conexões. a) crie a no pacote br.com.caelum.jdbc b) crie o método estático getConnection que retorna uma nova conexão: public static Connection getConnection() throws SQLException { try { Class.forName("com.mysql.jdbc.Driver"); System.out.println(“Conectando ao banco”); return DriverManager.getConnection("jdbc:mysql://localhost/teste", "root", ""); } catch (ClassNotFoundException e) { throw new SQLException(e.getMessage()); } } 3 ) Crie uma classe chamada TestaConexao no pacote br.com.caelum.jdbc.teste a) coloque o método main public static void main (String[] args) { ... b) fabrique uma conexão: Connection con = ConnectionFactory.getConnection(); c) feche a conexão con.close(); d) Trate os erros com throws. ( Use: Ctrl + 1 e escolha “ add throws declaration” ). 4 ) Rode a sua classe TestaConexao a) Clique da direita na sua classe TestaConexao b) Escolha Run as, Java Application 5 ) Parece que sua aplicação não funciona pois o driver não foi encontrado? Esquecemos de colocar o jar no classpath! (buildpath no eclipse) a) Clique no seu projeto, pressione F5 para executar um Refresh. b) Selecione o seu driver do mysql, clique da direita e escolha Build Path, Add to Build Capítulo 2 JDBC – java.sql Página 10

JAVABEANS Caelum – http://www.caelum.com.br Java para desenvolvimento Web Path. c) Rode novamente sua aplicação TestaConexao agora que colocamos o driver no classpath.

2.9 - A tabela de exemplo

Para criar uma tabela nova, devemos rodar o comando mysql para entrar no mesmo. mysql u root Agora nos preparamos para usar o banco de dados teste : use teste; A seguinte tabela será usada nos exemplos desse capítulo: create table contatos ( id BIGINT NOT NULL AUTO_INCREMENT, nome VARCHAR(255), email VARCHAR(255), endereco VARCHAR(255), primary key (id) ); No banco de dados relacional, é comum representar um contato (entidade) em uma tabela de contatos.

2.10 - Javabeans

O que são Javabeans? A pergunta que não quer se calar pode ser respondida muito facilmente uma vez que a maior confusão feita aí fora é entre Javabeans e Enterprise Java Beans (EJB). Javabeans são classes que possuem o construtor sem argumentos e métodos de acesso do tipo get e set! Mais nada! Simples não? Já os EJBs são java beans com características mais avançadas e são o assunto principal do curso FJ 31 da Caelum. Podemos usar beans por diversos motivos, normalmente as classes de modelo da nossa aplicação costumam ser java beans. Agora iremos utilizar:

  • uma classe com métodos do tipo get e set para cada um de seus parâmetros, que representa algum objeto
  • uma classe com construtor sem argumentos que representa uma coleção de objetos A seguir, você vê um exemplo de uma classe javabean que seria equivalente ao nosso modelo de entidade do banco de dados: package br.com.caelum.jdbc.modelo; public class Contato { Capítulo 2 JDBC – java.sql Página 11