• No results found

Curso Formação Java Web COMPLETO

N/A
N/A
Protected

Academic year: 2021

Share "Curso Formação Java Web COMPLETO"

Copied!
230
0
0

Loading.... (view fulltext now)

Full text

(1)
(2)

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 1

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

2

Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 1

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 9 9 9 9 10 11 11 12 14 14 15 15 16 17 19 19 20 20 21 21 23 23 25 25 25 25 27 28 28 28 29 29 29 30 30 30 30 31 31 31 31 32 32 34 34 34 36 37 37 38

(3)

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 4.10 Thread 32 5 Java Servlet 39 5.1 Histórico 39 5.2 O que é um Servlet? 40 5.3 A classe HttpServlet 41

5.3.1 Seqüencia de eventos na HttpServlet 42

5.4 O Ciclo de vida do Servlet no Contêiner 42

5.5 Estrutura de Aplicações Web e o Deployment Descriptor 44

6 Request e Response 46 6.1 Introdução 46 6.2 HTTP Get 48 6.3 HTTP Post 48 6.4 A Interface HttpServletRequest 49 6.5 A Interface HttpServletResponse 51

7 Criando a Aplicação Web 53

7.1 Introdução 53

7.2 Endereçamento Relativo 53

7.3 Formulários 54

7.3.1 Exemplo: Leitura de dados de um formulário 55

7.4 Manipulação de Cookies 56

7.4.1 A Classe javax.servlet.http.Cookie 57

7.5 Navegação 59

7.5.1 Redirecionamento 60

7.5.2 Reencaminhamento 61

7.5.3 Redirect versus Forward0 62

7.6 Passagem de dados entre componentes Web 62

7.6.1 Atributos da request 62

8 Gerenciamento de Sessão 63

8.1 Introdução 63

8.2 Obtendo uma sessão 64

8.3 Atributos da sessão 65

8.4 Invalidando uma sessão 66

8.5 Gerenciamento de Sessão sem cookies 66

9 ServletContext, Filtros e Listeners 67

9.1 ServletContext 67

9.1.2 Parâmetros de inicialização 67

9.1.2.1 Adicionando parâmetros de inicialização no Deployment Descriptor (web.xml) 67

9.1.3 Utilizando atributos do ServletContext 68

9.2 Filtros 68

9.2.1 Introdução 68

9.2.2 Criando um filtro 69

9.2.3 Configuração do Deployment Descriptor 70

9.3 Listeners 71 10 JavaServer Pages 74 10.1 Introdução 74 10.1.1 Ciclo de vida do JSP 74 10.2 Estrutura de diretórios 75 10.3 Elementos utilizados em JSPs 75 10.3.1 Diretiva JSP 76 10.3.1.1 Diretiva Page 76 10.3.2 Diretiva include 77 10.3.3 Declarações 78 38 45 45 46 47 48 48 50 53 53 55 55 56 58 60 60 60 61 62 63 64 67 68 69 70 70 70 71 71 72 73 74 74 75 75 75 75 77 77 77 78 79 80 83 83 83 84 84 85 85 87 88

(4)

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 1

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

4

Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 3 10.3.4 Expressões 78 10.3.5 Scriptlets 79 10.3.6 Ações 79 10.3.6.1 <jsp:include> 79 10.3.6.2 <jsp:forward> 80 10.3.7 Comentários 80 10.4 Objetos implícitos 81 10.4.1 page 81 10.4.2 config 82 10.4.3 request e response 82 10.4.4 Objeto out 83 10.4.6 session 83 10.4.7 application 83 10.4.8 pageContext 83 10.4.9 Exception 84 10.5 JavaBeans 84 10.5.1 <jsp:useBean> 85 10.5.2 <jsp:setProperty> 86 10.5.3 <jsp:getProperty> 86

10.5.4 Usando JavaBeans com Ações JSP 86

10.6 Componentes Web Reutilizáveis 87

10.6.1 Fragmentos JSP 87 10.6.2 Diretiva include 88 10.6.3 Ação <jsp:include> 89 10.6.4 Ação <jsp:param> 90 10.8.5 Ação <jsp:foward> 90 11 Expression Language 91 11.1 O que é EL 91 11.2 Sintaxe de EL 91 11.2.1 Literais e Operadores 92 11.2.2 Variáveis 93 11.2.3 Navegação em variáveis 93 11.2.3.1 Operador ponto (.) 93 11.2.3.2 Operador [ ] 93

11.2.4 Navagação em Arrays e Listas 93

11.2.5 Navegação em Mapas 94

