(Parte 1 de 9)

Caelum

"Mata o tempo e matarás a tua carreira" Bryan Forbes

Sobre a empresa

A Caelum atua no mercado desde 2002, desenvolvendo sistemas e prestando consultoria em diversas áreas, sempre à luz da plataforma Java. Foi fundada por profissionais que se encontraram no Brasil após experiências na Alemanha e Itália, desenvolvendo sistemas de grande porte, com integração aos mais variados ERPs. Seus profissionais já publicaram diversos artigos nas revistas brasileiras sobre Java, artigos acadêmicos e são presença constante nos eventos de 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 tecnologias open source que não são abordadas pela Sun. O material utilizado foi elaborado durante os cursos de verão de Java na Universidade de São Paulo, em janeiro de 2004, pelos instrutores da Caelum.

Em 2008, a empresa foca seus esforços em duas grandes áreas:

• Consultoria, mentoring e coaching de desenvolvimento • Treinamento com intuito de formação

Sobre a apostila

Esta apostila da Caelum visa ensinar Java de uma maneira elegante, mostrando apenas o que é necessário e quando é necessário, no momento certo, 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 seu conteúdo não seja alterado e que seus créditos sejam mantidos. Ele não pode ser usado para ministrar qualquer outro curso, porém pode ser utilizado como referência e material de apoio. Caso você esteja interessado em usá-lo para fins comerciais, entre em contato com a empresa.

Atenção: Você pode verificar a versão da apostila no fim do índice. Não recomendamos imprimir a apostila que você receber de um amigo ou pegar por e-mail, pois atualizamos constantemente esse material, quase que mensalmente. Vá até nosso site e veja a última versão.

w.caelum.com.br

Índice

1.1 O que é realmente importante?1
1.2 Sobre os exercícios2
1.3 Tirando dúvidas2
1.4 Bibliografia2

1 Como Aprender Java 1

2.1 Executando o Eclipse pela primeira vez3
2.2 O banco4
2.3 Sockets: uma idéia inocente5
2.4 A conexão em Java5
2.5 Fábrica de Conexões8
2.6 Soluções para viagem – Design Patterns8
2.7 Exercícios - ConnectionFactory9
2.8 A tabela de exemplo15
2.9 Javabeans16
2.10 Exercícios - Contato17
2.1 Inserindo dados18
2.12 DAO – Data Access Object20
2.13 Exercícios - ContatoDAO2
2.14 Exercícios Opcionais23
2.15 Pesquisando23
2.17 Um pouco mais26
2.18 Exercícios opcionais26
2.19 Outros métodos para o seu DAO27
2.20 Exercícios opcionais - Alterar e remover27
3.1 Java E29
3.2 APIs30
3.3 Implementações compatíveis com a especificação30
4.1 Introdução31
4.2 Aplicações web no Java E e Servlet Container32
4.3 Instalando o Tomcat32
4.4 Sobre o Tomcat3
4.5 Instalando o Tomcat em casa34
4.6 Outra opção: Jetty34

4 Servlet Container 31

5.1 O plugin WTP35
5.2 Configurando o Tomcat no WTP36

5 O eclipse e seus plugins 35

6.1 Novo projeto39
6.2 Análise do resultado final41
6.3 Exercícios: primeira página4
6.4 Para saber mais: configurando o Tomcat sem o plugin4

6 Novo projeto web 39

7.1 O que é uma página JSP45
7.2 Exercícios: Primeiro JSP46
7.3 Listando os contatos47
7.4 Exercícios: Lista de contatos com scriptlet48

7 JSP - JavaServer Pages 45 i

7.6 EL: Expression language50
7.7 Exercícios: parâmetros com EL50
7.8 Exercícios opcionais50
7.9 Erros comuns51
7.10 Exercício opcional52
7.1 Instanciando POJOs52
7.12 Para saber mais: Compilando os arquivos JSP53
8.1 JSTL54
8.2 As empresas hoje em dia54
8.3 Instalação5
8.4 Cabeçalho para a JSTL core5
8.5 For5
8.6 Exercícios: forEach57
8.7 Exercício opcional58
8.8 c:out e c:set58
8.9 Mas quais são as tags da taglib core?58
8.10 Import: trabalhando com cabeçalhos e rodapés59
8.1 Exercícios59
8.12 Erros Comuns60
8.13 Inclusão estática de arquivos60
8.14 Exercícios61
8.15 Exercícios opcionais61
8.16 Trabalhando com links62
8.17 Exercícios opcionais62
8.18 c:if63
8.19 Exercícios63