11.2.6 Objetos implícitos 94

11.3 Habilitando e Desabilitando EL e scriptlets 95

12 JavaServer Pages Standard Tag Library ( JSTL ) 96

12.1 O que é JSTL 96

12.2 Instalação da JSTL 96

12.3 Como usar JSTL em uma página JSP 96

12.4 Biblioteca Core 97

12.4.1 Suporte a variáveis c: set e c:remove 98

12.4.2 Controle de Fluxo 99

12.4.2.1 Condicional <c:if>,<c:choose> 99

12.4.2.4 Iteradores <c:forEach> e <c:forTokens> 100

12.5 Biblioteca de Internacionalização 102

12.5.1 Locale 102

12.5.2 Mensagens 103

12.5.3 Formatação de Números e Datas 105

13 Tratamento de erros em aplicações Web 106

88 89 89 89 90 90 91 91 92 92 93 93 93 93 94 94 95 96 96 96 98 98 99 100 101 101 102 102 102 103 104 104 104 104 104 105 105 106 108 108 108 108 109 110 111 111 112 114 114 115 117 118

(5)

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

13.1 Configuração de páginas de erro 106

13.1.1 Declarando uma página de erro geral 106

13.1.2 Declarando página de erro para uma exceção mais específica 107

13.1.3 Página de erro http 107

13.2 Tratando erros em Servlets 107

13.2.1 Criando nossa Exception 107

13.2.2 Servlet que dispara Exception 108

13.2.3 Mapeamento no Deployment Descriptor 108

14 MVC para Aplicações Web 109

14.1 Por que Combinar Servlets e JSP? 109

14.2 Mal Entendidos Sobre MVC 109

14.3 Implementando MVC com RequestDispatcher 109

14.4 Framework MVC STRUTS 111 14.4.1 Controller 111 14.4.1.1 ActionServlet 111 14.4.1.2 Action 112 14.4.1.3 ActionForm 113 14.4.1.4 Arquivo strutsconfig.xml 114 14.4.2 Model (Modelo) 116 14.4.3 View (Visualização) 116 15 Custom Tags 116 15.1 Introdução 116

15.2 Como funcionam as Custom Tags? 116

15.2.1 A classe Tag Handler 116

15.2.2 Arquivo Descritor de Tag Library 117

15.2.3 O Arquivo JSP 118

16 Tag File 118

16.1 O que é um Tag File 118

16.2 Utilizando Tag Files em uma página JSP 118

16.3 Tag Files empacotados 119

16.4 Diretivas 120 16.4.1 tag 120 16.4.2 attribute 121 16.4.3 variable 122 16.5 Standard Actions 122 16.5.1 <jsp:invoke/> 122 16.5.2 <jsp:doBody/> 123 17 Simple Tag 124

17.1 O que é uma Simple Tag 124

17.2 Ciclo de Vida 124

17.3 Overview das classes envolvidas 124

17.4 Criando SimpleTags 125

17.5 Mapeamento de tlds em páginas Jsp 125

17.6 Corpo da Tag 126

17.7 Tópicos Avançados: definindo atributos 127

18 HTML e JavaScript 128 18.1 Browsers 128 18.2 HTTP UserAgent 128 18.3 Useragent String 129 18.4 O Documento HTML 129 18.5 O Modelo de Objetos 129 18.6 HTML e XML 130 118 118 120 120 120 120 121 121 122 122 122 122 124 124 124 125 126 127 129 129 129 129 129 129 130 132 132 132 132 133 134 134 135 136 136 136 137 138 138 138 138 139 139 140 141 142 142 142 143 143 145 145

(6)

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 1

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

6

Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 5

18.7 O Valor Semântico de um Documento 130

18.8 XML 130

18.9 DOCTYPE 131

18.10 A linguagem HTML 131

18.10.1 Introdução 131

18.10.2 Estrutura do documento html 132

18.10.2.1 Características das Tags HTML 132

18.10.2.2 Atributos 132

18.10.2.3 Textos 133

18.10.2.4 Caracteres Especiais 134

18.10.3 Listas 136

18.10.3.1 Listas Ordenadas 136

18.10.3.2 Listas Não – Ordenadas 136

18.10.3.3 Exemplo de Lista de Conteudo 137

18.10.4 Hyperlinks 138

18.10.4.1 TAG <A> 138

18.10.4.2 Caminho Relativo 138

18.10.4.3 Caminho Absoluto 138

18.10.4.4 O Atributo Target 138

18.10.4.5 Uso com Imagens 138

18.10.5 Tabelas 139

18.10.5.1 A TAG <TR> 140

18.10.5.2 A TAG <TD> 140

18.10.5.3 A TAG <TH> 141

18.10.5.4 Estrutura Formal das Tabelas 142

18.10.6 Imagens 142 18.10.7 Formulários 144 18.10.7.1 A TAG <FORM> 144 18.10.7.2 A TAG <INPUT> 144 18.10.7.3 Campos de Texto 144 18.10.7.4 Campos de Senha 145 18.10.7.5 Campos de Seleção 145 18.10.7.6 Campos de Escolha 145

18.10.7.7 Campos de Lista ou Menu 145

18.10.7.8 Campos com Múltiplas Linhas 145

18.10.7.9 Botões 146

18.10.7.10 Upload de Arquivos 146

18.10.7.11 Fieldset 146

18.10.7.12 Label 146

18.10.8 Outras Tags 147

18.10.8.1 Meta informações <meta> 147

18.10.8.2 Frames 147

18.10.8.3 IFrame 148

18.11 Cascading Style Sheet – CSS 148

18.11.1 Introdução 148

18.11.2 Usando CSS com HTML 148

18.11.2.1 Estilos no Próprio Elemento 149

18.11.2.2 Estilos no Escopo da Página 149

18.11.2.3 Estilos Definidos em Arquivos Externos 150

18.11.3 Declaração de Estilos 151 18.11.4 Seletores 152 18.11.4.1 Seletores de Classes 152 145 145 146 146 146 147 147 147 148 149 151 151 151 152 153 153 153 153 153 153 154 155 155 156 157 157 159 159 159 159 161 161 161 161 161 162 162 162 162 163 163 163 164 164 164 164 165 165 166 167 168 168

(7)

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

18.11.4.2 Sintaxe Ultilizada para Definição de Seletores 152

18.11.5 Propriedade de Estilo CSS 152 18.11.5.1 Configurações Essenciais 152 18.11.5.2 Tabela de Unidades 152 18.11.5.3 Fontes 154 18.11.5.4 Cores 156 18.11.5.5 Bordas 158

18.11.5.6 Box Model ( Modelo de Caixa ) 159

18.11.5.7 Aplicando Estilos aos Principais Elementos HTML 160

18.11.5.8 Configurações para Barra de Rolatem 161

18.11.5.9 Listas 161

18.11.5.10 Marcadores Customizados 162

18.11.5.11 Hyperlinks 163

18.11.5.12 Botões 164

18.11.5.13 Campos para Entrada de Textos 164

18.11.5.14 Caixas de Seleção 164 18.11.5.15 Manipulando Cursores 164 18.11.5.16 Tabelas 166 18.12 JavaScript 167 18.12.1 Dentro de um Documento HTML 167 18.12.2 Em um Arquivo Externo 167 18.12.3 Tratadores de Eventos 167 18.12.4 Sintaxe da Linguagem 167 18.12.5 Declaração de Variáveis 168 18.12.6 Palavras Reservadas 168 18.12.7 Tipos de Dados 169 18.12.8 Operadores 170

18.12.9 Comandos Condicionais e Laços 171

18.12.10 Arrays 172

18.12.10.1 Criação e Inicialização de Arrays 173

18.12.10.2 Acessando os Elementos do Array 173

18.12.10.3 Métodos Especiais 173 18.12.11 Funções 176 18.12.12 Classes Utilitária 177 18.12.12.1 String 177 18.12.12.2 Date 182 18.12.13 Objeto Window 186 18.12.14 Objeto Document 188

18.12.15 Objeto Form Formulário 189

18.12.16 Diálogos 193

18.12.17 Status 193

18.12.18 Navigator 194

18.12.19 History 194

18.13 Controle de Documento Via DOM 195

18.13.1 DOM API 195

18.13.2 Marcar ou desmacar um conjunto de Checkboxes 197

18.13.3 Evitando Duplo Clique do Usuário 198

18.13.4 Validando Campos Obrigatórios 198

18.13.5 Validando o Tamanho dos Campos 199

18.13.6 Cookies 199

18.14 Dom Style 201

18.14.1 Categorias do Style Object: 201

168 168 168 168 170 172 174 175 176 178 178 179 180 181 181 181 181 183 184 184 184 184 184 185 185 186 187 188 190 191 191 191 194 195 195 200 205 207 208 212 212 213 213 214 214 216 217 217 219 219 221 221

(8)

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 1

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

8

Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 7

18.14.1.1 Propriedades Background 201

18.14.1.2 Propriedades de Borda e Margem 203