8 JSTL - JavaServer Pages Tag Library 54 i

9.1 Exceptions65
9.2 JSTL é a solução?6
9.3 Exercício opcional6
9.4 Quando acontece um erro em uma página JSP67
9.5 Página de erro67
9.6 Exercícios68
9.7 Erros comuns69

9 Controle de erro 65

10.1 Servlet70
10.2 A estrutura de diretórios72
10.3 Mapeando uma servlet no web.xml72
10.4 Exercícios: Servlet OiMundo72
10.5 Erros comuns74
10.6 Init e Destroy75
10.7 Curiosidades do mapeamento de uma servlet76
10.8 OutputStream x PrintWriter7
10.9 Parâmetros7
10.10Exercícios: TestaParametros78
10.11Exercício opcional80
10.12doGet, doPost e outros80
10.13Conversão de parâmetros80
10.14Exercícios opcionais81
10.15Variáveis membro83
10.16Exercícios: Contador84
10.17HTML e Java: eu não quero código html na minha servlet!85
10.18Como funciona uma página JSP86
10.19Web archive (.war)86
10.20Exercícios: Deploy com war86
10.21Quando acontece um erro em uma servlet89
10.22O try e catch90

10 Servlets 70 iv

10.24Configurando a página de erro91
10.25Exercícios91
10.26Erros comuns93
10.27Tratamento de outros erros93
10.28Exercício opcional94
10.29Outro erro comum94
10.30Servlet para adicionar contatos no banco95
10.31Exercício95
10.32Exercícios Opcionais97
1.1 Propriedades de páginas JSP98
1.2 Exercícios9
1.3 Filtros9
1.4 Configuração de filtros100
1.5 Exercícios100
1.6 Entendendo os filtros101
1.7 Exercício Opcional101

1 Servlet e JSP API 98

12.1 Servlet ou JSP?102
12.2 Request dispatchers103
12.3 Exercícios104
12.4 Melhorando o processo105
12.5 Retomando o design pattern Factory107

12 Model View Controller 102

13.1 Nossa interface de execução108
13.2 Exercícios108
13.3 Criando um controlador e um pouco mais de reflection109
13.4 Configurando o web.xml1
13.5 Exercícios1

13 Construindo um Framework MVC 108 v

13.7 Exercícios112
13.8 Exercícios opcionais114
13.9 Model View Controller114
13.10Lista de tecnologias: camada de controle115
13.11Lista de tecnologias: camada de visualização116
13.12MVC 2116
14.1 Struts117
14.2 Configurando o Struts118
14.3 Exercícios118
14.4 Uma ação Struts121
14.5 Configurando a ação no struts-config.xml122
14.6 Exercícios: TesteSimplesAction123
14.7 Erros comuns124
14.8 Pesquisando um banco de dados126
14.9 Criando a ação126
14.10O arquivo WebContent/lista.jsp127
14.11ListaContatos no struts-config.xml128
14.12Exercício: ListaContatosAction128
14.13Resultado condicional com o Struts130
14.14Exercícios: listagem vazia130
14.15Resultado do struts-config.xml131
14.16Novos contatos131
14.17Formulário132
14.18Mapeando o formulário no arquivo struts-config.xml132
14.19Exercício: ContatoForm133
14.20Erro comum133
14.21Lógica de Negócios133
14.22Exercício: AdicionaContatoAction134
14.23Erros comuns136

14 Struts Framework 117 vi