18.14.1.3 Propriedades de Layout 206

18.14.1.4 Propriedades de Texto 207

18.14.2 Alterando componentes do formulário baseado na seleção de um elemento da lista 208

221 223 226 227 228

(9)

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

1. JDBC

1.1. Banco de Dados Relacional

O banco de dados é onde guardamos os dados que pertencem ao nosso sistema. A maioria dos bancos de dados comerciais hoje em dia são relacionais e derivam de uma estrutura diferente daquela orientada a objetos.

Assim como o nome já diz, um banco de dados relacional armazena dados como uma série de informações relacionadas. Grupos relacionados são expressos na forma de tabelas. Cada tabela contém colunas que definem as propriedades de cada grupo de dados armazenados.

As tabelas definidas num banco de dados são geralmente montadas com constraints lógicas que servem para preservar a consistência dos dados. Uma constraint é uma restrição de um tipo de dado: cada coluna é definida para ser de um tipo de dados específico. O sistema automaticamente rejeita a inserção de novos dados que não sejam compatíveis com o tipo de dado definido pela estrutura da tabela.

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.

1.2. JDBC – Java Database Connectivity

Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que faz o

envio de instruções SQL para qualquer banco de dados relacional. Por meio desta os desenvolvedores podem acessar bases de dados não importando quem seja seu fabricante; os desenvolvedores de um JDBC provêem a implementação para as interfaces definidas nesta API, fornecendo o mesmo grupo de funcionalidades ao desenvolvedor do sistema.

As seguintes classes estão na API JDBC:

- java.sql.Connection – Representa a conexão com o banco de dados. Encapsula os detalhes de como a comunicação com o servidor é realizada.

- java.sql.DriverManager – Gerencia os drivers JDBC utilizados pela aplicação. Em conjunto com o endereço e a autenticação, pode fornecer objetos de conexão.

- java.sql.Statement – Fornece meios ao desenvolvedor para que se possa executar comandos SQL.

- java.sql.ResultSet – Representa o resultado de um comando SQL. Estes objetos normalmente são retornados por métodos.

1.2.1. java.sql.DriverManager

Utilizando esta classe, o desenvolvedor pode retornar um objeto de conexão que pode ser usado para executar tarefas relativas ao banco de dados. Dois passos são necessários para tal:

- Primeiro, o driver JDBC deve estar registrado com DriverManager. Isto pode ser feito utilizando o método

Class.forName que carrega a classe do driver para a memória.

- Segundo, utilizando o método getConnection(), mediante informação de uma URL, assim como a senha e o nome do usuário autenticado no banco de dados. A URL deve seguir a sintaxe requisitada pela implementação do banco de dados.

Abaixo vemos um exemplo de como se obtém uma conexão com um banco de dados JavaDB (Derby). Novamente, a URL e o driver específicos para a implementação são utilizados. Para outros bancos de dados, verifique a documentação fornecida.

O processo de armazenagem e captura de dados em um

banco é chamado de persistência.

(10)

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 1

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

10

Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 9

import java.sql.*;

public class JDBCExemplo {

static String url = "jdbc:derby://localhost:1527/3way"; static String usuario = "3way";

static String senha = "123";

public static void main(String[] args) { try{

Class.forName("org.apache.derby.jdbc.ClientDriver");

Connection con = DriverManager.getConnection(url,usuario,senha); System.out.println("Conectado!");

con.close(); }catch(ClassNotFoundException e) { e.printStackTrace(); }catch(SQLException e) { e.printStackTrace(); } } }

Teoricamente basta alterar as três Strings que escrevemos para mudar de um banco para outro. Porém não é tudo tão simples assim. Depende de qual padrão SQL o banco suporta. Isso só causa dor de cabeça e existem certos arcabouços que resolvem isso facilmente, como é o caso do Hibernate (www.hibernate.org) e do JPA.

1.3 Fábrica de Conexões

Em determinado momento de nossa aplicação, gostaríamos de ter o controle sobre a construção dos objetos da nossa classe. Muita coisa pode ser feita através do construtor, como saber quantos objetos foram instanciados ou fazer o log sobre essas instanciações. As vezes também queremos controlar um processo muito repetitivo e trabalhoso, como abrir uma conexão com o banco de dados. Tomemos como exemplo a classe a seguir que seria responsável por abrir uma conexão com o banco:

import java.sql.*;

public class FabricaConexao {

static String url = "jdbc:derby://localhost:1527/3way"; static String usuario = "3way";

static String senha = "123";

public static Connection getConexao() throws SQLException{ try{

Class.forName("org.apache.derby.jdbc.ClientDriver"); return DriverManager.getConnection(url,usuario,senha); }catch(ClassNotFoundException e)

{

throw new SQLException(e.getMessage()); }

} }

Poderíamos colocar um aviso na nossa aplicação, notificando todos os programadores ao adquirir uma conexão:

(11)

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

Podemos perceber que o método getConexao() é uma fábrica de conexões, isto é, ele fabrica conexões para nós, não importando de onde elas vieram. Portanto, nada mais natural do que chamar a classe de FabricaConexao e o método de getConexao().

1.4 Criar Banco de Dados e Tabelas

Devemos criar um banco de dados agenda. Para criá-lo você deve editar a url de conexão do banco para: static String url = "jdbc:derby://localhost:1527/agenda;create=true";

A seguinte tabela contatos será usada nos exemplos desse capítulo: CREATE TABLE contatos (

ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY, NOME VARCHAR(255),

EMAIL VARCHAR(255), ENDERECO VARCHAR(255), PRIMARY KEY(id)

);

1.5 Classes Javabeans – Entidades

No banco de dados relacional, é comum representar um contato (entidade) em uma tabela de contatos. 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: public class Contato {

private int id; private String nome; private String endereco; private String email; public int getId() {

return id; }

public void setId(int id) { this.id = id;

}

public String getNome() { return nome;

}

public void setNome(String nome) { this.nome = nome;

}

public String getEndereco() { return endereco;

}

JavabBeans são classes que possuem o

construtor sem argumentos e métodos de acesso do

(12)

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 1

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

12

Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 11

public void setEndereco(String endereco) { this.endereco = endereco;

}

public String getEmail() { return email;

}

public void setEmail(String email) { this.email = email; }

}

1.6 Inserindo Dados

Para inserir dados em uma tabela de um banco de dados entidade relacional basta usar a cláusula INSERT. Precisamos especificar quais os campos que desejamos atualizar e os valores.

Primeiro o código SQL:

String sql = "insert into contatos (nome,email,endereco) "

+ "values ('"+ nome +"','" + email + "','" + endereco +"')";

O exemplo acima possui dois pontos negativos que são importantíssimos. O primeiro é que o programador que não escreveu o código original não consegue bater o olho e entender o que está escrito. O que o código acima faz? Lendo rapidamente fica difícil. Mais difícil ainda é saber se faltou uma vírgula, um fecha parênteses talvez?

Outro problema é o clássico SQL Injection. O que acontece quando o contato a ser adicionado possui no nome uma aspas simples? O código sql se quebra todo e pára de funcionar ou o usuário final não é capaz de alterar seu código SQL para executar aquilo que ele desejam, tudo isso porque escolhemos aquela linha de código e não fizemos o escape de caracteres especiais.

Por esses dois motivos não iremos usar código SQL como mostrado anteriormente... vamos imaginar algo mais genérico e um pouco mais interessante:

String sql = "insert into contatos (nome,email,endereco) values (?,?,?)";

Perceba que não colocamos os pontos de interrogação de brincadeira, e sim porque realmente não sabemos o que desejamos inserir. Estamos interessados em executar aquele código, mas não sabemos ainda quais são os parâmetros que iremos utilizar nesse código SQL que será executado, chamado de statement.

As cláusulas são executadas em um banco de dados através da interface PreparedStatement. Para receber um PreparedStatement relativo à conexão, basta chamar o método prepareStatement, passando como argumento o comando SQL com os valores vindos de variáveis preenchidos com uma interrogação.

PreparedStatement stmt = con.prepareStatement(

"insert into contatos(nome,email,endereco) values (?,?,?)");

Logo em seguida, chamamos o método setString do PreparedStatement para preencher os valores, passando a posição (começando em 1) da interrogação no SQL e o valor que deve ser colocado.

//preenche os valores

stmt.setString(1, "3Way Networks");

stmt.setString(2, "[email protected]");

stmt.setString(3, "Av. 4ª Radial, 1952 Milão Shopping Center"); Por fim, uma chamada ao método execute que executa o comando SQL.

(13)

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

(14)

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 1

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

14

Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 12

Agora imagine todo esse processo sendo escrito toda vez que desejar inserir algo no banco? Ainda não consegue visualizar o quão destrutivo isso pode ser? Veja o exemplo abaixo, que abre uma conexão e insere um contato no banco:

public class JDBCInserir {

public static void main(String[] args) throws SQLException { try {

Connection con = ConnectionFactory.getConnection(); // cria um preparedStatement

PreparedStatement stmt = (PreparedStatement) con.prepareStatement("insert into contatos "

+ " (nome,email,endereco) values (?,?,?)"); //preenche os valores

stmt.setString(1, "3Way Networks");

stmt.setString(2, "[email protected]");

stmt.setString(3, "Av. 4ª Radial, 1952 Shopping Milão"); //executa

stmt.execute(); stmt.close();

System.out.println("Gravado!"); con.close(); }catch (SQLException e) { e.printStackTrace(); }finally{ if (con != null){ con.close(); stmt.close(); } } } }

1.7 Fechando a Conexão

O mais praticado é o uso de alguma API de ORM como o Hibernate ou JPA, porém aqueles que ainda insistem no uso de JDBC devem prestar atenção no momento de fechar a conexão. O exemplo dado acima fecha a conexão caso algum erro ocorra no momento de inserir algum dado no banco de

dados. O comum é fechar a conexão em um bloco finally.

1.8 PreparedStatement ou Statement

Ao invés de usar o PreparedStatement, você pode usar uma interface mais simples chamada Statement, que simplesmente executa uma cláusula SQL no método execute:

Statement stmt = con.createStatement(); stmt.execute(

"insert into contato (nome, email, endereco) values" +"('Nome','Email','Endereco')");

stmt.close();

É melhor usar a classe PreparedStatement que é mais rápida que

Statement e deixa o código muito mais limpo. Geralmente, seus comandos SQL

conterão valores vindos de variáveis do programa Java.

Usando Statements, você terá que fazer muitas concatenações, já com PreparedStatements, isso

(15)

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

1.9 Design Patterns

Orientação à objetos resolve as grandes dores de cabeças que tínhamos na programação procedural, restringindo e centralizando responsabilidades. Mas algumas coisas não podemos simplesmente resolver com orientação à objetos pois não existe palavra chave para uma funcionalidade tão específica. Alguns desses pequenos problemas aparecem com tamanha freqüência que as pessoas desenvolvem uma solução padrão para o mesmo. Com isso, ao nos defrontarmos com um desses problemas clássicos, podemos rapidamente implementar essa solução genérica com uma ou outra modificação. Essa solução padrão tem o nome de Design Pattern (padrão de projeto).

O livro mais conhecido de Design Patterns foi escrito em 1995 e tem trechos de código em C++ e Smalltalk. Mas o que realmente importa são os conceitos e os diagramas que fazem desse livro independente de qualquer linguagem. Além de tudo, o livro é de leitura agradável: Design Patterns, Erich Gamma et al.

1.9.1 DAO – Data Access Object

Já foi possível sentir que colocar código SQL dentro de suas classes de lógica é algo nem um pouco elegante e muito menos viável quando você precisa manter o seu código.

A idéia a seguir é remover o código de acesso ao banco de dados de suas classes de lógica e colocá-lo em uma classe responsável pelo acesso ao mesmo. Assim o código de acesso ao banco de dados fica em um lugar só, conseqüentemente, mais fácil dar manutenção ao mesmo.

Que tal seria se pudéssemos chamar um método adiciona que adiciona um Contato ao banco?

Em outras palavras quero que o código a seguir funcione: // adiciona o os dados no banco

Misterio bd = new Misterio();

bd.adiciona(“meu nome”, “meu email”, “meu endereço”);

Mas... Java é orientado a Strings? Vamos tentar novamente: em outras palavras quero que o código a seguir funcione:

// adiciona um contato no banco Misterio bd = new Misterio(); // método muito mais elegante bd.adiciona(contato);

Tentaremos chegar ao código anterior: seria muito melhor e mais elegante poder chamar um único método responsável pela inclusão, certo?

public class TestaInsere {

public static void main(String[] args) { try {

//pronto para gravar

Contato contato = new Contato(); contato.setNome("3Way");

contato.setEmail("[email protected]");

contato.setEndereco("Av. 4ª Radial, Goiânia-GO"); //grave nessa conexão!!!

ContatoDAO dao = new ContatoDAO();

A melhor maneira para aprender o que é

um Design Pattern é vendo como surgiu a

necessidade do mesmo.

(16)

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 1

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

16

Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 14

//método elegante dao.adiciona(contato);

System.out.println("Gravado!"); } catch (SQLException e) {

e.printStackTrace(); }

} }