14.25Exercícios: Mensagens137
14.26Erros comuns138
14.27Validando os campos140
14.28Exercício: validação141
14.29Erros comuns142
14.30Exercícios opcionais142
14.31Limpando o formulário142
14.32Exercícios: scope143
14.33Exercícios opcionais143
14.34O mesmo formulário para duas ações144
14.35Exercícios opcionais144
14.36Struts-logic taglib: um exemplo antigo de for146
14.37Para saber mais146
15.1 Preparando um sistema de login148
15.2 Nossas classes: Funcionario e FuncionarioDAO148
15.3 Passo 1: Formbean150
15.4 Passo 2: A página de login: formulario-login.jsp150
15.5 Exercícios: formulário de login151
15.6 A ação152
15.7 A ação no struts-config.xml152
15.8 ok.jsp e erro.jsp153
15.9 Exercícios: LoginAction153
15.10Erro comum155
15.11Exercícios opcionais155
15.12Cookies155
15.13Sessão156
15.14Configurando o tempo limite156
15.15Registrando o usuário logado na sessão156
15.16Exercícios: autorização157
15.17Exercícios opcionais158

15 Autenticação, cookies e sessão 148 vii

16.1 Vantagens160
16.2 Criando seu projeto160
16.3 Modelo161
16.4 Configurando a classe/tabela Produto161
16.5 Exercícios162
16.6 Propriedades do banco168
16.7 Exercícios169
16.8 Configurando169
16.9 Criando as tabelas170
16.10Exercícios170
16.11Dica: log do Hibernate171
16.12HibernateUtil172
16.13Exercícios172
16.14Erros comuns173
16.15Salvando novos objetos173
16.16Exercícios173
16.17Buscando pelo id174
16.18Criando o ProdutoDAO174
16.19Exercícios175
16.20Buscando com uma cláusula where176
16.21ProdutoDAO: Listar tudo e fazer paginação176
16.22Exercícios177
16.23Exercícios para o preguiçoso178
16.24Exercício opcional179
17.1 Eu não quero o que eu não conheço180
17.2 Vantagens183
17.3 Vraptor 2183
17.4 Exercícios183
17.5 Internacionalização184

17 VRaptor 180 viii

17.7 Minha primeira lógica de negócios185
17.8 Como configurar a minha lógica?185
17.9 E o JSP com o formulário?186
17.10E a página final?186
17.11Exercícios187
17.12A lista de produtos188
17.13Exercícios opcionais189
17.14Velocity, Freemaker e Sitemesh189
17.15Configurações190
17.16Um pouco mais190
17.17Plugin para o Eclipse190
17.18Pequenos exemplos de simplicidade190
18.1 Certificação192
18.2 Frameworks192
18.3 Revistas192
18.4 Grupo de Usuários192
18.5 Falando em Java - Próximos módulos193
19.1 Início e término da sua aplicação194
19.2 Exercícios195
19.3 getServletContext()196
19.4 Exercícios opcionais196
19.5 Acessando a aplicação no JSP197
19.6 Exercícios197
19.7 Configuração de uma servlet198
19.8 Exercícios199
19.9 Descobrindo todos os parâmetros do request199

19 Apêndice A - Servlet e JSP API 194 ix

20.1 Factory – exemplo de cache de objetos200
20.2 Singleton202
20.3 Exercícios203
20.4 Um pouco mais204

21 Respostas dos Exercícios 205 Versão: 10.9.18

CAPÍTULO 1

Como Aprender Java

“Homens sábios fazem provérbios, tolos os repetem” – Samuel Palmer

1.1 - O que é realmente importante?

Muitos livros, ao passar dos capítulos, mencionam todos os detalhes da linguagem juntamente com seus princípios básicos. 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ó a ceitar 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ário 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. São detalhes que para um programador experiente em Java podem ser importantes, mas não para quem está começando.

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 àqueles 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 do 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/

Material do Treinamento Java para Desenvolvimento Web

1.2 - Sobre os exercícios

Os exercícios do curso variam de práticos até pesquisas na Internet, ou mesmo consultas sobre assuntos avançados em determinados tópicos para incitar a curiosidade do aprendiz na tecnologia.

1.3 - Tirando dúvidas

Para tirar dúvidas, tanto dos exercícios quanto de Java em geral, recomendamos o fórum do GUJ (http: //w.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, incentivamos tirar suas dúvidas nos dois lugares.

Fora isso, sinta-se à vontade para entrar em contato conosco e tirar todas as dúvidas que tiver durante o curso.

(Parte 1 de 9)

Comentários