O código anterior já mostra o poder que iremos alcançar, através de uma única classe seremos capazes de acessar o banco de dados e, mais ainda, somente através dessa classe será possível acessar os dados. Esta idéia inocente a primeira vista, é capaz de isolar todo o acesso a banco em classes bem simples, cuja instância é um objeto responsável por acessar os dados. Da responsabilidade deste objeto surgiu o nome de Data Access Object ou simplesmente DAO, um dos mais famosos padrões de desenvolvimento.

O que falta para o código acima funcionar é uma classe chamada ContatoDAO com um método chamado adiciona. Vamos criar uma classe que se conecta ao banco de dados ao ser construída uma instância da mesma:

import java.sql.Connection; import java.sql.SQLException; import conexao.FabricaConexao; public class ContatoDAO {

private Connection conexao;

public ContatoDAO() throws SQLException {

this.conexao = FabricaConexao.getConexao(); }

}

Agora que todo ContatoDAO possui uma conexão com o banco podemos focar no método adiciona, que recebe um Contato como argumento e é responsável por adicionar o mesmo através de código sql.

public void adiciona(Contato contato) throws SQLException { PreparedStatement stmt = (PreparedStatement)

this.conexao.prepareStatement(

"insert into contatos(nome,email,endereco) values (?, ?, ?)"); stmt.setString(1,contato.getNome()); stmt.setString(2,contato.getEmail()); stmt.setString(3,contato.getEndereco()); stmt.execute(); stmt.close(); } 1.9.2 Pesquisando

Para pesquisar também utilizamos a interface PreparedStatement, de forma que o método executeQuery retorna todos os contatos no exemplo a seguir. O objeto retornado é do tipo ResultSet que permite navegar por seus registros através do método next(). Esse método irá retornar false quando chegar ao fim da pesquisa, portanto ele é normalmente utilizado para fazer um loop nos registros como no exemplo a seguir:

// pega a conexão e o Statement

Connection con = ConnectionFactory.getConnection();

PreparedStatement stmt = con.prepareStatement("select * from contatos"); // executa um select

(17)

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 // itera no ResultSet while (rs.next()) { } rs.close(); stmt.close(); con.close();

Para retornar o valor de uma coluna no banco de dados basta chamar um dos métodos get do ResultSet, dentre os quais, o mais comum: getString().

// pega a conexão e o Statement

Connection con = ConnectionFactory.getConnection();

PreparedStatement stmt = con.prepareStatement("select * from contatos"); // executa um select

ResultSet rs = stmt.executeQuery(); // itera no ResultSet

while (rs.next()) {

System.out.println(rs.getString("nome") + " :: " + rs.getString("email")); }

stmt.close(); con.close();

1.9.3 Recurso avaçando: O Cursor

Assim como o cursor do banco de dados, só é possível mover para o próximo registro. Para permitir um processo de leitura para trás é necessário especificar na abertura do ResultSet que tal cursor deve ser utilizado. Mas, novamente, podemos aplicar as idéias de DAO e criar um método getLista() no nosso ContatoDAO:

PreparedStatement stmt = this.conexao.prepareStatement( "select * from contatos");

ResultSet rs = stmt.executeQuery();

List<Contato> contatos = new ArrayList<Contato>(); while (rs.next()) {

Contato contato = new Contato();

contato.setNome(rs.getString(“nome”)); contato.setEmail(rs.getString(“email”)); contato.setEndereco(rs.getString(“endereco”)); contatos.add(contato); } rs.close(); stmt.close(); return contatos;

Crie o método getLista na classe ContatoDAO.

public List<Contato> getLista() throws SQLException {

PreparedStatement stmt = (PreparedStatement)this.conexao.prepareStatement ("select * from contatos");

ResultSet rs = stmt.executeQuery();

List<Contato> contatos = new ArrayList<Contato>(); while (rs.next()) {

Contato contato = new Contato();

(18)

Java WEB

Seja um Profissional Aprendendo com Profissionais

www.3way.com.br 1

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31

4.8 Logs 31

4.9 Variáveis de Ambiente 32

18

Todos os direitos reservados a 3Way Networks

(19)

Sumário

1 JDBC 8

1.1 Banco de Dados Relacional 8

1.2 JDBC – Java Database Connectivity 8

1.2.1 java.sql.DriverManager 8

1.3 Fábrica de Conexões 9

1.4 Criar Banco de Dados e Tabelas 10

1.5 Classes Javabeans – Entidades 10

1.6 Inserindo Dados 11

1.7 Fechando a Conexão 12

1.8 PreparedStatement ou Statement 12

1.9 Design Patterns 13

1.9.1 DAO – Data Access Object 13

1.9.2 Pesquisando 14

1.9.3 Recurso avaçando: O Cursor 15

1.9.4 Alteração 16

1.9.5 Exclusão 16

2 Introdução a Java Enterprise Edition 17

2.1 Porque Java EE tem sido tão utilizado? 17

2.2 O que é Java Enterprise Edition? 18

2.3 A plataforma Java Enterprise Edition 18

2.3.1 APIs 19

2.3.2 Contêiners 19

2.3.3 Deployment de aplicações 21

3 Análise de arquiteturas 21

3.1 Arquitetura Física e Arquitetura Lógica 21

3.2 Tipos de aplicações na WEB 21

3.3 Arquitetura MVC para a Web 21

3.4 Vantagens da arquitetura MVC 22

4 Ambiente de desenvolvimento 23

4.1 Tomcat 23

4.1.1 Instalar Java JSE SDK (JDK) 24

4.1.2 Qual versão de JDK utilizar 24

4.1.2.1 JAVA_HOME 24

4.2 Instalar Tomcat 25

4.2.1 Qual versão de Tomcat utilizar 25

4.2.2 Iniciar e parar o Tomcat 25

4.2.2.1 [Windows] Tomcat como serviço 25

4.2.2.2 Tomcat como processo 26

4.3 Testar Tomcat 26

4.4 Criar contexto de desenvolvimento 26

4.4.1 Estrutura de diretórios 26

4.4.2 Criar contexto de aplicação web 27

4.4.3 Configurar contexto: web.xml 27

4.4.4 Ativar contexto 29

4.4.5 Testar contexto 29

4.5 Bibliotecas Servlet 29

4.6 Testar seus servlets 30

4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 contato.setEmail(rs.getString("email")); contato.setEndereco(rs.getString("endereco")); contatos.add(contato); } rs.close(); stmt.close(); return contatos; }

Vamos usar o método getLista() agora para listar todos os contatos do nosso banco de dados. Crie uma classe chamada TestaListaDAO com um método main: Crie um ContatoDAO:

ContatoDAO dao = new ContatoDAO(); Liste os contatos com o DAO:

List<Contato> contatos = dao.getLista(); Itere nessa lista e imprima as informações dos contatos: for (Contato contato : contatos) {

System.out.println("Nome: " + contato.getNome()); System.out.println("Email: " + contato.getEmail());

System.out.println("Endereço: " + contato.getEndereco() + "\n"); }

1.9.4 Alteração

Agora que você já sabe usar o PreparedStatement para executar qualquer tipo de código SQL e ResultSet para receber os dados retornados da sua pesquisa fica simples, porém maçante, escrever o código de diferentes métodos de uma classe típica de Dao.

Veja primeiro o método altera, que recebe um contato cujos valores devem ser alterados: public void altera(Contato contato) throws SQLException {

PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(

"update contatos set nome=?, email=?, endereco=? where id=?"); stmt.setString(1, contato.getNome()); stmt.setString(2, contato.getEmail()); stmt.setString(3, contato.getEndereco()); stmt.setLong(4, contato.getId()); stmt.execute(); stmt.close(); } 1.9.5 Exclusão

Não existe nada de novo nas linhas acima. Uma execução de query! Simples, não?

Agora o código para remoção: começa com uma query baseada em um contato, mas usa somente o id dele para executar a query do tipo delete:

public void remove(Contato contato) throws SQLException { PreparedStatement stmt = (PreparedStatement)

Connection.prepareStatement("delete from contatos where id=?"); stmt.setLong(1, contato.getId());

stmt.execute(); stmt.close(); }

References

Related documents

Standard-risk patients are treated with 2340 cGy in 13 fractions to the craniospinal axis followed by focal local radiation to the tumour bed of the posterior fossa and

Although our results suggest that domestic and foreign prices are crucial determinants of the exchange rate in the long run in all PICs, the estimates do not necessarily comply with

The company Under Armour used e-marketing technique to promote the cold wear products.. They have a

As highlighted above although there are several different types of behaviour planners that can plan successful behaviours in less complex scenarios, when the scenario

• Benefitting on the large number of transactions, Bitcoin payment processors hold a strong position in the value chain; downward pressure on fees from competition and establishment

This section presents the experimental design which consists of two parts. In the main part, subjects make a series of binary choices between lotteries that may trigger the

circumstances, creditors may exercise their right to recoup by reducing, dollar for dollar, any amount owing to a debtor by the amount that they are owed from the “same

McGee and Kroesschell (2013) identify the key factors which pose a challenge to external efforts to support accountability in fragile and conflict-affected settings, namely: the