3way curso-formacao-java-web-completo

230
Java Web www.3way.com.br Apostila

Upload: moacir-jose-ferreira-junior-ferreira

Post on 25-May-2015

1.687 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 3way curso-formacao-java-web-completo

Java Web

www.3way.com.br

Apostila

Page 2: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

2Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

9999

10111112141415151617191920202121232325252525272828282929293030303031313131323234343436373738

Page 3: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

3Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

2

4.10 Thread 325 Java Servlet 395.1 Histórico 395.2 O que é um Servlet? 405.3 A classe HttpServlet 415.3.1 Seqüencia de eventos na HttpServlet 425.4 O Ciclo de vida do Servlet no Contêiner 425.5 Estrutura de Aplicações Web e o Deployment Descriptor 446 Request e Response 466.1 Introdução 466.2 HTTP Get 486.3 HTTP Post 486.4 A Interface HttpServletRequest 496.5 A Interface HttpServletResponse 517 Criando a Aplicação Web 537.1 Introdução 537.2 Endereçamento Relativo 537.3 Formulários 547.3.1 Exemplo: Leitura de dados de um formulário 557.4 Manipulação de Cookies 567.4.1 A Classe javax.servlet.http.Cookie 577.5 Navegação 597.5.1 Redirecionamento 607.5.2 Reencaminhamento 617.5.3 Redirect versus Forward0 627.6 Passagem de dados entre componentes Web 627.6.1 Atributos da request 628 Gerenciamento de Sessão 638.1 Introdução 638.2 Obtendo uma sessão 648.3 Atributos da sessão 658.4 Invalidando uma sessão 668.5 Gerenciamento de Sessão sem cookies 669 ServletContext, Filtros e Listeners 679.1 ServletContext 679.1.2 Parâmetros de inicialização 679.1.2.1 Adicionando parâmetros de inicialização no Deployment Descriptor (web.xml) 679.1.3 Utilizando atributos do ServletContext 689.2 Filtros 689.2.1 Introdução 689.2.2 Criando um filtro 699.2.3 Configuração do Deployment Descriptor 709.3 Listeners 7110 JavaServer Pages 7410.1 Introdução 7410.1.1 Ciclo de vida do JSP 7410.2 Estrutura de diretórios 7510.3 Elementos utilizados em JSPs 7510.3.1 Diretiva JSP 7610.3.1.1 Diretiva Page 7610.3.2 Diretiva include 7710.3.3 Declarações 78

38454546474848505353555556586060606162636467686970707071717273747475757575777777787980838383848485858788

Page 4: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

4Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

3

10.3.4 Expressões 7810.3.5 Scriptlets 7910.3.6 Ações 7910.3.6.1 <jsp:include> 7910.3.6.2 <jsp:forward> 8010.3.7 Comentários 8010.4 Objetos implícitos 8110.4.1 page 8110.4.2 config 8210.4.3 request e response 8210.4.4 Objeto out 8310.4.6 session 8310.4.7 application 8310.4.8 pageContext 8310.4.9 Exception 8410.5 JavaBeans 8410.5.1 <jsp:useBean> 8510.5.2 <jsp:setProperty> 8610.5.3 <jsp:getProperty> 8610.5.4 Usando JavaBeans com Ações JSP 8610.6 Componentes Web Reutilizáveis 8710.6.1 Fragmentos JSP 8710.6.2 Diretiva include 8810.6.3 Ação <jsp:include> 8910.6.4 Ação <jsp:param> 9010.8.5 Ação <jsp:foward> 9011 Expression Language 9111.1 O que é EL 9111.2 Sintaxe de EL 9111.2.1 Literais e Operadores 9211.2.2 Variáveis 9311.2.3 Navegação em variáveis 9311.2.3.1 Operador ponto (.) 9311.2.3.2 Operador [ ] 9311.2.4 Navagação em Arrays e Listas 9311.2.5 Navegação em Mapas 9411.2.6 Objetos implícitos 9411.3 Habilitando e Desabilitando EL e scriptlets 9512 JavaServer Pages Standard Tag Library ( JSTL ) 9612.1 O que é JSTL 9612.2 Instalação da JSTL 9612.3 Como usar JSTL em uma página JSP 9612.4 Biblioteca Core 9712.4.1 Suporte a variáveis c: set e c:remove 9812.4.2 Controle de Fluxo 9912.4.2.1 Condicional <c:if>,<c:choose> 9912.4.2.4 Iteradores <c:forEach> e <c:forTokens> 10012.5 Biblioteca de Internacionalização 10212.5.1 Locale 10212.5.2 Mensagens 10312.5.3 Formatação de Números e Datas 10513 Tratamento de erros em aplicações Web 106

8889898990909191929293939393949495969696989899

100101101102102102103104104104104104105105106108108108108109110111111112114114115117118

Page 5: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

5Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

4

13.1 Configuração de páginas de erro 10613.1.1 Declarando uma página de erro geral 10613.1.2 Declarando página de erro para uma exceção mais específica 10713.1.3 Página de erro http 10713.2 Tratando erros em Servlets 10713.2.1 Criando nossa Exception 10713.2.2 Servlet que dispara Exception 10813.2.3 Mapeamento no Deployment Descriptor 10814 MVC para Aplicações Web 10914.1 Por que Combinar Servlets e JSP? 10914.2 Mal Entendidos Sobre MVC 10914.3 Implementando MVC com RequestDispatcher 10914.4 Framework MVC STRUTS 11114.4.1 Controller 11114.4.1.1 ActionServlet 11114.4.1.2 Action 11214.4.1.3 ActionForm 11314.4.1.4 Arquivo strutsconfig.xml 11414.4.2 Model (Modelo) 11614.4.3 View (Visualização) 11615 Custom Tags 11615.1 Introdução 11615.2 Como funcionam as Custom Tags? 11615.2.1 A classe Tag Handler 11615.2.2 Arquivo Descritor de Tag Library 11715.2.3 O Arquivo JSP 11816 Tag File 11816.1 O que é um Tag File 11816.2 Utilizando Tag Files em uma página JSP 11816.3 Tag Files empacotados 11916.4 Diretivas 12016.4.1 tag 12016.4.2 attribute 12116.4.3 variable 12216.5 Standard Actions 12216.5.1 <jsp:invoke/> 12216.5.2 <jsp:doBody/> 12317 Simple Tag 12417.1 O que é uma Simple Tag 12417.2 Ciclo de Vida 12417.3 Overview das classes envolvidas 12417.4 Criando SimpleTags 12517.5 Mapeamento de tlds em páginas Jsp 12517.6 Corpo da Tag 12617.7 Tópicos Avançados: definindo atributos 12718 HTML e JavaScript 12818.1 Browsers 12818.2 HTTP UserAgent 12818.3 Useragent String 12918.4 O Documento HTML 12918.5 O Modelo de Objetos 12918.6 HTML e XML 130

118118120120120120121121122122122122124124124125126127129129129129129129130132132132132133134134135136136136137138138138138139139140141142142142143143145145

Page 6: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

6Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

5

18.7 O Valor Semântico de um Documento 13018.8 XML 13018.9 DOCTYPE 13118.10 A linguagem HTML 13118.10.1 Introdução 13118.10.2 Estrutura do documento html 13218.10.2.1 Características das Tags HTML 13218.10.2.2 Atributos 13218.10.2.3 Textos 13318.10.2.4 Caracteres Especiais 13418.10.3 Listas 13618.10.3.1 Listas Ordenadas 13618.10.3.2 Listas Não – Ordenadas 13618.10.3.3 Exemplo de Lista de Conteudo 13718.10.4 Hyperlinks 13818.10.4.1 TAG <A> 13818.10.4.2 Caminho Relativo 13818.10.4.3 Caminho Absoluto 13818.10.4.4 O Atributo Target 13818.10.4.5 Uso com Imagens 13818.10.5 Tabelas 13918.10.5.1 A TAG <TR> 14018.10.5.2 A TAG <TD> 14018.10.5.3 A TAG <TH> 14118.10.5.4 Estrutura Formal das Tabelas 14218.10.6 Imagens 14218.10.7 Formulários 14418.10.7.1 A TAG <FORM> 14418.10.7.2 A TAG <INPUT> 14418.10.7.3 Campos de Texto 14418.10.7.4 Campos de Senha 14518.10.7.5 Campos de Seleção 14518.10.7.6 Campos de Escolha 14518.10.7.7 Campos de Lista ou Menu 14518.10.7.8 Campos com Múltiplas Linhas 14518.10.7.9 Botões 14618.10.7.10 Upload de Arquivos 14618.10.7.11 Fieldset 14618.10.7.12 Label 14618.10.8 Outras Tags 14718.10.8.1 Meta informações <meta> 14718.10.8.2 Frames 14718.10.8.3 IFrame 14818.11 Cascading Style Sheet – CSS 14818.11.1 Introdução 14818.11.2 Usando CSS com HTML 14818.11.2.1 Estilos no Próprio Elemento 14918.11.2.2 Estilos no Escopo da Página 14918.11.2.3 Estilos Definidos em Arquivos Externos 15018.11.3 Declaração de Estilos 15118.11.4 Seletores 15218.11.4.1 Seletores de Classes 152

145145146146146147147147148149151151151152153153153153153153154155155156157157159159159159161161161161161162162162162163163163164164164164165165166167168168

Page 7: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

7Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

6

18.11.4.2 Sintaxe Ultilizada para Definição de Seletores 15218.11.5 Propriedade de Estilo CSS 15218.11.5.1 Configurações Essenciais 15218.11.5.2 Tabela de Unidades 15218.11.5.3 Fontes 15418.11.5.4 Cores 15618.11.5.5 Bordas 15818.11.5.6 Box Model ( Modelo de Caixa ) 15918.11.5.7 Aplicando Estilos aos Principais Elementos HTML 16018.11.5.8 Configurações para Barra de Rolatem 16118.11.5.9 Listas 16118.11.5.10 Marcadores Customizados 16218.11.5.11 Hyperlinks 16318.11.5.12 Botões 16418.11.5.13 Campos para Entrada de Textos 16418.11.5.14 Caixas de Seleção 16418.11.5.15 Manipulando Cursores 16418.11.5.16 Tabelas 16618.12 JavaScript 16718.12.1 Dentro de um Documento HTML 16718.12.2 Em um Arquivo Externo 16718.12.3 Tratadores de Eventos 16718.12.4 Sintaxe da Linguagem 16718.12.5 Declaração de Variáveis 16818.12.6 Palavras Reservadas 16818.12.7 Tipos de Dados 16918.12.8 Operadores 17018.12.9 Comandos Condicionais e Laços 17118.12.10 Arrays 17218.12.10.1 Criação e Inicialização de Arrays 17318.12.10.2 Acessando os Elementos do Array 17318.12.10.3 Métodos Especiais 17318.12.11 Funções 17618.12.12 Classes Utilitária 17718.12.12.1 String 17718.12.12.2 Date 18218.12.13 Objeto Window 18618.12.14 Objeto Document 18818.12.15 Objeto Form Formulário 18918.12.16 Diálogos 19318.12.17 Status 19318.12.18 Navigator 19418.12.19 History 19418.13 Controle de Documento Via DOM 19518.13.1 DOM API 19518.13.2 Marcar ou desmacar um conjunto de Checkboxes 19718.13.3 Evitando Duplo Clique do Usuário 19818.13.4 Validando Campos Obrigatórios 19818.13.5 Validando o Tamanho dos Campos 19918.13.6 Cookies 19918.14 Dom Style 20118.14.1 Categorias do Style Object: 201

168168168168170172174175176178178179180181181181181183184184184184184185185186187188190191191191194195195200205207208212212213213214214216217217219219221221

Page 8: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

8Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

7

18.14.1.1 Propriedades Background 20118.14.1.2 Propriedades de Borda e Margem 20318.14.1.3 Propriedades de Layout 20618.14.1.4 Propriedades de Texto 20718.14.2 Alterando componentes do formulário baseado na seleção de um elemento da lista 208

221223226227228

Page 9: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

9Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

8

1. JDBC1.1. Banco de Dados Relacional

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

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

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

A biblioteca padrão de persistência em banco de dados em Java é aJDBC mas já existem diversos projetos do tipo ORM (Object RelationalMapping) que solucionam muitos problemas que a estrutura da api do JDBC (eODBC) gerou.

1.2. JDBC – Java Database ConnectivityJava 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 podemacessar bases de dados não importando quem seja seu fabricante; os desenvolvedores de um JDBC provêem aimplementação para as interfaces definidas nesta API, fornecendo o mesmo grupo de funcionalidades aodesenvolvedor 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 acomunicação com o servidor é realizada.- java.sql.DriverManager – Gerencia os drivers JDBC utilizados pela aplicação. Em conjunto com oendereç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ãoretornados por métodos.

1.2.1. java.sql.DriverManagerUtilizando 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étodoClass.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 eo nome do usuário autenticado no banco de dados. A URL deve seguir a sintaxe requisitada pelaimplementaçã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 armazenageme captura de dados em um

banco é chamado depersistência.

Page 10: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

10Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.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 existemcertos arcabouços que resolvem isso facilmente, como é o caso do Hibernate (www.hibernate.org) e do JPA.

1.3 Fábrica de ConexõesEm 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 foraminstanciados ou fazer o log sobre essas instanciações. As vezes também queremos controlar um processo muitorepetitivo e trabalhoso, como abrir uma conexão com o banco de dados. Tomemos como exemplo a classe a seguirque 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 umaconexão:

Connection con = FabricaConexao.getConexao();

Page 11: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

11Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

10

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

1.4 Criar Banco de Dados e TabelasDevemos 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 – EntidadesNo 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 algumobjeto.- 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 equivalenteao 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ãoclasses que possuem o

construtor semargumentos e

métodos de acesso dotipo get e set.

Page 12: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

12Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.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 DadosPara 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 programadorque não escreveu o código original não consegue bater o olho e entender o que está escrito. O que o código acimafaz? 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 nonome uma aspas simples? O código sql se quebra todo e pára de funcionar ou o usuário final não é capaz de alterarseu código SQL para executar aquilo que ele desejam, tudo isso porque escolhemos aquela linha de código e nãofizemos o escape de caracteres especiais.

Por esses dois motivos não iremos usar código SQL como mostrado anteriormente... vamos imaginar algomais 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ãosabemos o que desejamos inserir. Estamos interessados em executar aquele código, mas não sabemos ainda quaissã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 receberum PreparedStatement relativo à conexão, basta chamar o método prepareStatement, passando como argumentoo 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 valoresstmt.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.

stmt.execute();

Page 13: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

13Todos os direitos reservados a 3Way Networks

Page 14: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

14Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

12

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

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

try {Connection con = ConnectionFactory.getConnection();

// cria um preparedStatementPreparedStatement stmt = (PreparedStatement)con.prepareStatement("insert into contatos "+ " (nome,email,endereco) values (?,?,?)");//preenche os valoresstmt.setString(1, "3Way Networks");stmt.setString(2, "[email protected]");stmt.setString(3, "Av. 4ª Radial, 1952 Shopping Milão");

//executastmt.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ãoO 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 aconexão caso algum erro ocorra no momento de inserir algum dado no banco dedados. O comum é fechar a conexão em um bloco finally.

1.8 PreparedStatement ou StatementAo invés de usar o PreparedStatement, você pode usar uma interface

mais simples chamada Statement, que simplesmente executa uma cláusula SQLno 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 queStatement e deixa o código muito mais limpo. Geralmente, seus comandos SQLconterão valores vindos de variáveis do programa Java.

Usando Statements, vocêterá que fazer muitas

concatenações, já comPreparedStatements, isso

fica mais limpo e fácil.

Page 15: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

15Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

13

1.9 Design PatternsOrientaçã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 comorientação à objetos pois não existe palavra chave para uma funcionalidade tão específica. Alguns desses pequenosproblemas 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 essasolução genérica com uma ou outra modificação. Essa solução padrão tem o nome de Design Pattern (padrão deprojeto).

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

1.9.1 DAO – Data Access ObjectJá 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 oseu código.

A idéia a seguir é remover o código de acesso ao banco de dados de suasclasses 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 umContato ao banco?

Em outras palavras quero que o código a seguir funcione:

// adiciona o os dados no bancoMisterio 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 seguirfuncione:

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

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

public class TestaInsere {

public static void main(String[] args) {

try {

//pronto para gravarContato 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 maneirapara aprender o que éum Design Pattern évendo como surgiu a

necessidade domesmo.

Page 16: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

16Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

14

//método elegantedao.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 deacessar o banco de dados e, mais ainda, somente através dessa classe será possível acessar os dados. Esta idéiainocente a primeira vista, é capaz de isolar todo o acesso a banco em classes bem simples, cuja instância é umobjeto responsável por acessar os dados. Da responsabilidade deste objeto surgiu o nome de Data Access Objectou 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 chamadoadiciona. 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, querecebe 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 PesquisandoPara 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 porseus registros através do método next(). Esse método irá retornar false quando chegar ao fim da pesquisa, portantoele é normalmente utilizado para fazer um loop nos registros como no exemplo a seguir:

// pega a conexão e o StatementConnection con = ConnectionFactory.getConnection();PreparedStatement stmt = con.prepareStatement("select * from contatos");

// executa um selectResultSet rs = stmt.executeQuery();

Page 17: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

17Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

15

// itera no ResultSetwhile (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 StatementConnection con = ConnectionFactory.getConnection();PreparedStatement stmt = con.prepareStatement("select * from contatos");

// executa um selectResultSet rs = stmt.executeQuery();

// itera no ResultSetwhile (rs.next()) {

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

1.9.3 Recurso avaçando: O CursorAssim 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();contato.setNome(rs.getString("nome"));

Page 18: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

18Todos os direitos reservados a 3Way Networks

Page 19: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

19Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

16

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 umaclasse 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çãoAgora 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 diferentesmé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ãoNã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();

}

Page 20: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

20Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

17

2 Introdução a Java Enterprise Edition

2.1 Porque Java EE tem sido tão utilizado?Além de ter uma vantagem numérica, pois não elimina parte do

mercado que usa um sistema operacional específico, também aumenta aintegrabilidade da aplicação, ou seja, permite que às empresas integrem ossistemas que estão rodando em diferentes plataformas, como por exemplo osistema Web, os sistemas que estão nos MainFrames, os sistemas que sãoexecutados na máquina do usuário.

Esta é uma grande vantagem para grandes corporações queenfrentam a batalha da integração de sistemas.

Outro fator fundamental no sucesso da plataforma é a participaçãode grandes empresas na especificação das APIs no Java Community Process,como Oracle, IBM, Apple, que atuam não só na especificação, mas tambémno desenvolvimento de produtos como Contêiners, IDEs, frameworks, queagregam assim ainda mais confiabilidade a tecnologia.

Certamente a existência de diversos Contêiners Open-Source e/ouGratuitos, também colabora com o alto índice de adoção da tecnologia.

Além destes fatores, elencamos aqui alguns pontos que podem seratingidos com Java EE, considerados fundamentais para a arquitetura dossistemas desenvolvidos atualmente:

EscalabilidadeTrata-se de um dos ades da engenharia de software que pertence à nova economia globalizada e

conectada. Uma campanha de marketing pode fazer com que uma pequena empresa cresça de forma abrupta dodia para a noite. É necessário que a sua solução seja capaz de acompanhar o crescimento do negócio.

DisponibilidadeCom uma linguagem e plataforma confiáveis, podemos contar com sistemas que rodam simultaneamente

em mais de um servidor para prevenção de falhas. Sistemas conhecidos como cluster de servidores permitem queaplicativos fiquem distribuídos e à prova de falha no data-center hospedeiro.

PerformanceQuando o assunto é computação distribuída, Java tem uma performance muito boa em comparação a

outras tecnologias. Podemos dizer, por exemplo, que Fortran é mais rápido que Java para resolver um algoritmocomplexo isoladamente, mas Java, quando distribuído entre servidores, não possui concorrente.

Baixo custo de manutençãoCódigo bem escrito, objetos bem definidos e documentados, herança, polimorfismo, interfaces da

orientação a objeto e outros aspectos técnicos tornam um software simples de ser mantido no decorrer do tempo,quando bem planejado e escrito em Java. Sabemos que os aplicativos tendem a ter um ciclo de vida cada vez maisduradouro na empresa, por isto o custo de manutenção do software se torna cada vez mais importante.

Java EE é multi-plataforma,ou seja, é uma solução que

pode ser utilizadacomputadores com sistema

operacional Unix, com Linux,com Windows, com Apple etambém pode ser utilizada

com MainFrames.

Page 21: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

21Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

18

2.2 O que é Java Enterprise Edition?Java Enterprise Edition é uma plataforma de desenvolvimento de componentes para aplicações em multi-

camada, que disponibiliza uma série de serviços de infra-estrutura de alto nível, evitando o desenvolvimento decódigo complexo e aproximando os desenvolvedores do negócio em si.

Algumas das especificações de componentes mais importantes da plataforma Java Enterprise Edition são:- JavaServer Pages (JSP): utilizadas para criar páginas Web;- Servlets: geralmente utilizado para construir a camada de controle da aplicação, viabilizando a integração

entre as páginas JSP e a camada de negócios;- Enterprise JavaBeans: utilizados para criar componentes distribuídos, representando dados ou regras de

negócio.

Nenhum destes componentes foi idealizado para ser executado diretamente pela máquina virtual, todoseles devem ser executados e controlados por um Contêiner específico como podemos observar na figura abaixo:

Figura 2.1 – Java EE servidores e contêiners

Web Contêiner: hospeda Servlets, JSPs (Java Server Pages) e arquivos estáticos (HTMLs, JavaScript, XML);utiliza qualquer classe Java como, por exemplo, APIs de envio de e-mail ou acesso a banco de dados.EJB Contêiner: hospeda Enterprise JavaBeans (EJB) que, por sua vez, também pode utilizar uma série deAPIs Java, tais como envio de e-mail e acesso a banco de dados.Database: Representamos aqui um banco de dados, mas poderíamos, a partir de uma arquitetura Java EE,acessar arquivos, sistemas legados, ERPs, fila de mensagens e qualquer outra fonte de dados.

2.3 A plataforma Java Enterprise Edition

Item Descrição

Blueprints DesignGuidelines for Java EE

Padrões de codificação e modelagem desenvolvidos por técnicos altamentecapacitados, reunindo em documentos e exemplos de código, as melhores práticas dedesenvolvimento de aplicação Java EE.

Page 22: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

22Todos os direitos reservados a 3Way Networks

Page 23: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

23Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

19

Compatibility Test Suite Processo formal de teste de compatibilidade de Application Server Java EE,garantindo a padronização entre os servidores de diferentes fabricantes.

Reference Implementation A plataforma inclui um servidor chamado de R.I. (Reference Implementation)implementado com 100% das funcionalidades especificadas. Pode ser utilizado paravalidar aplicações Java EE, sendo 100% gratuito e com código fonte disponível.

APIs Enterprise JavaBeans, Java Servlets API, Java Server Pages, XML e Messaging.

2.3.1 APIsO conjunto de APIs Java EE é definido, em sua maioria, por interfaces que podem ser empregadas pelos

desenvolvedores das aplicações corporativas. Tais APIs possuem vínculos com o núcleo (kernel) do servidor queexecuta tarefas voltadas para o gerenciamento de recursos e infra-estrutura.

Podemos dizer que, ao desenvolvermos aplicações Java EE através do uso de APIs disponibilizadas no JavaEnterprise Edition (Reference Implementation), elas podem ser executadas nos servidores de aplicações quetenham implementado as especificações técnicas dos servidores JAVA EE.

Contamos com as seguintes APIs na plataforma Java EE:

API Descrição

JDBC Extension Extensão da API JDBC.

Enterprise JavaBeans (EJB) Componentes gerenciados pelo EJB Contêiner, que oferece serviços detransação, multi-threading, persistência automática, entre outros para oscomponentes.

Java Servlets Componentes frequentemente utilizados para integração entre as páginasWeb e a camada de negócio.

JavaServer Pages (JSP) API utilizada principalmente para construção de páginas dinâmicas.

Java Message Service (JMS) API para tratamento de mensagens assíncronas.

Java Transaction API (JTA) API para controle manual de transações.

JavaMail Utilizada para envio e recebimento de e-mails.

Java API for XML Processing ( JAXP) Processamento de XML.

Java Naming and DirectoryInterface ( JNDI)

API que oferece acesso a Catálogo de Objetos.

Java Connector Architecture API que padroniza os conectores para integração de aplicações.

Java API for XML Web Services (JAX-WS)

APIs para construção e utilização de Web Services.

2.3.2 ContêinersContêiners são servidores de objetos, também chamados de servidores de aplicação que oferecem

serviços e infra-estrutura para a execução de componentes. O conceito de Contêiner é independente da plataformaJava EE, utilizado em outras linguagens e plataformas.

Existem outros tipos de Contêiner utilizados em Java, considera-se a seguinte divisão de perfil deContêiners Java e Java EE:

Page 24: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

24Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

20

Tipo Descrição / Exemplo

Client-side

Responsável pelo ciclo de vida da aplicação, gerenciamento de eventos, bibliotecas, entre outros.Exemplos:Applet Contêiner - para painéis gráficos desenvolvidos com AWT/Swing controlados por browser;

Application client Contêiner - aplicações standalone (AWT/Swing), podendo, opcionalmente, serdistribuídas por Java Web Start.

Server-side

Um Contêiner server-side, gerencia, além do ciclo de vida de componentes, recursos e meios deacesso. Configuramos no Contêiner os recursos que desejamos disponibilizar para que nossasaplicações os acessem através de APIs de serviços, como no caso de um pooling de Conexões aBanco de Dados.

Exemplos:Web Contêiner - para objetos dirigidos por HTTP (Servlets e JSP);

EJB Contêiner - para objetos de negócio server-side.

Além da definição das interfaces na API, Java Enterprise Editiontambém especifica como o Contêiner deve ser, quais recursos ele deveobrigatoriamente implementar, quais serviços ele deve oferecer. Permitindoassim que diversas empresas implementem seus próprios Contêiners.

Veja a seguir uma pequena amostra de empresas e organizações quedesenvolvem Contêiners Java EE:

- Sun (GlassFish)- IBM (WebSphere)- Oracle (OAS)- BEA Systems (WebLogic)- Red Hat (JBoss)- Apache (Geronimo)- Adobe (Jrun)- Borland (AppSever)

A lista completa de empresas licenciadas em Java EE e o teste decompatibilidade associado pode ser encontrada em http://java.sun.com/j2ee/licensees.html.

Como já vimos, a plataforma Java EE está fortemente baseada em Contêiners, como o foco do nosso curso éo desenvolvimento de aplicações Java para Web, nosso alvo são os Web Contêiners. Alguns dos serviços oferecidospelos Web Contêiners são:

- Gerenciamento dos recursos utilizados pelos componentes, como pool de conexões;- Gerenciamento do ciclo de vida dos componentes (Servlets, JSPs e Custom Tags);- Gerenciamento de sessões de usuários;- Controle de acesso.

As duas principais APIs suportadas por um Contêiner Web são: Java Servlets e Java Server Pages. Aimplementação de referência de Contêiner Web é o Tomcat. Observe que há alguns servidores que se denominamcompatíveis com o JAVA EE, mas que não passaram pelo teste de compatibilidade. Em caso de dúvidas, pode-seencontrar uma lista dos Contêiners JAVA EE na seguinte URL: http://java.sun.com/j2ee/compatibility.html

Aplicações desenvolvidas deacordo com a especificação

podem ser instaladas emqualquer Contêiner.

Page 25: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

25Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

21

2.3.3 Deployment de aplicaçõesNormalmente a estrutura de diretórios utilizada em desenvolvimento não é a mesma estrutura utilizada

dentro do servidor. Além disto, nos diretórios de desenvolvimento temos os arquivos fonte, enquanto no servidortemos apenas os arquivos compilados.

O trabalho de mover os arquivos estáticos da estrutura de desenvolvimento para o Contêiner Web, assimcomo, o da compilação das classes Java, é conhecido como deployment e existem duas opções para a realizaçãodesta operação. Podemos gerar um empacotamento WAR para o nosso aplicativo, ou então, copiar diretamente osarquivos para dentro do Contêiner, seguindo uma estrutura de diretórios conforme será apresentada mais adiante(deployment aberto ou expandido).

Este trabalho pode ser feito:- Manualmente: copiando os arquivos e organizando dentro do Contêiner na estrutura necessária;- Através de ferramentas oferecidas pelo próprio Contêiner;- Por ambiente de desenvolvimento (IDE);- Por ferramentas específicas como Ant e Maven.

3 Análise de arquiteturas

3.1 Arquitetura Física e Arquitetura LógicaOs servidores podem estar todos fisicamente na mesma máquina, apesar de existir a divisão conceitual de

responsabilidades e processamento, ou podem estar separados fisicamente, cada um em uma máquina separada.Muitas vezes não é necessário separar os servidores fisicamente, mas a divisão conceitual garante a escalabilidadee a flexibilidade da arquitetura, permitindo e facilitando a separação física dos servidores no momento em que fornecessário.

Figura 3.1 – Aplicações em Camadas

3.2 Tipos de aplicações na WEBPodemos enquadrar as aplicações na Web em um dos seguintes tipos:

Page 26: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

26Todos os direitos reservados a 3Way Networks

Page 27: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

27Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

22

- Business-to-consumer (B2C) – entre empresa e consumidor. Exemplo: uma pessoa compra um livro naInternet.

- Business-to-business (B2B) – Troca de informações e serviços entre empresas. Exemplo: o sistema deestoque de uma empresa de automóveis detecta que um item de estoque precisa ser reposto e faz o pedidodiretamente ao sistema de produção do fornecedor de autopeças. Neste tipo de aplicação a linguagem XML possuium papel muito importante, uma vez que existe a necessidade de uma padronização das tags para comunicação deconteúdo.

- User-to-data – acesso a bases de informação. Exemplo: um usuário consulta uma base de informação.- User-to-user – chat e troca de informações entre usuários (Messenger, ICQ).

3.3 Arquitetura MVC para a WebPara exemplificar a Figura 3.2 contém um diagrama de blocos que mostra a participação de Servlets, JSP e

JavaBeans em uma arquitetura. A idéia é isolar cada aspecto do modelo MVC com a tecnologia mais adequada. Apágina JSP é ótima para fazer o papel da visão, uma vez que possui facilidades para a inserção de componentesvisuais e para a apresentação de informação. No entanto, é um pouco estranho usar uma página JSP para receber etratar uma requisição. Esta tarefa, que se enquadra no aspecto de controle do modelo MVC é mais adequada a umServlet, uma vez que neste momento componentes de apresentação são indesejáveis. Finalmente, é desejável quea modelagem do negócio fique isolada dos aspectos de interação. A proposta é que a modelagem do negócio fiquecontida em classes de JavaBeans. Em aplicações mais sofisticadas a modelagem do negócio deve ser implementadapor classes de Enterprise JavaBeans (EJB), no entanto esta forma de implementação foge ao escopo deste material.

Figura 3.2 - Arquitetura de uma aplicação para Comércio Eletrônico.

Page 28: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

28Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

23

Servlets – Atuam como controladores, recebendo as requisições dos usuários. Após a realização dasanálises necessária sobre a requisição, instância o JavaBean e o armazena no escopo adequado (ou não caso obean já tenha sido criado no escopo) e encaminha a requisição para a página JSP.

JavaBeans – Atuam como o modelo da solução, independente da requisição e da forma de apresentação.Comunicam-se com a camada intermediária que encapsula a lógica do problema.

JSP – Atuam na camada de apresentação utilizando os JavaBeans para obtenção dos dados a seremexibidos, isolando-se assim de como os dados são obtidos. O objetivo é minimizar a quantidade de código colocadona página.

Camada Intermediária (Middleware) – Incorporam a lógica de acesso aos dados. Permitem isolar os outrosmódulos de problemas como estratégias de acesso aos dados e desempenho. O uso de EJB (Enterprise JavaBeans)é recomendado para a implementação do Middleware, uma vez que os EJBs possuem capacidades para gerência detransações e persistência. Isto implica na adoção de um servidor de aplicação habilitado para EJB.

3.4 Vantagens da arquitetura MVC1. Facilidade de manutenção: a distribuição lógica das funções entre os módulos do sistema isola o impacto

das modificações.2. Escalabilidade: Modificações necessárias para acompanhar o aumento da demanda de serviços

(database pooling, clustering, etc) ficam concentradas na camada intermediária.

4 Ambiente de desenvolvimento

4.1 TomcatO Tomcat é um servidor de aplicações Java para web. É software livre e

de código aberto, surgido dentro do conceituado projeto Apache Jakarta eque teve apoio e endosso oficial da Sun Microsystems como Implementaçãode Referência (RI) para as tecnologias Java Servlet e JavaServer Pages (JSP).

Atualmente, o Tomcat tem seu próprio projeto de desenvolvimentoindependente, dentro da Apache Software Foundation. O Tomcat é robusto eeficiente o suficiente para ser utilizado mesmo em um ambiente deprodução.

Tecnicamente, parte da plataforma corporativa Java Enterprise Edition(Java EE, anteriormente denominada J2EE) abrange as tecnologias Servlet eJSP, incluindo tecnologias de apoio relacionadas como Realms e segurança,JNDI Resources e JDBC DataSources. O Tomcat tem a capacidade de atuartambém como servidor web/HTTP autônomo, ou pode funcionar integrado aum servidor web dedicado, como Apache http ou Microsoft IIS, ou aindacomo parte integrante de um servidor de aplicações mais amplo, como JBossAS, provendo os recursos de Java Servlet e JSP.

O Tomcat porém não implementa um contêiner EJB. Para aplicaçõesJava Enterprise Edition (Java EE) que utilizam Enterprise JavaBeans (EJB),você deve procurar um servidor de aplicações Java EE completo, como JBossAS (software livre), GlassFish (software livre), Apache Geronimo (software

A partir do Java EE 5.0, comas versões de especificações

Servlet 2.5 e JSP 2.1, aimplementação de referência(RI) destas tecnologias passoua ser o servidor de aplicaçõesJava EE 5.0 completo (Web e

EJB) Sun Java SystemApplication Server Platform

Edition 9, baseado no projetode software livre GlassFish.

Page 29: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

29Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

24

livre), IBM WebSphere (comercial), BEA WebLogic (comercial), Oracle AS (comercial) ou o Java EE SDK que incluiSun Java System Application Server Platform Edition (gratuito), entre outros.

Este é um material de instalação e configuração básica do Tomcat. Ele foi escrito etestado com base em instalações do Tomcat 4.1, 5.0, 5.5 e 6.0 em Windows, Unix eLinux. As configurações aqui propostas são para criar um ambiente de desenvolvimentobem simples e independente de qualquer ambiente integrado de desenvolvimento (IDE),suficiente para um primeiro contato com o Tomcat e as tecnologias Java para web.

Alternativas? Se você quer considerar alternativas ao Tomcat, uma boa opção é oprojeto Jetty, servidor web e contêiner Servlet Java, também software livre. Jetty 6suporta as mais recentes especificações Servlet 2.5 e JSP 2.1 da plataforma Java EE 5.0.

4.1.1. Instalar Java - JSE SDK (JDK)O Tomcat é inteiramente escrito em Java e, portanto, necessita de

uma Java Virtual Machine (JVM) — Máquina Virtual Java — para serexecutado. Assim, é necessário ter a plataforma Java Platform StandardEdition (Java SE) previamente instalada.

Tomcat 4.1 e 5.0 necessitavam do JDK, para compilar as páginas JSP.O Tomcat 5.5 em diante traz embutido e usa o complilador Java Eclipse JDTpara compilar JSP. Assim, o Tomcat a partir da versão 5.5 necessita apenas doJRE, mas o JDK ainda é útil para o desenvolvedor. Para seu ambiente dedesenvolvimento Java com Tomcat, onde você deve criar aplicações Java emgeral, utilize o JDK completo.

4.1.2 Qual versão de JDK utilizarA versão mais atual da plataforma Java SE é a 6, lançada em

dezembro de 2006. As duas versões anteriores, Java SE 5 (desde setembro2004) e J2SE 1.4.2 (desde junho 2003), ainda são consideradas ativas. Já oJ2SE 1.3.1 encerrou seu ciclo de vida e não deve ser usado para nenhumpropósito.

O Tomcat 6.0 requer Java SE 5.0 ou superior. O Tomcat 5.5 suporta também J2SE 1.4.x, mas é necessárioinstalar um pacote adicional de compatibilidade.

Se você está iniciando um novo ambiente de desenvolvimento, aprincípio o mais adequado é utilizar a versão mais recente, JDK 6, que inclui todasas melhorias e facilidades atuais para a tecnologia Java padrão. O Java SE 6 éplenamente compatível com as versões anteriores, exceto raras exceções.Havendo impossibilidade de usar o Java SE 6, o Java SE 5 também funciona muitobem com Tomcat.

Para obter o Java SE SDK (JDK) e informações sobre a instalação em seusistema operacional, acesse o link: http://java.sun.com/javase/downloads/

4.1.2.1 JAVA_HOME

Completando a instalação do SDK, defina a variável de ambienteJAVA_HOME apontando para seu local de instalação. Isto é muito importante sehouver mais de uma instalação de J2SE no computador, mas a variávelJAVA_HOME deve ser definida mesmo se houver apenas uma versão instalada.

Tomcat é umContêiner Web.

É possível haver várias versõesde JDK/JRE instaladas no

computador em locaisdistintos, convivendo semproblema. Neste caso, é

importante ficar atento a qualversão será selecionada para

uso do Tomcat.

A variável de ambientepadrão JAVA_HOME deve

ser definida (e mantidaatualizada) indicando o

local de instalação do J2SEpreferencial. Esta variávelé consultada pelo Tomcate vários outros sistemasbaseados em Java para

determinar a JVMpreferencial.

Page 30: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

30Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

25

4.2 Instalar Tomcat4.2.1 Qual versão de Tomcat utilizar

O Tomcat tem evoluído paralelamente à evolução da Plataforma Java EE e suas especificações para web,especialmente Java Servlet e JavaServer Pages (JSP). O quadro a seguir relaciona as versões de Tomcat com asrespectivas versões de tecnologias suportadas.

Tomcat Servlet JSP Java EE

6.0 2.5 2.1 Java EE 5.0

5.5 2.4 2.0 J2EE 1.4

4.1 2.3 1.2 J2EE 1.3

Como você está iniciando o aprendizado e desenvolvimento Javapara web, é recomendado utilizar a versão mais atualizada Tomcat 6.0,que é compatível com as especificações e tecnologias mais recentes e é ofoco principal de desenvolvimento do projeto Tomcat. A maior parte dosrecursos atuais é compatível com versões anteriores.

Para obter o Tomcat e informações sobre instalação edocumentação, acesse o site Apache Tomcat, na Apache SoftwareFoundation: http://tomcat.apache.org/

O diretório principal (local de instalação) do Tomcat é referenciadoposteriormente neste material como CATALINA_HOME. Nadocumentação e scripts do Tomcat, esse diretório é também referenciadoassim, pois Catalina é o nome-código do projeto Tomcat e seu contêinerservlet.

4.2.2 Iniciar e parar o TomcatVocê pode executar o Tomcat instalando como serviço (Windows

NT/2000 ou superior), com inicialização automática ou manual; ouexecutá-lo como processo isolado (qualquer sistema operacional), peloatalhos no grupo de programa (Windows) ou por scripts shell (.bat/.sh).Veja a seguir a seção correspondente à forma de inicialização desejada.

4.2.2.1 [Windows] Tomcat como serviçoPara iniciar e parar o Tomcat (5 em diante) como serviço, o

recomendo é usar o Tomcat Monitor, que consiste na ferramenta Apache Service Manager (Procrun) fornecida como Tomcat:

1. Inicie o Tomcat Monitor utilizando o atalho em: Iniciar > Programas > Apache Tomcat > MonitorTomcat. Deve surgir um pequeno ícone (ver imagem) na área de notificação da barra de tarefas doWindows (ao lado do relógio). Este ícone indica o estado atual do serviço Tomcat (quadrado vermelho =parado, triângulo verde = iniciado).

2. Clique no ícone com o botão direito do mouse; no menu de contexto que se abre, escolha Start serviceou Stop service.

O separador de diretórios maisusado aqui é a barra normal (/)

do Unix e Linux; usuários doWindows devem substituir pela

barra-invertida (\) quandoapropriado. Note que a barra

de Unix é aceita comoseparador de diretório mesmoem Windows nos arquivos de

configuração do Tomcat epelos programas java e javac.

Page 31: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

31Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

26

4.2.2.2 Tomcat como processo

Para iniciar e parar o Tomcat como processo pelo prompt de comandos (console ou shell) do sistemaoperacional:

1. defina as variáveis de ambiente JAVA_HOME e CATALINA_HOME, para apontar o diretório principal dainstalação do Java SDK e do Tomcat, respectivamente. O recomendado é criar o script [Windows]setenv.bat ou [Unix] setenv.sh dentro de CATALINA_HOME/bin, com estas configurações;

2. vá para o diretório bin do Tomcat:- [Windows] cd %CATALINA_HOME%\bin- [Unix] cd $CATALINA_HOME/bin

3. execute o script desejado:- Iniciar: [Windows] startup.bat ou catalina start

[Unix] startup.sh ou catalina.sh start- Parar: [Windows] shutdown.bat ou catalina stop

[Unix] shutdown.sh ou catalina.sh stop

4.3. Testar TomcatPara testar se o Tomcat está rodando após iniciado, abra o browser e digite o endereço:

http://localhost:8080/

Na home-page padrão do Tomcat, o link Tomcat Documentation dá acesso a toda a documentaçãonecessária, instalada localmente, inclusive a API Servlet/JSP da Sun, inclusa com o Tomcat.

O Tomcat inclui um contexto chamado Tomcat Manager, que provê uma interface web amigável paragerenciar as aplicações (contextos) — listar, parar, iniciar, recarregar, instalar (deploy), remover (undeploy) — ever informações e estado do servidor e de suas conexões/threads. O instalador Windows solicita o login de usuário(padrão é admin) e a senha para acesso a este recurso.

Para acessar o Tomcat Manager, siga o link respectivo no quadro Administration da home-page padrão doservidor, ou acesse diretamente o endereço:

http://localhost:8080/manager/html

4.4. Criar contexto de desenvolvimentoPara executar seus servlets e JSPs, você precisa colocá-los dentro de um contexto de aplicação web

(ServletContext). Cada contexto é uma unidade de aplicação web Java (servlet/JSP) que possui suas própriasconfigurações. Para organizar o desenvolvimento, é interessante criar um contexto novo e ativar sua opçãoreloadable (recarga automática das classes modificadas).

4.4.1. Estrutura de diretóriosCrie um diretório que será a sua estrutura de desenvolvimento web Java. Uma organização simples sugerida

é a seguinte:

dev/ + src/ (os fontes .java ficam aqui, organizados em pacotes/diretórios) +webContent/ (arquivos do módulo web) + WEB-INF/ (diretório obrigatório) + classes/ (os .class gerados devem ser direcionados para cá) + lib/ (pacotes jar de bibliotecas utilizadas devem ficar aqui)

Page 32: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

32Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

27

+ web.xml (arquivo XML de configuração do contexto) + (aqui entram os JSPs; podem ser criados sub-diretórios) + index.jsp (home-page do módulo Java web), ou um index.html

Supondo que seu diretório "dev" seja em C:\dir\dev\ (Windows), assim, o módulo web ficaria emC:\dir\dev\web.

4.4.2. Criar contexto de aplicação webA tarefa aqui consiste em criar no Tomcat um novo contexto de aplicação web, para seu ambiente de

desenvolvimento. Existem basicamente três meios de se criar um contexto no Tomcat, cuja configuraçãocorresponde a um código XML com um elemento Context:

- Usar um dos mecanismos de Deployment Automático de Aplicação do Host no Tomcat. Este é o meiomais recomendado, pois permite configuração automática do contexto na inicialização e atualização dinâmica daaplicação web durante a execução do Tomcat. Usaremos este meio na forma mais simples e direta, criando umarquivo XML separado com as configurações do contexto.

- Editar o arquivo de configuração principal do servidor Tomcat. Consiste em criar um elemento Contextdiretamente no arquivo conf/server.xml, dentro de um elemento Host. Este meio, ainda muito usado até o Tomcat4, não é mais recomendado a partir do Tomcat 5, em prol do Deployment Automático. A criação de um contextopelo arquivo server.xml tem várias desvantagens: não é dinâmica pois atualizações neste arquivo só podem ser re-lidas reiniciando o Tomcat, cria o risco de invalidar toda a configuração do servidor se for cometido um erro nasintaxe de uma tag de contexto e mistura configurações de servidor com configurações de contexto.

- Pela aplicação de Administração do Tomcat com interface web, quando instalada.

Existem ainda outras formas de criação e configuração automática de um contexto de aplicação web, comoo uso de um pacote Web Application Archive (WAR) e o arquivo META-INF/context.xml dentro do WAR.

Criaremos um arquivo XML, para o novo contexto chamado "dev". O arquivo deve ficar em:

Tomcat 5:CATALINA_HOME/conf/Catalina/localhost/dev.xml

Catalina é o mecanismo e localhost (máquina local) é o hostname padrão.

Crie o arquivo dev.xml na localização já descrita, com o conteúdo do quadroabaixo. O conteúdo é a definição do Context, precedida pela tag de identificação dearquivo XML:

<?xml version="1.0" encoding="iso-8859-1"?><Context path="/dev" docBase="C:/dir/dev/web"

reloadable="true" crossContext="true" debug="3"></Context>

4.4.3. Configurar contexto: web.xmlO arquivo WEB-INF/web.xml é o descritor do contexto de aplicação web,

segundo a especificação Java Servlet/J2EE. As informações nele contidas são asconfigurações específicas da aplicação que o container irá executar quando aaplicação for publicada.

Nosso contexto de desenvolvimento terá apenas as seguintesconfigurações:

- informações textuais de título (elemento display-name, nome daaplicação para exibição no Gerenciador) e comentário de descrição (description) docontexto, úteis para identificação e documentação;

- uma definição de servlet associada à classe do invocador genéricoInvokerServlet do Tomcat, usada para executar os servlets que você criar;

O principal atributodefinido é o docBase do

elemento Context,especificando o

caminho completo parao diretório base dos

arquivos destaaplicação web.

Page 33: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

33Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

28

- um mapeamento (elemento servlet-mapping) genérico associando o padrão de endereço URI /servlet/* àdefinição do invoker criada, indicando que qualquer nome dentro do caminho /servlet/ neste contexto deve serreconhecido como servlet e portanto repassado ao invoker do Tomcat para execução.

Crie o arquivo web.xml (deployment descritor) para o novo contexto de aplicação web criado, dentro dodiretório dev/web/WEB-INF/. Um conteúdo mínimo para ele são as configurações apresentadas listado a seguir.

<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5">

<display-name>Desenvolvimento</display-name><description>

Descritor do contexto de desenvolvimento.</description>

<servlet><servlet-name>dev-invoker</servlet-name><servlet-class>

org.apache.catalina.servlets.InvokerServlet</servlet-class><init-param>

<param-name>debug</param-name><param-value>0</param-value>

</init-param><load-on-startup>2</load-on-startup>

</servlet>

<servlet-mapping><servlet-name>dev-invoker</servlet-name><url-pattern>/servlet/*</url-pattern>

</servlet-mapping>

</web-app>

Como se pode observar no XML anterior, ele se refere ao descritor de aplicação web da especificaçãoServlet 2.5 (integrante do Java EE 5). Para utilizar apenas recursos de uma versão anterior de descritor de aplicaçãoweb, substitua o cabeçalho do XML e a definição da tag raiz web-app pelo da respectiva versão. Eis a alteração decabeçalho para Servlet 2.4:

<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"version="2.4">

...</web-app>

E a seguir o cabeçalho para a especificação Servlet 2.3. Note que a estrutura do XML na versão 2.3 édefinida por um DTD definido na tag DOCTYPE, enquanto as versões mais recentes usam XML Schema (XSD),definido por atributos na própria tag web-app.

Page 34: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

34Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

29

<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE web-appPUBLIC "-//Sun Microsystems, Inc.//DTD Web

Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>...

</web-app>

4.4.4. Ativar contextoPara garantir a ativação do novo contexto criado, reinicie o

Tomcat (stop/start). Logo após a inicialização do Tomcat, o arquivo delog de saída padrão do servidor Tomcat, criado em logs com o nomestdout.log, deve iniciar com um conteúdo similar ao trechoapresentado a seguir. Observe a mensagem (em destaque no quadro)que indica que o contexto configurado pelo arquivo dev.xml foiprocessado.

12/09/2004 12:09:00 org.apache.coyote.http11.Http11Protocol init INFO: Initializing Coyote HTTP/1.1 on port 8080 12/09/2004 12:09:01 org.apache.catalina.startup.Catalina load INFO: Initialization processed in 2234 ms (...) 12/09/2004 12:09:06 org.apache.catalina.core.StandardHostDeployer install INFO: Processing Context configuration file URL file:

.../Tomcat6.0/conf/Catalina/localhost/dev.xml

O Tomcat 5 em diante gera por padrão muito menos mensagens em log para os contextos do que o Tomcat4, de forma que a inicialização não gera nenhuma mensagem no arquivo de log específico do contexto dev. Por isso,não estranhe se você não encontrar inicialmente nenhum arquivo localhost_dev_log.*.txt na pasta logs.

4.4.5. Testar contextoPara testar o novo contexto, acesse o endereço:http://localhost:8080/dev/

Se você criou um index.html no diretório de desenvolvimento (dev/web/),você deve ver esta página. Senão, verá apenas uma listagem do diretório geradapelo Tomcat.

O problema mais comum é haver algum erro de sintaxe no elemento Contextno arquivo XML que define o contexto. Verifique os logs do Tomcat, conforme aseção 12 adiante, à procura de erros. Você pode também usar algum dos muitosValidadores de XML existentes como auxílo, como por exemplo o serviço on-line deValidação de XML do STG, que verifica um XML em arquivo, URI na web ou o textocopiado diretamente em um formulário.

4.5 Bibliotecas ServletPara compilar servlets, você precisa essencialmente importar os pacotes

javax.servlet e javax.servlet.http. As bibliotecas com estes pacotes também estãoinclusas como JAR no Tomcat e devem ser adicionadas ao CLASSPATH docompilador javac:

Se o Tomcat retornar apágina de erro 404 -

Não Encontrado, houvealgum problema de

forma que o contextonão foi ativado.

Você pode usar algum dos muitosValidadores de XML existentes

como auxílo, como por exemplo oserviço on-line de Validação de

XML do STG, que verifica um XMLem arquivo, URI na web ou o texto

copiado diretamente em umformulário.

Page 35: 3way curso-formacao-java-web-completo

Siga-nos também no Twitter!twitter.com/3waynet

Page 36: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

36Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

30

Tomcat 5: CATALINA_HOME/common/lib/servlet-api.jar CATALINA_HOME/common/lib/jsp-api.jar

onde CATALINA_HOME é o diretório principal de instalação do Tomcat.Se você tem o J2EE SDK da Sun instalado, pode alternativamente usar o

j2ee.jar incluso com ele, que contém todas as APIs do Java EE inclusive Servlet/JSP.Mas o mais simples é usar o(s) jar(s) do Tomcat. Isso garante total compatibilidadeentre a versão das APIs Servlet/JSP usadas no desenvolvimento e no seu Tomcat.

Além disso, se o código Java de uma classe servlet sua importar pacotes ouclasses de uma biblioteca de terceiros (que não seja parte das APIs J2SE eServlet/JSP), o JAR com as classes compiladas desta biblioteca deve estar nodiretório WEB-INF\lib\ para que o Tomcat encontre.

4.6. Testar seus servletsO pacote ZIP com os arquivos deste material (veja a Introdução) inclui o

fonte de um servlet bem simples AloMundoServ.java, que pode ser usado comoprimeiro teste, conforme abaixo:

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;

public class AloMundoServ extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException {String alo = "Alô Mundo!";PrintWriter out = response.getWriter();

out.println("<html>");out.println("<body><h1>" + alo + "</h1></body>");out.println("</html>");

} // doGet

} // class AloMundoServ

Se o arquivo estiver em dev/src/, você pode abrir uma janela de comandos (prompt) neste local, certificar-se que o CLASSPATH está devidamente configurado ao executar o compilador javac, direcione o destino para../web/WEB-INF/classes/:

javac -d ../../web/WEB-INF/classes AloMundoServ.java

Depois que um servlet for compilado e o .class resultante colocado em dev/web/WEB-INF/classes/, com asconfigurações de mapeamento servlet genérico que fizemos no contexto, você acessa seu servlet com o URI/dev/servlet/NomeDaClasseServlet (sem o .class). Para o exemplo compilado AloMundoServ.class, acesse o servletcom o seguinte URL:

http://localhost:8080/dev/servlet/AloMundoServ

Podem ser criados, no web.xml, outros mapeamentos específicos para um ou mais servlets. Para isso, vocêdeve conhecer a sintaxe dos elementos <servlet> e <servlet-mapping>.

As bibliotecas deServlet não estão noJDK e sim no Tomcat,então para criar seus

Servlets é necessário aimportação dos JARsexistentes dentro docontainer (Tomcat).

Page 37: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

37Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

31

4.7. Testar seus JSPsOs JSPs colocados em dev/web/ (exemplo: arquivo alomundo.jsp) são

acessados assim:

http://localhost:8080/dev/alomundo.jsp

Podem ser criados sub-diretórios dentro do diretório principal do contexto,para organizar os arquivos JSP e arquivos estáticos (HTML, imagens etc.). Estes sub-diretórios se refletirão diretamente no URL (endereço) de uma página JSP nelescontida. Uma página JSP em dev/web/subdir/pagina.jsp neste contexto terá URL:

http://localhost:8080/dev/subdir/pagina.jsp

No Tomcat 5 ou inferior, se a configuração não estiver apontando para alocalização correta do JDK (Java SDK) mas sim para a do JRE (Java Runtime), atentativa de exibição de um novo JSP pode resultar no seguinte erro:

HTTP Status 500 - Exception report

exception org.apache.jasper.JasperException: Unable to compile class for JSP

No Java compiler was found to compile the generated source for the JSP.

This can usually be solved by copying manually $JAVA_HOME/lib/tools.jar from the JDK

to the common/lib directory of the Tomcat server, followed by a Tomcat restart.

If using an alternate Java compiler, please check its installation and access path.

O JRE não inclui as ferramentas de compilação Java, necessárias para a compilação dinâmica de páginas JSPnovas ou modificadas. Daí o erro. Para solucionar, re-configure ou re-instale o Tomcat informando o caminhocorreto do Java SDK (JDK), ou então recorra à alternativa sugerida na mensagem de erro: copie manualmente oarquivo lib/tools.jar do JDK para o diretório common/lib do Tomcat e re-inicie o Tomcat (shutdown/start).

4.8. LogsPara ver logs de acesso, erro e depuração, leia os txt's gerados em CATALINA_HOME\logs\. Quando

existirem muitos arquivos de log no Tomcat de desenvolvimento e você quiser limpar o diretório para facilitar orastreamento dos logs, siga os passos abaixo:

- Parar (stop) o Tomcat.- Remover todos os arquivos de log existentes em CATALINA_HOME\logs\, ou movê-los para uma área debackup.- Iniciar (start) novamente o Tomcat.

Inspecionar as mensagens de saída informativas e de erro do Tomcat é importante para depurar e fazerdiagnóstico do servidor, identificar problemas na inicialização do Tomcat, acompanhar o processamento dosarquivos de configuração (server.xml, web.xml) e da inicialização e finalização do Tomcat, bem como visualizarquaisquer exceções Java levantadas.

Por padrão, as mensagens informativas (saída padrão) e de erro do servidor Tomcat são direcionadas paraos arquivos stdout.log e stderr.log respectivamente, localizados em CATALINA_HOME\logs\.

É recomendado nãoutilizar espaços nem

caracteres acentuadosnos nomes de sub-

diretório. Além disso,procure usar apenasletras minúsculas, oque é o mais comumem endereços web.

Page 38: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

38Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

32

4.9. Variáveis de AmbienteÉ útil deixar configuradas algumas variáveis de ambiente relacionadas a Java e ao Tomcat. A variável

JAVA_HOME foi abordada no item 1.3 deste material. As variáveis de ambiente relacionadas são:

JAVA_HOME: Local de instalação do Kit de Desenvolvimento Java J2SE (JDK).CATALINA_HOME : Local de instalação do Tomcat.CLASSPATH : Caminhos (pacotes e diretórios) de localizações de classes Java; o classpath deve incluir o(s)jar(s) dos pacotes Servlet e JSP do Tomcat.PATH : Caminhos (diretórios) de localizações de executáveis no sistema operacional, deve incluir o diretóriobin das ferramentas do Java SDK.

Windows (Painel de Controle ou arquivo autoexec.bat), ou criar um script setenv.bat:set JAVA_HOME=C:\Arquivos de programas\Java\jdk1.6.0_05

set CATALINA_HOME=C:\Arquiv~1\Apache~1\Tomcat 6.0

set CLASSPATH=%CATALINA_HOME%\common\lib\servlet-api.jar;.;%CLASSPATH%

set CLASSPATH=%CATALINA_HOME%\common\lib\jsp-api.jar;%CLASSPATH%

set PATH=%JAVA_HOME%\bin;%PATH%

Unix/Linux (user/system profile), ou criar um script setenv.sh:JAVA_HOME=/opt/j2se

CATALINA_HOME=/opt/tomcat

CLASSPATH=$CATALINA_HOME/common/lib/servlet-api.jar:.:$CLASSPATH

CLASSPATH=$CATALINA_HOME/common/lib/jsp-api.jar:$CLASSPATH

PATH=$JAVA_HOME/bin:$PATH

# Sintaxe Bourne shell (sh), Korn shell (ksh), Bash e similares:export JAVA_HOME CATALINA_HOME CLASSPATH PATH

4.10 ThreadPara entender o funcionamento de uma thread é necessário analisar,

inicialmente, um processo. A maioria dos sistemas de hoje são baseados emcomputadores com apenas um processador que executam várias tarefassimultâneas. Ou seja, vários processos que compartilham do uso da CPU tomandocertas fatias de tempo para execução. A esta capacidade é denominado o termomultiprocessamento.

Teoricamente existe uma grande proteção para que um processo não afete aexecução de outro, modificando-o, por exemplo, a área de dados do outro processo, a menos que haja ummecanismo de comunicação entre os processos (IPC – Inter Process Communication). Este alto grau de isolamentoreduz os desagradáveis GPFs (General Protection Fault), pois o sistema se torna mais robusto. Em contrapartida, oinício de cada processo é bastante custoso, em termos de uso de memória e desempenho, e o mecanismo de trocade mensagens entre os processos é mais complexo e mais lento, se comparado a um único programa acessando aprópria base de dados.

Uma solução encontrada foi o uso de threads, também conhecidas por linhas de execução. A thread podeser vista como um subprocesso de um processo, que permite compartilhar a sua área de dados com o programa ououtras threads. O início de execução de uma thread é muito mais rápido do que um processo, e o acesso a sua áreade dados funciona como um único programa.

Thread é a execução deum trecho de códigoem paralelo a outros,

ou seja, executados aomesmo tempo.

Page 39: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

39Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

33

Existem basicamente duas abordagens para a implementação das threads na JVM: utilização demecanismos nativos de operação do S.O. e a implementação completa da operação thread na JVM. A diferençabásica é que as threads com mecanismos nativos do S.O. são mais rápidas. Em contrapartida a implementada pelaJVM tem independência completa de plataforma. Basicamente, em ambos os casos, a operação das mesmas éobtida através de uma fatia de tempo fornecida pelo S.O. ou pela JVM. Isto cria um paralelismo virtual, como podeser observado na figura abaixo, que representa a execução de três threads.

A execução de uma thread pode passar por quatro estados: novo, executável, bloqueado e encerrado.

Page 40: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

40Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

34

A thread está no estado de novo, quando é criada. Ou seja, quando é alocada área de memória para elaatravés do operador new. Ao ser criada, a thread passa a ser registrada dentro da JVM, para que a mesma possoser executada.

A thread está no estado de executável, quando for ativada. O processo de ativação é originado pelométodo start(). É importante frisar que uma thread executável não está necessariamente sendo executada, poisquem determina o tempo de sua execução é a JVM ou o S.O..

A thread está no estado de bloqueado, quando for desativada. Paradesativar uma thread é necessário que ocorra uma das quatro operações a seguir:

1. Foi chamado o método sleep(long tempo) da thread;2. Foi chamado o método suspend() da thread (método deprecado)3. A trhead chamou o método wait();4. A thread chamou uma operação de I/O que bloqueia a CPU;

Para a thread sair do estado de bloqueado e voltar para o estado deexecutável, uma das seguintes operações deve ocorrer, em oposição as ações acima:

- Retornar após o tempo especificado, caso a thread estiver adormecida;- Retornar através do método resume(), caso a thread tiver sido suspensa(método deprecado);- Retornar com o método notify() ou notifyAll(), caso a thread estiver emespera;- Retornar após a conclusão da operação de I/O.

A thread está no estado de encerrado, quando encerrar a sua execução. Isto pode acorrer pelo término dométodo run(), ou pela chamada explícita do método stop().

Começando a trabalhar com threadsPara entender o uso de uma thread, está apresentado a seguir, um programa que fica indefinidamente

imprimindo um contador na saída padrão(SemThread.java).

public class SemThread {

public static void main(String[] args) {int i = 0;while(true)

System.out.println(“Número: ”+ i++);}

}

Aparentemente este programa ocupa completamente a CPU, e é o que realmente ocorre em S.O.scorporativos. Porém em S.O. preemptivos, o próprio S.O. se encarrega de gerenciar a ocupação da CPU, o quepermite rodar outros processos, mesmo que um processo não retorne o controle para o S.O..

Como implementar o programa SemThread, permitindo que outros processos compartilhem a CPU? Asolução é utilizar threads, como pode ser observado na classe SimplesThread. Existem duas abordagens para umaclasse ser uma thread:

1. Implementar a interface Runnable;2. Ser derivada da classe Thread;

Uma thread encerradaou destruída não vouser reativada, deve-se

cria-la novamente.

Page 41: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

41Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

35

Neste exemplo a classe Escrita é derivada da classe Thread. No método run() da classe Escrita está contidoo código necessário para implementar adequadamente o programa acima.

class Escrita extends Thread {

private int i;

public void run() {while(true)

System.out.println(“Número :”+ i++); }}

public class SimplesThread1 {

public static void main(String[] args) {Escrita e = new Escrita(); //Cria o contexto de execuçãoe.start(); //Ativa a thread

}}

No exemplo SimplesThread2 a classe Escrita implementa a interface Runnable. Qualquer classe queimplementar a interface Runnable deve ter a descrição do método run().

class Escrita implements Runnable {

private int i;public void run() {

while(true)System.out.println(“Número: ”+ i++);

}}

public class SimplesThread2 {

public static void main(String[] args) {

Escrita e = new Escrita();//Cria o contexto de execução Thread t = new Thread(e); //Cria a linha de execução t.start(); //Ativa a thread }}

A classe SimplesThread2 cria o contexto de execução da thread nomomento que cria uma instância de um objeto Runnable, que é o objeto Escrita.

Escrita e = new Escrita(); //Poderia ser Runnable e = new Escrita();

Para criar uma linha de execução, basta criar a thread, fornecendo ocontexto (o local onde há o método run da thread).

Thread t = new Thread(e);

O início da thread propriamente dito ocorrerá com o método start().

Uma thread só éiniciada quando ométodo start() for

invocado.Mesmo que o objeto

tenha sido criado com oconstrutor new, não

significa que ela estejaem execução.

Page 42: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

42Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

36

Métodos para trabalhar com ThreadsA classe Thread dispõe de vários métodos. Abaixo segue uma descrição resumida de alguns destes:- Thread(...) – construtor da classe. Permite que seja instanciado um objeto do tipo Thread;- void run() – Deve conter o código que se deseja executar, quando a thread estiver ativa;- void start() – Inicia a thread. Ou seja, efetiva a chamada do método run();- void stop() – encerra a thread;- static void sleep(long tempo) – deixa thread corrente inativa por no mínimo tempo milisegundos epromove outra thread. Note que este método é de classe e, conseqüentemente, uma thread não podefazer outra thread dormir por um tempo;- static void yield() – Deixa a thread em execução temporariamente inativa e, quando possível, promoveoutra thread de mesma prioridade ou maior;- void suspend() – Coloca a thread no final da fila de sua prioridade e a deixa inativa (método deprecado);- void resume() – Habilita novamente a execução da thread. Este método deve ser executado por outrathread, já que a thread suspensa não está sendo executada (método deprecado);- void interrupt() – envia o pedido de interrupção de execução de uma thread;- static boolena interrupted() – Verifica se a thread atual está interrompida;- void join() – Aguarda outra thread para encerrar;- boolean isAlive() – retorna true caso uma thread estiver no estado executável ou bloqueado. Nos demaisretorna false;- void setPriority(int prioridade) – Define a prioridade de execução de uma thread. Os valores deprioridade estão entre 1 e 10;- int getPriority() – verifica a prioridade de execução de uma thread;- synchronized – mecanismo que permite ao programador controlar threads, para que as mesmas possamcompartilhar a mesma base de dados sem causar conflitos;- void wait() – Interrompe a thread corrente e coloca a mesma na fila de espera (do objeto compartilhado)e aguarda que a mesma seja notificada. Este método somente pode ser chamado dentro de um método desincronizado;- void notify() – Notifica a próxima thread, aguardando na fila;- void notifyAll() – Notifica todas as threads.

Há também, vários métodos para trabalhar com agrupamentos de threads. A documentação necessáriapode ser encontrada no JDK, no pacote Java.lang.ThreadGroup.

Entendendo melhor o uso de threadsO que acontece com a thread quando termina o método main? Porque o Garbage Collection não elimina a

thread da memória, já que não há nenhuma referência para a mesma? O que ocorre é que o programa pode nãoter uma referência explícita para a thread, mas implicitamente a thread está cadastrada na JV e continuarácadastrada enquanto não for encerrada.

Desta forma, mesmo após executar o último comando do main, o programa permanece sendo executado.Para encerrá-lo, todas as referências implícitas do programa devem ser eliminadas. Este mesmo princípio ocorrepara os componentes de uma interface gráfica, onde por exemplo, mesmo ao final do main um frame pode ficarativo.

Para visualizar melhor o uso de threads, o arquivo VariasThreads.java, apresenta um incremento da classeSimplesThread2. A classe Escrita passou a ter uma variável de instância que identifca a thread que está sendoexecutada.

Page 43: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

43Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

37

class Escrita implements Runnable {

private int i;

private static int cont = 0;

private int identificacao;

public void run() {

while(true)

System.out.println(“Número (” +identificacao + “): ” + i++);

}

public Escrita() {cont++;identificacao = cont;

}}

public class VariasThreads {

public static void main(String[] args) { Runnable r1 = new Escrita();

Runnable r2 = new Escrita(); New Thread(r1).start(); New Thread(r2).start();

}}

A execução de uma thread nativa depende do S.O.. Embora a linguagemJava seja totalmente portável, certos cuidados tem que ser tomados para que asthreads cooperam adequadamente, independente da JVM. Na verdade, o que seespera é que uma thread, após ser executada, passe a promover outras threads,mantendo a ordem de prioridade entre as mesmas. Se isto não ocorrer, algunsS.O. poderão ter as demais threads paradas durante a execução da thread“xxxxx”.

O programa VariasThreads2.java refaz a classe Escrita para, após exibir amensagem na saída padrão, a thread ficar inativa por pelo menos 500milisegundos.

O método sleep(long tempo) faz com que a thread adormeça por tempomilisegundos e promove outras threads.

class Escrita implements Runnable {

private int i;

private static int cont = 0;

private int identificacao;

public void run() {

Você pode definir níveisde prioridade paraexecução de uma

thread.Uma thread com nível

de prioridade maiornão necessariamente

será encerradaprimeiro, mas existe

uma grandepossibilidade.

Page 44: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

44Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

38

while(true)

System.out.println(“Número (” + identificacao + “): ” + i++);

try {

Thread.sleep(500);

}catch(InterruptedException e) {}

}

public Escrita() {

cont++;

identificacao = cont;

}

}

public class VariasThreads {

public static void main(String[] args) {

New Thread(new Escrita()).start();

New Thread(new Escrita()).start();

}}

Para analisar a segunda abordagem de implementação de threads, o programa MultiThread.java cria trêsthreads com tempos de espera e nomes distintos. Para gerar um tempo de espera randômico foi utilizado ométodo Math.random().

class UmaThread extends Thread {

private int delay;

public UmaThread(String identifacacao, int delay) {

super(identificacao);

this.delay = delay;

}

public void run() {

String identificação = this.getName();

try {

sleep(delay);

}

Page 45: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

45Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

39

catch(InterruptedException e) {

System.out.println(“Thread: ”+ identificacao+ “ foi interrompida’);

}

System.out.prinln(“>>” + identificacao + “ ” + delay); }

}

public class MultiThread {

public static void main(String[] args) {

UmaThread t1,t2,t3;

t1 = new UmaThread(“Primeira”, (int)(Math.random()*8000));

t2 = new UmaThread(“Segunda”, (int)(Math.random()*8000));

t3 = new UmaThread(“Terceira”, (int)(Math.random()*8000));

t1.start();

t2.start();

t3.start();

}}

5 Java Servlet

5.1 HistóricoNo começo, a Internet era uma dúzia de páginas estáticas contendo sites de pesquisa de diversas

academias. A necessidade de gerar conteúdo dinâmico como os primeiros contadores, uma idéia bem simples hojeem dia, surgiram os primeiros programas de CGI (Common Gateway Interface).

Através de linguagens como C, C++, Perl, ASP, PHP, Cobol, Delphi, Shell e etc, foi possível gerar conteúdoque permite ao usuário acesso à diversas funcionalidades através de páginas HTML, como quando você desejacomprar produtos em uma loja virtual.

Para melhorar o desempenho do último exemplo, inventaram o que viria a ser um servlet, uma nova formade trabalhar com requisições de clientes via web que economiza o tempo de processamento de uma chamada e amemória que seria gasta para tal processo, além de ser em Java e possuir todas vantagens e facilidades deorientação a objeto.

Além do mais, servlets são portáveis tanto quanto qualquer programa escrito em Java, e aqueles queprogramam servlets não precisam mais se preocupar com a funcionalidade do servidor, que já foi escrita para nós enão precisa ser alterada.

Este curso tem como pré-requisito o conhecimento de HTML: saber utilizar as tags principais para aconstrução de páginas dinâmicas (html, body, form, input, textarea e select).

Page 46: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

46Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

40

Um CONTÊINER é o componente responsável por dar suporte para as APIs de Servlet e JSP. O Tomcat virouimplementação padrão de referência das APIs de Servlets, isto é, quando uma nova especificação surge, o Tomcatcostuma ser o primeiro servlet contêiner a implementar a nova API.

Tudo o que vamos desenvolver neste curso funciona em qualquer ambiente compatível com o JavaEnterprise Edition.

5.2 O que é um Servlet?Servlets são classes Java que são instanciadas e executadas em

associação com servidores Web, atendendo requisições realizadas por meio doprotocolo HTTP. Ao serem acionados, os objetos Servlets podem enviar aresposta na forma de uma página HTML ou qualquer outro conteúdo MIME.Na verdade os Servlets podem trabalhar com vários tipos de servidores e nãosó servidores Web, uma vez que a API dos Servlets não assume nada a respeitodo ambiente do servidor, sendo independentes de protocolos e plataformas.

Os Servlets são tipicamente usados no desenvolvimento de sitesdinâmicos. Sites dinâmicos são sites onde algumas de suas páginas sãoconstruídas no momento do atendimento de uma requisição HTTP. Assim épossível criar páginas com conteúdo variável, de acordo com o perfil dousuário ou informações armazenadas em um banco de dados. Veja na Figura5.1 o esquema de funcionamento de um servlet.

Figura 5.1 – Sevidor Web, Contêiner e Servlets

Servlets não possuem interface gráfica e suas instâncias sãoexecutadas dentro de um ambiente Java denominado de Contêiner. OContêiner atua em associação com servidores Web recebendo asrequisições reencaminhada por eles. Tipicamente existe apenas umainstância de cada Servlet (Figura 5.2), no entanto, o Contêiner podecriar vários threads de modo a permitir que uma única instânciaServlet atenda mais de uma requisição simultaneamente (Figura 5.3).

Servlets é uma API paraconstrução de componentes

do lado servidor com oobjetivo de fornecer um

padrão para comunicaçãoentre clientes e servidores.

O Contêiner gerencia as instânciasdos Servlets e provê os serviços de

rede necessários para asrequisições e respostas.

Page 47: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

47Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

41

Figura 5.2 – Contêiner atendendo uma única requisição com um Servlet

Figura 5.3 – Contêiner atendendo múltiplas requisições com um Servlet

Servlets provêem uma solução interessante para o relacionamento cliente/servidor na Internet, tornando-se uma alternativa para a implantação de sistemas para a Web. Antes de entrarmos em detalhes na construção deServlets, compararemos esta solução com outras duas soluções possíveis para implantação de aplicações naInternet.

5.3 A classe HttpServletO comportamento dos servlets que iremos ver neste capítulo está definido na classe HttpServlet do pacote

javax.servlet. Eles se aplicam às servlets que trabalham através do protocolo Http.Para cada método HTTP há um método correspondente na classe HttpServlet, de modo geral eles tem a

seguinte assinatura:

protected void doXXX(HttpServletRequest, HttpServletResponse) throwsServletException, IOException;

onde doXXX() depende do método HTTP, como mostrado na Tabela 5.1.

Page 48: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

48Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

42

método HTTP método HttpServlet

GET doGet()

HEAD doHead()

POST doPost()

PUT doPut()

DELETE doDelete()

OPTIONS doOptions()

TRACE doTrace()

Tabela 5.1 Métodos HTTP e o método correspondente na servlet

A classe HttpServlet fornece um implementação vazia para cada método doXXX(). Você deve sobrescrever ométodo doXXX() que for tratar em seu servlet para implementar a lógica de negócio.

5.3.1 Seqüencia de eventos na HttpServletVocê deve estar curioso sobre quem invoca o método doXXX(). Veja a seqüencia do fluxo de controle do

servlet contêiner para o método doXXX() de uma servlet:- O servlet conteiner chama o método service(ServletRequest, ServletResponse) de HttpServlet.- O método service(ServletRequest, ServletResponse) de HttpServlet invoca o método

service(HttpServletRequest, HttpServletResponse) da mesma classe. Observe que o método e service ésobrecarregado na classe HttpServlet.

- O método service(HttpServletRequest, HttpServletResponse) de HttpServletanalisa a requisição e procura pela método HTTP que está sendo utilizado.Dependendo do método HTTP, ele invoca o método doXXX() correspondente daservlet. Por exemplo, se a requisição usou o método POST ele chama o métododoPost() da servlet.

Se for sobreposto o método service, em sua implementação você terá dedeterminar qual método HTTP será usando na requisição e fazer por si mesmo ainvocação do método doXXX() apropriado. Por esta razão é recomendado somentesobrepor os método doPost() e doGet().

Todos os métodos doXXX() recebe dois parâmetros: os objetosHttpServletRequest e HttpServletResponse. Veremos estes objetos nas próximasseções.

Mas primeiro tome esta nota sobre a API Servlet: Os componentes maisimportantes da API Servlet são interfaces, incluindo HttpServletRequest eHttServletResponse. O contêiner servlet deve fornecer a implementação destasinterfaces. Então, sempre que você se referir a algo como um objetoHttpServletRequest isto significa um objeto de uma classe que implementa ainterface HttpServletRequest. O nome da classe não tem qualquer importância e é,de fato, ignorado pelo desenvolvedor.

5.4 O Ciclo de vida do Servlet no ContêinerO ciclo de vida de uma Servlet consiste dos seguintes passos:1. A classe Servlet é carregada pelo contêiner durante seu processo de inicialização. Durante este processo, o

contêiner lê um conjunto de arquivos de configuração, denominados deployment descriptors (descritoresde distribuição da aplicação). Cada aplicação tem seu próprio arquivo descritor de distribuição, web.xml,

Se você sobrepor ométodo service() na

sua classe Servlet, vocêperderá as

funcionalidadesoferecidas pela classe

HttpServlet, e ométodo doXXX() não

será invocadoautomaticamente.

Page 49: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

49Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

43

que inclui uma entrada especificando nome do servlet e o nome da classe do servlet, para cada um dosservlets em uso pelo contêiner. Um instância da classe do servlet é criada pelo contêiner usando o métodoClass.forName(classname).newInstance(). Isto exige que o servlet tenha um construtor default,normalmente você deixará isto a cargo do compilador. Após isto o servlet estará carregado.

2. O contêiner invoca o método init(ServletConfig). Este método inicializa o servlet e deve ser chamado antes que oservlet possa responder a qualquer requisição. O objeto ServletConfig contém todos os parâmetros de inicializaçãoque nos especificamos no descritor de distribuição.O procedimento de inicialização do servlet é chamado de lazy loading (cargapreguiçosa), deste modo o tempo de inicialização do contêiner é reduzido.Porém se o servlet realizar muitas tarefas durante a sua inicialização o tempode resposta para a primeira requisição será muito alto. Para melhorar esteinconveniente você pode usar a tag <load-on-startup> no descritor dedistribuição, exigindo que o contêiner inicialize o servlet no mesmomomento da sua própria inicialização.

3. Após a inicialização, o servlet podeatender as requisições dos clientes. Cadarequisição é tratada, separadamente, porsua própria thread. O contêiner chama ométodo Servlet.service(ServletRequest,ServletResponse) do servlet para todarequisição. O método service() determinao tipo de requisição que está sendo feito ea despacha para um método apropriado a fim de manipular a requisição. Odesenvolvedor do servlet deve disponibilizar a implementação destemétodo. Se uma requisição for para o método que não estejaimplementado, o método da super-classe será chamado, certamenteresultado em um erro que será retornado ao requisitor.

4. Finalmente, se o contêiner decidir que não necessita mais da instância daservlet, ele chama o método destroy() que inativa o serviço da servlet. Ométodo destroy(), assim como o método init(), é chamado somente umúnica vez durante o ciclo de vida de um Servlet.

A Figura 5.2, mostra o diagrama de transições de estados do servlet.

Figura 5.2 – Servlet, diagrama de transição de estado.

O contêiner nãoinicializa os servlets

assim que ele écarregado. Ele inicializaos servlets quando elerecebe uma requisição

para o servlet pelaprimeira vez.

Durante toda a vida doservlet o método

init(ServletConfig) éinvocado somente uma

única vez.

Page 50: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

50Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

44

5.5 Estrutura de Aplicações Web e o Deployment DescriptorUma aplicação Web é um conjunto de Servlets, JSPs, Classes Java, bibliotecas, imagens, páginas HTML e

outros elementos, que podem ser empacotados juntos e que provê as funcionalidades da aplicação.Essa definição está contida, na verdade, na própria especificação de Servlets de Java, não sendo específica,

portanto, à utilização do um único contêiner Web. Isso significa que as aplicações desenvolvidas por você podemser instaladas em qualquer servidor que implemente a especificação de Servlets (como o Apache Tomcat, Jetty,IBM Websphere e o Bea Weblogic).

De acordo com a especificação de Servlets, existem duas maneiras pelas quais uma aplicação web pode serinstalada junto a um Servlet Container: por meio de um arquivo WAR (Web Application Archive) ou por meio deuma estrutura de diretórios criada para web contêiner. No caso específico do Tomcat, essa estrutura é criada, porpadrão, abaixo do diretório webapps.

Para criar uma aplicação Web há uma estrutura de diretórios mínima que deve ser criada, veja Figura 5.3.

|-<diretorio publicação>|--ROOT|-- app1

|--<dir_sua_aplicaçao>

|

|-- *.html, *.gif, *.css

|

|-- *.jsp

|

|--WEB-INF

|- classes

| |- com

| |- empresa

| |- suaclasse.class

|

|- lib

| |- *.jar(jdbcdriver.jar,taglibs.jar, etc)

|

|- web.xml

Toda aplicação web deve ser posta aqui. Isto depende doconfiguração do contêiner, no Tomcat é diretório webapps.

Cada diretório corresponde ao uma aplicação webhospedada neste contêiner, é o “document root” paraaplicação web. A estrutura interna dos diretórios édirigida pela especificação de Servlet.

Todos arquivos são públicos. Os arquivos podemser organizados em subdiretórios ex. *.html napasta html, *.gif na pas imagens, etc

Este diretório contém as informações de que web contêi-ner precisa para inicializar sua aplicação web. Ele nãofaz parte do “document root” de sua aplicação. Elecontêm três coisas: diretório classes, diretório lib eo arquivo web.xml.

Este diretório contêm somente arquivos class e as estruturas dediretórios dos pacotes.

Este diretório contêm arquivos de bibliotecas de classes emformato jar, ou arquivos de aplicações web empacotados comjar.

Este arquivo é o descritor de distribuição (deploymentdescriptor) da aplicação web. Toda aplicação deve ter um.

Figura 5.3 – Estrutura de uma aplicação web

Cada uma das aplicações instaladas no web contêiner será carregada em um específico Servlet Context(Contexto do Servlet). Cada contexto dá à sua aplicação uma URL base, chamada de Context Path (Caminho doContexto), e provê um ambiente comum para todos os Servlets da aplicação.

O Servlet Context serve para o Servidor mapear e distribuir as requisições recebidas para as aplicaçõesinstaladas. No Apache Tomcat, o Servlet Context coincide com o nome do subdiretório criado dentro webapps.

Page 51: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

51Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

45

Assim, por exemplo, supondo que um servidor Tomcat está respondendo pelo nome de domíniowww.empresa.org, e que tenhamos criado as aplicações app1, app2, então teremos os acessos às URLs iniciadaspor http://www.empresa.org/app1 direcionadas para a aplicação app1 os acessos às URLs iniciadas porhttp://www.empresa.org/app2 direcionadas para a aplicação app2. Já o acesso, por exemplo, a uma página htmlque esteja dentro de \webapps\app1\html, terá a seguinte URL http://www.empresa.org/app1/html/hello.html.

A Figura 5.3 mostra o diretório WEB-INF, este diretório deve existir para toda aplicação web e é criadodentro do diretório da aplicação (document root), porém, ele não faz parte do document root. Ou seja, arquivospresentes no WEB-INF não terão uma URL do tipo http://www.empresa.org/app1/WEB-INF/image.gif. Arquivoscolocados dentro do WEB-INF não estão acessíveis diretamente ao cliente. Ainda dentro do WEB-INF temos osdiretórios classes, que contém os pacotes de servlets criados para sua aplicação, o diretório lib, que pode conter asbibliotecas de classes compartilhadas pela sua aplicação, como drivers JDBC e, finalmente, o coração de umaaplicação web, o descritor de distribuição web.xml.

O deployment descriptor é utilizado para informar ao contêiner como executar seus servlets, ele permitemapear uma URL pública, conhecida pelo seu cliente, para próprio nome interno do seu servlet. O ponto maisimportante, por hora, é saber que você pode modificar o comportamento de sua aplicação usando o web.xml, semqualquer alteração em seu código fonte.

Exemplo de web.xml:

<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_ID" version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>capx</display-name>

<context-param><description>exemplo parametro</description><param-name>curso</param-name><param-value>JavaWeb</param-value>

</context-param>

<servlet><description>um simples servlet</description><display-name>ServletSimples</display-name><servlet-name>ServletSimples</servlet-name><servlet-class>aula.cap4.ServletSimples</servlet-class>

<init-param><param-name>mensagem</param-name><param-value>Boa Noite</param-value>

</init-param></servlet><servlet-mapping>

<servlet-name>ServletSimples</servlet-name><url-pattern>/exemplo1.do</url-pattern>

</servlet-mapping>

<welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.jsp</welcome-file>

</welcome-file-list></web-app>

Listagem 5.1 – Exemplo de Deployment Descriptior

A listagem mostra o documento xml que define o Deployment Descriptor (DD), o elemento <web-app> é oelemento root (raiz) desse XML, ou seja, deve haver somente um elemento <web-app>, e abaixo dele devem ficartodos os outros elementos do XML.

Você pode usar oweb.xml para

configurar outrasaspectos da sua

aplicação, incluindoatribuições de

segurança, páginas deerro, bibliotecas detags, passagem deparâmetros para

configuração inicial,entre outros recursos.

Page 52: 3way curso-formacao-java-web-completo
Page 53: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

53Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

46

Os principais elementos abaixo do elemento root são os seguintes:<display-name> -> O elemento deve conter um nome da aplicação a ser apresentado por ferramentas GUI

de gerenciamento/ desenvolvimento de Aplicações Web. Esse elemento é opcional, porém caso vocêdecida utilizá-lo, é importante que haja somente um desses elementos por DD.

<context-param> -> O elemento serve para que se possam definir parâmetros de inicialização do contextoda aplicação; esses parâmetros estarão disponíveis para todos os Servlets e páginas JSP da aplicação.Cada elemento presente deve conter o nome de um parâmetro e o seu valor correspondente. Odesenvolvedor pode também optar por não utilizar nenhum desses elementos em seu XML.

<welcome-file-list> -> Os elementos <welcome-file-list> e <error-page> contém, respectivamente, a listaordenada de páginas a serem utilizadas como index e as páginas a serem apresentadas em casos deerros HTTP ou exceções não tratadas pela aplicação. Esses dois elementos são opcionais, sendo quesomente o primeiro admite uma instância por DD.

<servlet> -> O elemento servlet serve para definir, os Servlets da aplicação, com seus respectivosparâmetros. Cada elemento servlet, por sua vez, é composto dos seguintes elementos:<servlet-name>: deve conter o nome do Servlet.<servlet-class>: deve conter o nome da classe completamente qualificado (inclui a informação sobre o

package, se existir).<init-param>: deve conter um parâmetro de inicialização do Servlet; pode haver nenhum, somente

um, ou mais de um elemento deste tipo para cada Servlet.<load-on-startup>: deve conter um inteiro positivo indicando a ordem de carga deste Servlet em

relação aos outros Servlets da aplicação, sendo que inteiros menores são carregados primeiro; seeste elemento não existir, ou seu valor não for um inteiro positivo, fica a cargo do ServletContainer decidir quando o Servlet será carregado (possivelmente, no instante em que chegarchegar a primeira requisição a esse Servlet).

<servlet-mapping> -> O elemento contém um nome de Servlet, conforme definido em servlet-name, e um <url-pattern>, padrão de URL do Servlet no servidor.

No exemplo anterior, todos as requisições com URLs iniciadas por/exemplo1.do serão mapeadas para o Servlet cujo nome é ServletSimples.

Outros mapeamentos podem ser obtidos através de padrões de URL do tipo*.<extensão>, como por exemplo, *.wm ou *.pdf, de maneira que o acessos a todasas URLs com o sufixo indicado sejam tratados por um mesmo Servlet. Um últimoexemplo de mapeamento interessante diz respeito ao padrão /, que define o Servletdefault para todos os acessos que não se encaixarem em nenhum outro padrão.

6 Request e Response

6.1 IntroduçãoEmbora Servlets possam ser utilizados com outros protocolos, além do HTTP,

a maior parte das aplicações desenvolvidas são destinadas ao uso de clientes eservidores HTTP.

O protocolo HTTP é utilizado na navegação nas páginas da Internet: quandovocê abre uma janela de um browser, acessa uma página Web e navega em seuslinks, você está, na verdade, utilizando esse protocolo para visualizar, em suamáquina, o conteúdo que está armazenado em servidores remotos.

O HTTP é um protocolo stateless (sem estado), que permite comunicação cliente-servidor.Quando você digita o endereço de uma página em um Browser Web, estamos gerando uma requisição a

um servidor, que irá, por sua vez, devolver para o browser o conteúdo da página HTML requisitada.

O cliente envia umarequisição para o

servidor, este processaa requisição e devolveuma resposta para o

cliente, nenhumainformação é mantida

no servidor.

Page 54: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

54Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

47

A requisição enviada por um cliente deve conter, basicamente, um comando (também chamado demétodo), o endereço de um recurso no servidor (também chamado de path) e uma informação sobre a versão doprotocolo HTTP que está sendo utilizado.

Supondo, por exemplo, que utilize-se o método GET, o path /index.html e a versão 1.0 do protocolo HTTP (oque equivale a digitar um endereço http://<endereço de algum servidor>/index.html em um browser), temos aseguinte requisição enviada:

Exemplo de requisição http:

GET /index.html HTTP/1.0

Existem diversos métodos HTTP que podem ser especificados emrequisições, sendo os mais comuns o método GET, normalmente utilizado para obtero conteúdo de um arquivo no servidor, e o método POST, utilizado para enviar dadosde formulários HTML ao servidor. Além desses métodos, o protocolo HTTP 1.0admite também o método HEAD, que permite que o cliente obtenha somente osheaders da resposta; já o protocolo HTTP versão 1.1 admite os seguintes métodos:PUT: transfere um arquivo do cliente para o servidorDELETE: remove um arquivo do servidorOPTIONS: obtém a lista dos métodos suportados pelo servidorTRACE: retorna o conteúdo da requisição enviada de volta para o cliente

Dois headers comuns são, por exemplo, o header User-Agent, que contém informações sobre o cliente queestá gerando a requisição (tipo, versão do browser etc.) e o header Accept, que serve para especificar os tipos derecursos aceitos pelo cliente para a requisição enviada.

Exemplo de requisição HTTP com headers:

GET /apostila/cap5/demo/qqcoisa HTTP/1.1Host: localhost:8080

User-Agent: Mozilla/5.0 Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive

\r\n

Uma vez processada a requisição, o servidor, por sua vez, manda umaresposta para o cliente, sendo que essa resposta também tem um formatopredeterminado: a primeira linha contém informações sobre a versão do protocolo,um código de status da resposta e uma mensagem associada a esse status; emseguida são enviados também headers (com informações do servidor que gerou aresposta, por exemplo); e finalmente, é enviado o conteúdo, propriamente dito, daresposta.

Exemplo de resposta HTTP com headers:

HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Length: 64 Date: Mon, 28 Apr 2008 18:55:27 GMT\r\n

<html><body> Requisição ao serlvet apostila.Demo</body></html>

Além do método,caminho e versão, umarequisição pode conterparâmetros adicionais,

chamados headers.

Você pode executar ocomando acima

fazendo telnet para umservidor web e

digitando a seqüênciade comandos HTTP.Não esqueça que o

protocolo HTTP esperauma linha em branco

para entender quetodos os comandos

foram enviados.

Page 55: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

55Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

48

Assim, no exemplo anterior, o código de status 200 indica que houve sucesso no atendimento da requisiçãoenviada pelo cliente, os headers indicam o tipo, tamanho e data e hora de última modificação do conteúdorequisitado, e por fim, temos uma página HTML em branco, com o conteúdo propriamente dito.

Outros códigos de status bastante comuns são o 404, que indica que o recurso não foi localizado noservidor e o código 500 que indica que houve erro no processamento da requisição enviada.

6.2 HTTP GetO método GET tem por objetivo enviar uma requisição por um recurso. As informações necessárias para a

obtenção do recurso (como informações digitadas em formulários HTML) são adicionadas à URL e, porconsequência, não são permitidos caracteres inválidos na formação de URLs, como espaços em branco ecaracteres especiais. Por exemplo:

A parte após a ( ? ) é denominada de query string, ela consiste de váriospares nomes de parâmetros e valor separados pelo ( & ), como em:

nome1=valor1&nome2=valor2&nome3=valor3&...&nomeN=valorN

Por especificação o método GET é idempotente, ou seja, a invocação damesma URL repetidas vezes sempre terá o mesmo resultado. Os servidores Webpodem assumir que a requisição GET pode ser repetida, sendo possível adicionar àURL ao seu bookmark. Isto é muito útil quando o usuário deseja manter a URLresultante de uma pesquisa. Como desvantagem as informações passadas via GETnão podem ser muito longas, uma vez o número de caracteres permitidos é por voltade 2K.

Use GET para retornar arquivos HTML ou arquivos de imagem, porquesomente o nome do arquivo deve ser enviado.

6.3 HTTP PostAs requisições POST a princípio podem ter tamanho ilimitado. No entanto,

elas não são idempotente, o que as tornam ideais para formulários onde os usuáriosprecisam digitar informações confidenciais, como número de cartão de crédito.Desta forma o usuário é obrigado a digitar a informação toda vez que for enviar arequisição, não sendo possível registrar a requisição em um bookmark, por exemplo.Veja exemplo de uma requisição HTTP POST.

De forma geral use POST para:- Enviar grande quantidades de dados; por exemplo grandes formulários.- Fazer upload de arquivos- Capturar nome de usuário e senha, assim você evita que este dados fiquem

visíveis na URL.

GET /apostila/cap5/demo/qqcoisa?parametro=valor HTTP/1.1

Método HTTP : GET

URL String : /apostila/cap5/demo/qqcoisa?parametro=valor

Query String: parametro=valor

Versão HTTP: HTTP/1.1

Idempotente quer dizerque múltiplas

requisições ao mesmorecurso usando o

método devem ter omesmo resultado queteria uma requisição

apenas.Em termos de métodosde requisição HTTP, osmétodos GET, HEAD,PUT e DELETE são os

que possuem apropriedade de ser

idempotentes.

No POST os parâmetrossão enviados no corpo

da mensagem,diferentemente do GET

em que eles fazemparte da URI.

Page 56: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

56Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

49

6.4 A Interface HttpServletRequestO objeto HttpServletRequest passado para o Servlet contém várias informações importantes relacionadas

com a requisição, como por exemplo o protocolo utilizado, o endereço remoto, informações contidas no cabeçalhoe muitas outras.

Veja no exemplo como você pode usar estes métodos. A Figura 6.1 mostra uma página HTML que permiteao usuário enviar dois parâmetros ao servidor.

Figura 6.1 – Página HTML contendo um FORM

Veja sua listagem:

<form action="/cap5/Listagem51" method="POST">Tecnologia:<input type="text" name="lstconsulta" value="java"> <br> <br>

Estado:<select name="estado" size="5" multiple>

<option value="AC">ACRE</option><option value="DF">BRASILIA</option><option value="CE">CEARÁ</option><option value="PB">PARAÍBA</option>

</select> <br>

<br>

<input type="submit" value="Busca Emprego"></form>

Listagem 6.1 – Código HTML da Página de Requisição

Linha Inicial -> POST /apostila/cap5/demo/qqcoisa HTTP/1.1\r\n

*-> User-Agent: Mozilla/5.0 ..\r\n| Accept: text/xml,application/xml,application/xhtml ...\r\n| Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3\r\n

Header -----| Accept-Encoding: gzip,deflate\r\n| Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n| Content-Type: application/x-www-form-urlencoded\r\n*-> Content-Length: 15

Linha em Branco \r\nDados -> parametro=valor

Page 57: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

57Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

50

O <form> possui um campo texto, uma caixa de listagem, e um botão de submissão. O atributo actionespecifica o servlet mapeado para o nome Listagem51 que irá manipular a requisição. Observe que o atributomethod do <form> é POST, então os parâmetros serão enviados os servidor usando uma requisição HTTP POST.

Uma vez que a requisição tenha sido enviada ao servidor, o servlet ExemploServeletRequest, que estámapeado para nome Listagem51 no Deployment Descriptor, é invocado. A Listagem 6.2 mostra o método doPost()do servlet.

import java.io.IOException;import java.util.Enumeration;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;

public class ExemploServletRequest extends HttpServlet {

@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {// retorna valor do parametro enviado na requisicao// atraves de HttpServletRequestString consultaString = req.getParameter("lstconsulta");// imprime na consoleSystem.out.println(consultaString);

// retorna valores do parametro enviado na requisicao// atraves de HttpServletRequestString[] listaEstado = req.getParameterValues("estado");// imprime na consolefor (String estado : listaEstado)

System.out.println(estado);

// retorna headers da requisicaoEnumeration<String> headers = req.getHeaderNames();while (headers.hasMoreElements()) {

String header = headers.nextElement();// retorna o valor de headerString valor = req.getHeader(header);// imprime na consoleSystem.out.println(header + " = " + valor);

}}

}

Listagem 6.2 – Código do ExemploServletRequest

No código acima, nós sabemos o nome dos parâmetros (lstconsulta e estado) enviados com a requisição,então usamos o método getParameter() e getParameterValues() para recuperar os valores dos parâmetros.Quando não se sabe os nomes dos parâmetros você pode usar o método getParameterNames() e recuperar onome de todos os parâmetros submetidos na requisição.

Ainda no código acima, também utilizamos os métodos getHeader() e getHeaderNames(), para retornar osnomes e os valores de cabeçalhos HTTP submetidos pela requisição. Diferentemente dos parâmetros os cabeçalhossão específicos para o protocolo HTTP portanto este métodos pertencem aos objetos do tipo HttpServletRequest enão de ServletRequest. Veja hierarquia de classes na Figura 6.2.

Page 58: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

58Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

51

Figura 6.2 – Hierarquia Interface HttpServletRequest

Na Listagem 6.2 você observa ainda que usamos o System.out para imprimir os valores de parâmetros ecabeçalhos HTTP, a impressão da saída é de responsabilidade do contêiner web e é local ao servidor não sendoenviada ao cliente. No caso do Tomcat esta saída poderá ser no prompt de comando ou no arquivo Catalina.outdentro do diretório de logs na pasta de instalação do servidor.

6.5 A Interface HttpServletResponseEle recebe os dados que o servlet necessita enviar para o cliente e

os formata dentro de uma mensagem como especificado pelo protocoloHTTP.

A interface ServletResponse fornece métodos relevantes paraqualquer protocolo, enquanto HttpServletResponse estendeServletResponse e adiciona métodos específicos para o protocolo HTTP.

ServletResponse declara vários métodos genéricos, incluindogetWriter(), getOutputStream(), setContentType() entre outros. VejaFigura 6.3.

Figura 6.3 – Hierarquia interface HttpServletResponse

Olhe para o método getWriter() a chamada desse método irá retornar uma referência a um objeto daclasse java.io.PrintWriter, que pode ser usada para enviar dados em formato de caracteres para um cliente.

Os métodos print() e println() dessa classe, por exemplo, podem ser utilizados para adicionar Strings aostream de saída do Servlet; como a saída é mantida em um buffer por questões de performance, você podetambém utilizar o método flush() para forçar a liberação desse buffer de saída, fazendo que o conteúdo da respostadefinido por você seja imediatamente enviado para o cliente.

Assim podemos usar os métodos print() e println() dessa classe para adicionar Strings ao stream de saídado servlet para gerar páginas HTML dinamicamente ou enviar qualquer outro recurso aceito pelo browser cliente.Os dados do stream não são enviados diretamente para o cliente, antes eles são armazenados em buffer de saída,

O objeto HttpServletResponse éum intermediário do servletpara enviar informações de

volta ao cliente.

Page 59: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

59Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

52

sendo enviados efetivamente pelo servlet somente quando o buffer estiver cheio, é automaticamente esvaziado aofinal da execução do servlet, ou se invocarmos diretamente o método flush(). Veja exemplo na Listagem 6.3.

import java.io.IOException;import java.io.PrintWriter;import java.util.Enumeration;

import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;

public class ExemploSevletResponse extends javax.servlet.http.HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

//pega um objeto PrintWritePrintWriter pw = response.getWriter();

//usando PrintWrite para formatar uma Pagina HTMLpw.println("<html>");pw.println("<head>");pw.println("<body>");pw.println("<h3> O cabeçalhos recebidos pelo servidor");pw.println(" são os seguintes:</h3><p/>");

Enumeration<?> headers = request.getHeaderNames();

while (headers.hasMoreElements()) {String header = (String) headers.nextElement();String valor = request.getHeader(header);pw.println(header + " = " + valor + "<br/>");

}

pw.println("</body>");pw.println("</html>");pw.flush();

}

}

Listagem 6.3 – Enviando HTML dinamicamente

Na Listagem 6.3 você pode observar o uso do método setContentType(“text/html”), a invocação destemétodo configura o header Content-Type do protocolo HTTP, este header serve para indicar o tipo do conteúdocontido na resposta do Servlet. Dessa maneira, o valor text/html indica uma página HTML, o valor image/jpegindica uma imagem JPEG, e assim por diante. Na maior parte de suas aplicações para web você irá usar formatotext/html, porém você não precisará invocar o método setContentType() todas as vezes. O web contêiner adicionao cabeçalho automaticamente.

Quando desejarmos enviar outro tipos de recursos em formato binário, como por exemplo arquivos dotipo Zip ou imagens JPEG, para o cliente você irá usar OutputStream a invés de PrintWriter. O objetoServletResponse provê o método getOutputStream() que retorna um objeto da classejavax.servlet.ServletOutputStream. Veja na Listagem 6.4 exemplo da implementação do método doGet() paraenviar um arquivo em formato Jar.

Page 60: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

60Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

53

import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;

public class EnviaBinServlet extends javax.servlet.http.HttpServlet {

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {

//configura tipo de conteúdoresponse.setContentType("application/jar");File f = new File("/teste.jar");

//declara um array de bytes para guardar bináriobyte[] bar=new byte[(int) f.length()];

FileInputStream is = new FileInputStream(f);//lê arquivo para o array de bytesis.read(bar);//Pega um OutputStreamOutputStream os = response.getOutputStream();//envia bytes do array de bytes para o browseros.write(bar);//força encaminhamento dos dados, esvaziando o bufferos.flush();

}}

Listagem 6.4 – Enviando arquivo JAR para o browser

7 Criando a Aplicação Web

7.1 IntroduçãoServlets existem para servir clientes. A solicitação talvez seja simples, como nas listagens apresentadas até

agora, mas podem ser complexas, fazendo armazenamento do estado da aplicação. A solicitação traz consigo dadoscruciais e o código do seu servlet tem que saber como encontrá-los e utilizá-los. A resposta leva a informação que obrowser precisa para montar uma página (ou baixar alguns dados) e o código do seu servlet tem que saber comoenviá-los ou não. Seu servlet pode decidir encaminhar a solicitação para outro servlet ou página Jsp.

7.2 Endereçamento RelativoUm servlet tem um nome do caminho para o arquivo, obviamente, como classes/pacote/UmServlet.class

(um caminho para um arquivo de classe real). O desenvolvedor da classe do servlet escolhe o nome da classe (e onome do pacote que define parte da estrutura de diretórios), e o local no servidor define o nome completo docaminho. Mas qualquer pessoa que distribua o servlet também pode atribuir a ele um nome de distribuiçãoespecial . Um nome de distribuição é simplesmente um nome interno secreto, que não precisa ser igual ao nomeda classe ou do arquivo. Ele pode ser igual ao nome da classe (pacote.UmServlet) ou o caminho relativo para oarquivo da classe (classes/pacote/UmServlet.class), mas também pode ser algo completamente diferente, comoListarServlet, se definido assim no arquivo web.xml usando <servlet-mapping>.

A função de um servleté receber uma

solicitação do cliente edevolver uma resposta.

Page 61: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

61Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

54

Assim, o servlet tem um nome público de URL – nome que o cliente conhece. Ou seja, o nome codificadono HTML de modo que, quando o usuário clicar em um link, que se supõe que vá à aquele servlet, este nomepúblico URL é enviado ao servidor na solicitação HTTP.

Rotear a requisição para um servlet é um processo feito pelo servlet contêiner em duas etapas. Primeiro ocontêiner identifica a aplicação web à qual a requisição pertence, e então ele encontra um servlet apropriado paramanipular a requisição.

Ambos os passos requerem que o contêiner quebre a URI em três partes: caminho contexto (contextpath), caminho do servlet (servlet path) e informação de caminho (path info). A Figura 7.1 mostra estes trêscomponentes da URL.

Figura 7.1 – URL : Host Name + Context path + Servlet path + Path info

Veja os componentes em partes:Context Path – o servlet contêiner tenta comparar a requisição com o maior pedaço possível da URI,

começando como os nomes das aplicações web disponíveis. Este pedaço é chamado de context path. Por exemplo,se a URI é /banco/ContaServlet/pessoafisica, então /banco é o context path (assumindo que a aplicação bancoexista no servlet contêiner). Se não houver um nome de aplicação compatível o context path é vazio, neste caso eleserá associado com a aplicação web padrão ( ou raiz /, no Tomcat é o webapps/ROOT).

Servlet Path – após extrair o context path, o contêiner tenta comparar a maior parte possível da URIrestante com algum mapeamento de servlet (<servlet-mapping> do web.xml) definido para a aplicação web, queesteja especificado com context path. Esta parte é chamada de servlet path. Por exemplo, se a URI é/banco/ContaServlet/pessoafisica, então /ContaServlet é o servlet path (assumindo que ContaServlet é o nome deum servlet definido para aplicação). Se não for possível encontrar um padrão compatível é retornado uma páginade erro.

Path Info – qualquer coisa que sobre da URI após a determinação do servlet path é chamado de path info.Por exemplo, se a URI é /banco/ContaServlet/pessoafisica, então /pessoafisica é o path info.

Reveja o código da Listagem 7.4, em que enviamos um arquivo JAR para o browser. Nos referenciamos onome do arquivo JAR diretamente sem fazer qualquer referência ao diretório onde realmente se encontra oarquivo, na linha:

File f = new File("/teste.jar");

Mas onde realmente está este arquivo? Uma vez que o nome arquivo começa com a / então está sendousado seu caminho relativo. Ou seja, relativo ao context path (document root) da aplicação. Por exemplo, se noTomCat sua aplicação está em ../webapps/banco então o caminho real de /teste.jar é ../webapps/banco/teste.jar.

7.3 FormuláriosSer capaz de lidar com as informações contidas em formulários HTML é fundamental para qualquer

tecnologia de desenvolvimento de aplicações para Web. É por meio de formulários que os usuários fornecemdados, preenchem pedidos de compra e (ainda mais importante) digitam o número do cartão de crédito. Asinformações digitadas no formulário chegam até o Servlet por meio de um objeto do tipo ServletRequest e sãorecuperadas por meio do métodos getParameter(), getParameterNames() , getParameterValues() deste objeto.

Page 62: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

62Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

55

Todo item de formulário HTML possui um nome e esse nome é passado como argumento para o métodogetParameter() ou getParameterValues() que retorna na forma de um String o valor do item de formulário.

Alguns tipos de entradas de dados, como um grupo de checboxes ou lista de seleção, podem ter mais deum valor. Isso quer dizer que um único parâmetro terá diversos valores, dependendo de quantos itens o usuárioselecionou. Um formulário em que o usuário possa selecionar diversos itens é algo como:

<form action="recruta.do" method="POST">Tecnologia:<input type="text" name="lstconsulta" value="java"> <br><br>Estado:<select name="estado" size="5" multiple>

<option value="AC">ACRE</option><option value="DF">BRASILIA</option><option value="CE">CEARÁ</option><option value="PB">PARAÍBA</option>

</select> <br><br>Certificação:<input type="checkbox" name="certificados" value="scjp5">JAVA 5.O<input type="checkbox" name="certificados" value="scjp6">JAVA 6.O<input type="checkbox" name="certificados" value="scwcd5">SCWCD 1.4<input type="checkbox" name="certificados" value="scejb3">EJB 3.O<br><input type="submit" value="Busca Emprego">

</form>

Listagem 7.1 – Objetos de formulário com múltiplos valores

No seu código, você usará o método getParameterValues() que retorna um array:

String um = request.getParameter("lstconsulta");String[] varios = request.getParameterValues("certificacoes");

Se você quiser ver iterar todo o array, por exemplo para imprimir todos os valores:

String [] certificados = request.getParameterValues("certificacoes");for(int i=0; i < certificados.length; i++){

response.getWriter().print("<br> certificados: "+certificados[i]);}

7.3.1 Exemplo: Leitura de dados de um formulárioO Servlet da Listagem 7.2 exibe o valores passados pelo itens de formulários da Listagem 7.1, dois do tipo

text e um do tipo checkbox com múltiplos valores. Em seguida o Servlet cria um formulário contendo os mesmositens de formulário. Note que um formulário é criado por meio do tag <form>. Como parâmetros opcionais destetag temos método da requisição (method), é a URL para onde será submetida à requisição (action). No caso doexemplo, o método adotado é o POST e a requisição será submetida ao próprio servlet que trata o formulário.

import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;

import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;

Page 63: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

63Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

56

public class TrataFormularioServlet extends HttpServlet {

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {

doGet(request, response);}

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();out.println("<html>");out.println("<head><title>Trata formulário</title></head>");out.println("<body bgcolor=\"white\">");out.println("<h3>Trata formulário</h3>");

String nome = request.getParameter("nome");String sobreNome = request.getParameter("sobrenome");String[] hobbies = request.getParameterValues("hobbies");

if (nome != null || sobreNome != null || hobbies != null) {out.println("Nome = " + nome + "<br>");out.println("Sobrenome = " + sobreNome + "<br>");out.println("Hobbies: <br>");for (String str : hobbies)

out.println(str + "<br>");}

out.println("<form action=/cap6/trataform method=GET>");out.println("<h3>Nome : <input type=text size=20 name=nome></h3>");out.println("<h3>Sobrenome:");out.println("<input type=text size=20 name=sobrenome></h3>");out.println("<h3> Hobbies: </h3>");out.println("<input type='checkbox' name='hobbies'");out.println("value='fofoca'>Fofocar</input>");out.println("<input type='checkbox'name='hobbies' ");out.println("value='novela'>Assistir Novela</input>");out.println("<input type='checkbox'name='hobbies'");out.println("value='igreja'>Ir para Igreja</input>");out.println("<input type='checkbox'name='hobbies'");out.println("value='bailar'>Dançar</input>");out.println("<br>");out.println("<input type=submit value=Enviar>");out.println("</form>");out.println("</body></html>");

}}

Listagem 7.2 - TrataFormularioServlet para lidar com um formulário simples .

7.4 Manipulação de CookiesCookies são pacotes de dados, gerados pelo servidor, e que são

enviados junto com a resposta de uma requisição, ficando armazenados namáquina cliente acessível ao browser do usuário. Posteriormente, a cadarequisição enviada, o browser anexa também as informações desses Cookies,permitindo que o servidor recupere os valores definidos anteriormente.

Os cookies fazem parte dos recursos que podemos adotar para

Cookie é utilizado paraarmazenar informações dolado cliente (navegador),não ocupando recurso do

servidor.

Page 64: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

64Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

57

guardar dados de identificação de clientes utilizando protocolo HTTP, um vez que este protocolo é, como jádissemos, sem estado ou não orientado à conexão.

A necessidade da identificação do cliente de onde partiu a requisição e o monitoramento de sua interaçãocom o site (denominada de sessão) é usado tipicamente em sistemas web para:

- Controlar, em um carrinho de compras, a associação dos itens selecionados para compra com o usuárioque deseja adquiri-los. Na maioria da vezes a seleção dos itens e compra é feita por meio da navegaçãode várias páginas do site e a todo instante é necessário distinguir os usuários que estão realizando asrequisições.

- Acompanhar as interações do usuário com o site para observar seu comportamento e, a partir dessasinformações, realizar adaptações no site para atrair um maior número de usuários ou realizarcampanhas de marketing.

- Saber se o usuário está acessando o site para fornecer uma visualização e um conjunto de funcionalidadesadequadas às suas preferências de acordo com o seu perfil.

Infelizmente, existem situações em que cookies não irão funcionar:quando o browser do usuário estiver configurado para não aceitar cookies.Usuários preocupados com sua privacidade normalmente bloqueiam oarmazenamento de cookies por seus browsers. O problema é privacidade, nãosegurança:

- Se você fornecer informações pessoais, servidores podem associarestas informações com ações anteriores;

- Servidores podem compartilhar informações sobre cookies através dautilização de parceiros como doubleclick.net ;

- Sites mal projetados armazenam informações confidenciais comonúmero de cartão de credito diretamente nos cookies ;

- Bugs em JavaScript permitem sites hostis roubarem cookies(navegadores antigos) .

Moral da estória, se cookies não vital para sua aplicação não use. Evitecriar servlets que falhem totalmente quando cookies estão desabilitados enunca coloque dados confidenciais em cookies.

7.4.1 A Classe javax.servlet.http.CookieManipulamos um cookie através de instâncias da classe javax.servlet.http.Cookie. Essa classe fornece

apenas um construtor que recebe dois argumentos do tipo String, que representam o nome e o valor do cookie.A classe Cookie apresenta os seguintes métodos:

Método DescriçãoString getName() retorna o nome do cookie.String getValue() retorna o valor armazenado no cookie.String getDomain() retorna o servidor ou domínio do qual o cookie pode ser

acessado.String getPath() retorna o caminho de URL do qual o cookie pode ser

acessado.boolean getSecure() indica se o cookie acompanha solicitações HTTP ou HTTPS.void setValue(String newValue) atribui um novo valor para o cookie.void setDomain(String pattern) define o servidor ou domínio do qual o cookie pode ser

acessado.void setPath(String url) define o caminho de URL do qual o cookie pode ser

acessado.

Não desenvolva sistemaque dependa 100% de

cookies porque o usuáriopode configurar para não

aceitar cookiesarmazenados em sua

máquina.

Page 65: 3way curso-formacao-java-web-completo
Page 66: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

66Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

58

void setMaxAge(int expiry) define o tempo restante (em segundos) antes que o cookieexpire.

void setSecure(Boolean flag) retorna o valor de um único cabeçalho de solicitação comoum número inteiro.

Tabela 7.1 – Métodos da classe Cookie.

Para enviar Cookies para o Cliente siga o roteiro:- Crie um objeto do tipo javax.servlet.http.Cookie.- Chame o construtor do cookie com um nome do cookie e um valor, ambos strings.

Cookie c = new Cookie("userID", "a1234");

- Atribua a idade máxima para tempo de vida cookie, informe ao navegador para armazenar cookies emdisco ao invés de apenas na memória, use:

setMaxAge (argumento em segundos) ;c.setMaxAge(60*60*24*7); // Uma semana

- Insira o cookie na resposta http, use response.addCookie(c); Se você esquecer este passo, o cookie nãoserá enviado para o browser!

Par ler Cookies do Cliente faça:- Chame request.getCookies(). Isto retornará um array de objetos do tipo

Cookie.- Percorra o array, chamando getName() para cada entrada até você

encontrar o cookie de seu interesse. Use o valor retornado com getValue() parausar o dado armazenado em sua aplicação.

String nomeCookie = "userID";Cookie[] cookies = request.getCookies();

if (cookies != null) {

for (int i = 0; i < cookies.length; i++) {

Cookie cookie = cookies[i];

if (nomeCookie.equals(cookie.getName())) {fazerAlgumaCoisa(cookie.getValue());

}}

}

Na Listagem 7.3, você vê o uso de cookies para registrar a visita e o retorno de um visitante.

import java.io.IOException;import java.io.PrintWriter;

import javax.servlet.ServletException;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpServlet;

Para excluir um cookie nolado cliente crie um com omesmo nome, atribua a

idade com valor 0 eadicione do response para

ser enviado.

Page 67: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

67Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

59

public class VisitanteQueRetorna extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

boolean ehNovo = true;Cookie[] cookies = request.getCookies();if (cookies != null) {

for (int i = 0; i < cookies.length; i++) {Cookie c = cookies[i];if ((c.getName().equals("retornoVisitante")) &&

(c.getValue().equals("sim"))) {ehNovo = false;break;

}}

}String titulo;if (ehNovo) { Cookie returnVisitorCookie = new Cookie("retornoVisitante", "sim"); returnVisitorCookie.setMaxAge(60 * 60 * 24 * 365); // 1 ano de vida

response.addCookie(returnVisitorCookie);titulo = "Bem Vindo a Bordo novo Navegante";

} else {titulo = "Muito bom reve-lo Navegante";

}response.setContentType("text/html");PrintWriter out = response.getWriter();

out.println("<HTML>\n" + "<HEAD><TITLE>" + titulo+ "</TITLE></HEAD>\n" + "<BODY BGCOLOR=\"#FDF5E6\">\n"+ "<H1 ALIGN=\"CENTER\">" + titulo + "</H1>\n"+ "</BODY></HTML>");

}}

Listagem 7.3 – Guardando dados de formulários com Cookies.

7.5 NavegaçãoAté agora nós temos estudado os servlets do ponto de vista e uso de um único servlet. Mas em aplicações

reais utilizar um único servlet para tratar todas as possíveis tarefas não é nada prático. Comumente você irá dividirsuas regras de negócio em múltiplas tarefas. Por exemplo, considere um processo simplificado de uma loja virtualde livros e suas regras de negócio. Um usuário deveria poder:

- Selecionar livros para compra- Remover ou adicionar mais livros- Visualizar livros num carrinho virtual- Fazer pagamento dos livros que deseja compar- Informar endereço de entregaAlém destas atividades muitas outras regras de negócio necessitam ser tratadas; por exemplo, um usuário

só poderá fechar uma compra se estiver cadastrado.Você normalmente irá quebrar o processo de negócio em processos menores, tendo um servlet mais

específico para tratar cada tarefa em foco. No processo descrito poderíamos ter um servlet CarrinhoServlet, quemantém dados das opções de livros já selecionado, que invoca um servlet FinalizaCompraServlet, após ação dousuário para encerrar compra; o servlet FinalizaCompraServlet, verifica se o usuário já está cadastrado em sua basede dados de clientes, senão estiver ele invoca o servlet CadastroClientServlet, que ao encerrar cadastro encaminha

Page 68: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

68Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

60

requisição novamente para FinalizaCompraServlet, que confirma o usuário e finaliza a compra emitindo faturapedido.

Para implementar as funcionalidades requeridas neste exemplo, os servlets terão que coordenar seusprocessos e também o compartilhamento de informações. Por exemplo, o servlet FinalizaCompraServlet deveconhecer os livros que foram selecionados pelo uso de CarrinhoServlet.

A API Servlet fornece uma maneira elegante para compartilhar dados e coordenar os processos de servlets.

7.5.1 RedirecionamentoExistem algumas situações onde pode ser desejável transferir uma

requisição para outra URL. Isto é feito com freqüência em sistemas que combinamo uso de Servlets juntamente com JSP. No entanto, a transferência pode ser paraqualquer recurso. Assim, podemos transferir uma requisição de um Servlet parauma página JSP, HTML ou um Servlet. Da mesma forma uma página JSP podetransferir uma requisição para uma página JSP, HTML ou um Servlet.

Existem dois tipos de transferência de requisição: o redirecionamento e oreencaminhamento. O redirecionamento é obtido usando o métodosendRedirect() de uma instância HttpServletResponse, passando comoargumento a URL de destino. A Listagem 7.4 mostra o código de um Servletredirecionando para uma página HTML.

import ...//NÃO esqueça import'spublic class Redireciona extends HttpServlet {

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

String userAgent = request.getHeader("User-Agent");if ((userAgent != null) && (userAgent.indexOf("MSIE") != -1)) {

//usa caminho relativoresponse.sendRedirect("/cap6/Listagem36");

} else {//redirecionamento deve usar caminho relativo e não caminho//absolutoresponse.sendRedirect("cap6/Listagem36");

}}

}

Listagem 7.4 – Redirecionando com sendRedirect

Você deve manter em mente um conjunto de pontos importantes sobre o método sendRedirect(). Vocênão pode invocar este método se uma reposta já tiver sido emitida – ou seja, se o cabeçalho de reposta já tiver sidoenviado ao browser. Se você fizer a chamada sobe esta condição o método irá disparar um exceção do tipojava.lang.IllegalStateException. Por exemplo, na listagem abaixo o código irá gerar uma IllegalStateException.

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { PrintWriter pw = response.getWriter();

pw.println("<html><body>Dipara exception</body></html>");pw.flush();//envia resposta ao browser//tenta redirecionarresponse.sendRedirect("htt://www.apache.org");

}

Redirecionamento oservidor cria uma novarequisição para a nova

URL, gerando trafego dedados na rede.

Page 69: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

69Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

61

Neste código está forçando o envio imediato do header de resposta ea geração de texto para o browser pela chamado do método pw.flush(). Aresposta é tida como commited neste ponto. Outro ponto importante é que ainvocação de sendRedirect() não é transparente para o browser, em outraspalavras o servlet envia uma mensagem dizendo ao browser que deve buscar umrecurso em algum outro lugar; na prática o servidor envia uma mensagem HTTP302 de volta para o cliente informando que o recurso foi transferido para outraURL e o cliente envia uma nova requisição para a URL informada.

7.5.2 ReencaminhamentoDiferentemente de sendRedirect(), no reencaminhamento, a requisição é

encaminhada diretamente para a nova URL mantendo todos os objetosassociados e evitando uma nova ida ao cliente. O uso de reencaminhamento émais eficiente do que o uso de redirecionamento. O reencaminhamento é obtidousando o método forward() de uma instância do objeto RequestDispatcher,passando como argumento os objetos HttpServletRequest eHttpServletResponse para o recurso de destino.

Uma instância RequestDispatcher é obtida por meio do métodogetRequestDispatcher() de uma instância javax.servlet.ServletContext oujavax.servlet.ServletRequest, que é obtido, respectivamente, por meio dométodo getServletContext() do Servlet e do objeto ServletRequest passdos aos métodos service(), doPost(),doGet(). A Listagem 7.5 mostra o código de um Servlet reencaminhando a requisição para outro servlet.

public class EncaminhamentoServlet extends HttpServlet {

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

ServletContext sc = getServletContext();RequestDispatcher rd = sc.getRequestDispatcher("/listagem63");rd.forward(request, response);

}}

Listagem 7.5 - Reencaminhamento de requisição

Na Listagem 7.5, o servlet EcaminhamentoServlet pode processarparcialmente a requisição recebida e então encaminhá-la para outro servlet que irágerar a resposta final. Essa método pode ser usado para encaminhar requisições arecursos dinâmicos (Servlets e JSP) ou estáticos (arquivo regular ou HTML) noservidor. Este método, também, só pode ser invocado se um resposta ainda nãoestiver commited; doutra forma uma exceção IllegalStateException será lançada.

Há uma importante diferença entre o métodogetRequestDispatcher() de ServletContext e ServletRequest: você pode usarcaminhos relativos com getRequestDispatcher() de ServletRequest mas nãocom o método de ServletContext. Por exemplo, o caminho a seguir é validopara ServletRequest, request.getRequestDispatcher(“../html/copyright.html”).Para o método getRequestDispatcher() de ServletContext o parâmetro nãopode ser relativo mas deve começar com uma /.

Reencaminhamento étransparente para o

usuário, todo processoocorre dentro do

servidor.

O parâmetro usado como método

getRequestDispatcher()para o ServletContext é ocaminho para o recurso,que não deve conter o

Context Path, somente oServlet Path. Não são

aceitos caminhos fora doContext Path corrente.

Page 70: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

70Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

62

7.5.3 Redirect versus ForwardHá uma diferença importante entre usarmos RequestDispatcher.forward() e

HttpServletResponse.sendRedirect(), é que forward() é completamente manipulada pelo web contêiner enquantosendRedirect() envia uma mensagem de redirecionamento ao browser. Em resumo, forward() é transparente aobrowser e sendRedirect() não.

7.6 Passagem de dados entre componentes WebDados podem ser compartilhados entre servlets armazenando objetos em locais bem definidos, que agem

como contêiner. Assim um servlet pode colocar dados neste local e outro servlet pode recuperar estes dados. Umobjeto ServletRequest, ou HttpSession, ou ServletContext podem agir como contêiner para os servlets. Todos elespossuem um método setAttribute(String nome, Object valor) – para armazenar dados no contêiner - e umgetAttribute(String nome) – para recuperar dados.

Embora qualquer um deste objetos possa ser usado para compartilhar dados entre servlets, há umadiferença quanto ao escopo (visibilidade) dos dados armazenados. Dados armazenados com ServletRequest sóestão disponíveis durante o tempo de vida da requisição, enquanto dados armazenados com HttpServletSessionestão disponíveis durante o tempo de vida da sessão e dados armazenados com ServletContext estão disponíveisdurante o tempo de vida da aplicação.

7.6.1 Atributos da requestVeja exemplo nas listagens, há dois servlets um LoginServlet e outro AutenticaServlet.

<html><head><title>Redirecionando e compartilhando dados</title></head>

<body><p>Entre com seu usuario e senha</p><form action="/cap6/login"><p>Nome usuário:<input type="text" name="userid"/></p><p>Senha:<input type="password" name="passwd"/></p><p><input type="submit"/> </p></form></body>

</html>

Listagem 7.6 – login.html

public class LoginServlet extends javax.servlet.http.HttpServlet {Hashtable usuarios = new Hashtable();

public void init() throws ServletException {super.init();usuarios.put("ze", "123");usuarios.put("maria", "123");usuarios.put("pedro", "123");

}

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

String usrId = request.getParameter("userid");String passwd = request.getParameter("passwd");if (usrId != null && passwd != null

&& passwd.equals(usuarios.get(usrId))) {request.setAttribute("userid", usrId);getServletContext().getRequestDispatcher("/autentica").forward(

request, response);return;

Page 71: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

71Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

63

} else {request.getRequestDispatcher("../login.html").forward(request,

response);}

}

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);}

}Listagem 7.7 – LoginServlet

public class AutenticaServlet extends javax.servlet.http.HttpServlet {

Hashtable<String,String> codnome = new Hashtable<String, String>();

public void init() throws ServletException {super.init();codnome.put("ze", "agente leza");codnome.put("maria", "agente gosta");codnome.put("pedro", "agente espera");

}

protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);}

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

String userid = (String) request.getAttribute("userid");PrintWriter pw = response.getWriter();if (userid != null)

pw.print("<h1>Você foi identificado como "+codnome.get(userid)+"</h1");

elserequest.getRequestDispatcher("../login.html").

forward(request,response);

}

}

Listagem 7.8 – AutenticaServlet

8 Gerenciamento de Sessão

8.1 IntroduçãoComo explicamos em seções anteriores o HTTP é um protocolo stateless, ou seja, ele não mantém um

histórico das requisições recebidas de um mesmo cliente. Assim, imaginando uma aplicação simples como umcarrinho virtual de compras de uma livraria virtual, por exemplo, como poderemos manter o histórico dos livros jáselecionados pelo nosso cliente? Se a seleção de cada livro gera uma ou mais requisições, no momento dofechamento da compra, como fazemos para saber quais foram todos os livros selecionados?

Page 72: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

72Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

64

Possíveis maneiras de resolver esse problema, de maneira a contornar essalimitação do protocolo HTTP, são:

Cookies – neste caso, na primeira requisição respondida pelo servletcontêiner é adicionado um identificador de sessão (jsessionid) em umcookie. A cada nova requisição do cliente o cookie é recuperado eassociado a possíveis contêiners HttpSession que tenham sido criadospara este cliente. Esta estratégia é adotada como procedimento padrãopelo contêiner, sendo seu funcionamento transparente aodesenvolvedor. Porém, como vimos anteriormente o usuário podedesabilitar o suporte a cookies em seu browser, essa ação deliberado dousuário impede o funcionamento desta técnica.

Reescrita de URL – essa estratégia é utilizada quando cookies não podem serusados. O contêiner adiciona o identificador de sessão (jsessionid) nofim de cada URL. Assim o servidor pode associar o identificador desessão com dados armazenados para sessão. Por exemplo:http://host/caminho/arquivo;jsessionid=123 informação da sessão éjsessionid=123. Diferentemente de cookies esta estratégia não étransparente para o desenvolvedor; a interface HttpServletResponsefornece dois métodos que facilitam o manuseio de URL reescritas:encodeURL() e encodeRedirectURL().

8.2 Obtendo uma sessãoPara controlar a sessão é necessário obter um objeto HttpSession por meio do método getSession() do

objeto HttpServletRequest. Para associar um objeto ou informação à sessão usa-se o método setAttribute() doobjeto HttpSession, passando para o método uma chave (String) e um valor (Object). Note que o método aceitaqualquer objeto e, portanto, qualquer objeto pode ser associado à sessão. Os objetos associados a uma sessão sãorecuperados com o uso método getAttribute() do objeto HttpSession, que recebe como argumento o nomeassociado ao objeto. Para se obter uma enumeração dos nomes associados à sessão usa-se o métodogetAttributeNames() do objeto HttpSession. A Listagem 8.1 mostra como podemos utilizar HttpSession paraarmazenar dados de sessão.

import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;

public class SessionServlet extends HttpServlet {

public void service(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {

response.setContentType("text/html");PrintWriter out = response.getWriter();

out.println("<html><head>");out.println("<title>Teste de sessão</title>");out.println("</head>");out.println("<body>");out.println("<h3>Teste de sessão</h3>");

Opcionalmente, o métodogetSession() recebe como

argumento um valorboolean que indica se é

para criar o objetoHttpSession se ele não

existir (argumento true)ou se é para retorna null

caso ele não exista(argumento false).

Page 73: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

73Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

65

//recupera objeto HttpSessionHttpSession session = request.getSession(true);//extrai dados da sessãoout.println("Identificador: " + session.getId() + "<br>");out.println("Data:"+(new Date(session.getCreationTime()));out.println("<br>");out.println("Último acesso: " + (new

Date(session.getLastAccessedTime())));String nomedado = request.getParameter("nomedado");String valordado = request.getParameter("valordado");

if (nomedado != null && valordado != null) {//armazena dado na sessãosession.setAttribute(nomedado, valordado);

}out.println("<P>");out.println("Dados da sessão:" + "<br>");

//recupera todos atributos armazenados na sessãoEnumeration valueNames = session.getAttributeNames();

while (valueNames.hasMoreElements()) {String name = (String) valueNames.nextElement();String value = (String) session.getAttribute(name);out.println(name + " = " + value + "<br>");

}

out.println("<P>");out.println("<form action=/cap7/SessionServlet method=POST>");out.println("<h3>Nome:<input type=text size=20"+

"name=nomedado></h3>");out.println("<h3>Valor: <input type=text size=20"+

"name=valordado></h3>");out.println("<input type=submit value=Enviar>");out.println("</form>");out.println("</body></html>");

}}

Listagem 8.1 – Usando HttpSession

8.3 Atributos da sessãoOs atributos de uma sessão são mantidos em um objeto HttpSession.

Pode-se armazenar valores em uma sessão por meio do método setAttribute() erecuperá-los por meio do método getAttribute().

Se um usuário não realizar nenhuma ação durante um certo período detempo o servidor irá assumir que o usuário está inativo e irá invalidar a sessão. Oweb.xml pode ser utilizado para configurar o tempo máximo, em minutos, deuma sessão:

</web-app>...

<session-config><session-timeout>30</session-timeout>

</session-config>...</web-app>

A tag <session-timeout>pode assumir um valornegativo, nesta caso, a

sessão nunca expira.

Page 74: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

74Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

66

O tempo de duração da sessão, também, pode ser alterado por meio do métodosetMaxInactiveInterval(int segundos), ele afetará somente a sessão em que for invocado. Observe que o métodotrabalha como tempo em segundos enquanto a tag <session-timeout> é configurada em minutos.

8.4 Invalidando uma sessãoVocê viu na seção anterior que uma sessão é finalizada automaticamente quando o usuário permanece

inativo por um período de tempo específico. Em alguns casos você poderá desejar encerrar uma sessãoprogramaticamente. Por exemplo, num programa de carrinho virtual de compra é desejável terminar a sessão apóso processo de pagamento ter completado, assim, ao enviar uma nova requisição o usuário terá uma nova sessãocom um carrinho de compras sem nenhum item. HttpSession fornece o método invalidade() para este propósito,veja seu uso na Listagem 8.2:

public class LogoutServlet extends HttpServlet {protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {

// supondo que alguém tenha invocado este// método a partir de um Hyperlinkrequest.getSession().invalidate();// encaminha para pagina principal do usuário

}}

Listagem 8.2 – Invalidando uma Sessão

8.5 Gerenciamento de Sessão sem cookiesDissemos anteriormente que se o suporte a Cookies não estiver habilitado

então devemos recorrer ao método de reescrita de URL. Para tanto usamos osmétodos encodeURL() e encodeRedirectURL() para facilitar nosso trabalho.

A Listagem 8.3 ilustra como este métodos podem ser usados.

import javax.servlet.*;import javax.servlet.http.*;

public class ReescreveURLServlet extends HttpServlet {public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {// recupera a sessãoHttpSession s = req.getSession();PrintWriter pw = res.getWriter();pw.println("<html>");pw.println("<head></head>");pw.println("<body>");pw.println("Uma pagina de teste mostrando duas URLs:<br>");pw.println("<a href=\"" + res.encodeURL("/cap7/SessionServlet")

+ "\">Servlet de sessão</a><br>");// anexa o ID de sessãopw.println("<a href=\"" + res.encodeURL("/cap7/logout")

+ "\">Logout</a><br>");pw.println("</body>");pw.println("</html>");

}}

Listagem 8.3 – Gerenciando sessão sem cookies

Os métodos encodeURL()e encodeRedirectURL()

primeiro verifica se algumID de sessão necessita ser

anexado verificando sehouve o envio de um

header cookie narequisição.

Page 75: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

75Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

67

9 ServletContext e Filtros

9.1 ServletContextVocê pode imaginar a interface ServletContext como uma janela por

onde você vê o ambiente do servlet. Um servlet usa essa interface para obterinformação sobre a aplicação, tais como: parâmetros de inicialização para aaplicação ou versão do servlet contêiner. Ele pode ser usado pelos servlets paracompartilhar dados uns com os outros, assim como fizemos com ServletRequeste HttpSession; a diferença entre eles está no escopo destes dados.

9.1.2 Parâmetros de inicializaçãoO contexto é de uma aplicação web é inicializado no momento em que a

aplicação está sendo carregada. Assim como tem parâmetros de inicializaçãopara um servlet, também os temos para o contexto. Estes parâmetros sãodefinidos no deployment descriptor da sua aplicação web.

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

Veja este exemplo:

<web-app>...

<context-param><param-name>dburl</param-name><param-name>jdbc:basedadosurl</param-name>

</context-param>

....</web-app>

O servlet de uma aplicação web pode recuperar os parâmetros definidos acima, utilizando os métodosgetInitParameter() e getInitParameterNames() da interface ServletContext.

Os parâmetros de inicialização do contexto são usados para especificar informações para toda a aplicação,tais como: conecção com banco de dados, e-mail do desenvolvedor, etc. Claro, antes usar estes métodos vocêprecisará de uma referência para um objeto ServletContext. O trecho de código demonstra como fazer isto dentrodo método init().

public void init() throws ServletException {

//use SevletConfig para obter ServletContextServletContext contexto= getServletConfig().getServletContext();

//ou use//GenericServlet.getServletContext//ServletContext contexto= getServletContext();

String dburl = contexto.getInitParameter("dburl");//use dburl para criar conecçõs com banco de dados

}

Listagem 9.1 – Exemplo de recuperação de parâmetros com ServletContext

Toda aplicação web temum e somente um

ServletContext, ele estáacessível a todos osrecursos ativos da

aplicação.

Page 76: 3way curso-formacao-java-web-completo
Page 77: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

77Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

68

9.1.3 Utilizando atributos do ServletContext

Você pode adicionar informações a objetos de contexto, objetos de sessão e objetos da requisição.Felizmente cada uma dessas classes contém os mesmos quatro métodos para realizar esta operação de atribuição:getAttribute(String), getAttibuteNames(String), setAttribute(String,Object), removeAttribute(String).

Por fim, há um outro método da classe ServletContext que vale a pena conhecer: o método log() permiteque você adicione mensagens em um arquivo de log do Servidor de Aplicações. Você poderá utilizar esse métodopara depurar seus Servlets, gerar alertas de problemas na sua execução etc.

Em alguns Servidores de Aplicação você pode também tentar usar as saídas-padrão (“System.out”,“System.err”) para gerar suas mensagens de log, porém, é muito mais interessante que você use o métodoanterior, de maneira que o ServletContainer possa separar as suas mensagens em um log diferenciado.

9.2 Filtros

9.2.1 Introdução

Filtros são componentes que se interpõem entre uma requisição do cliente e um determinado recurso.Qualquer tentativa de recuperar o recurso deve passar pelo filtro. Um recurso pode ser qualquer conteúdo estáticoou dinâmico (HTML, JSP, GIF, etc.).

Filtros interceptão as requisições do cliente ao servidor antes de chegar ao Servlet ou JSP de destino paraprocessamento. Quando a requisição passa pelo filtro, esse filtro pode processar os dados contidos na requisição etambém decidir sobre o próximo passo da requisição – que pode ser encaminhada para um outro filtro, acessar orecurso diretamente ou impedir que o usuário acesse o recurso desejado.

Figura 9.1 - Ilustração de requisição de passagem por filtros

A figura acima apresenta a maneira pela qual as requisições passam através de filtros, antes de acessar seuponto final (EndPoint) – um recurso atravessa um encadeamento de filtros. Ou seja, existe uma série de filtros,através dos quais uma requisição passa, antes de, finalmente, acessar um determinado recurso.

Esse tipo de funcionalidade também é possível de ser implementado através do redirecionamento deServlets e requisições. Entretanto, o uso de redirecionamento é bem menos elegante, porque exige que oencadeamento dos processos seja programado diretamente no código dos Servlets que compõem a aplicação – ecada vez que esse encadeamento mudar, serão necessárias modificações no código das Servlets para reconfigurar oencadeamento. Eventualmente, o contêiner pode ser reconfigurado alterando-se a quantidade e a ordem dosfiltros, sem que haja necessidade de alterações no código-fonte da aplicação.

Page 78: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

78Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

69

Filtros podem realizar muitos tipos diferentes de funções, como exemplo:Autenticação – bloqueio de requisições baseados na identidade do usuário.Auditoria e registro – monitorando usuários de uma aplicação web.Conversão de imagem – redimensionamento de mapas entre outros.Compressão de dados – empacotamento de downloadsLocalização – configurando as requisições e respostas para uma localização (uso de formatos específicos deuma determinada região como hora, moeda, idioma, etc) em particular.Transformações XSL/T para conteúdo XML – convertendo as repostas de um ou mais tipos de clientes.

9.2.2 Criando um filtroUma classe Filtro deve implementar a interface javax.servlet.Filter que

define os seguintes métodos:void init(FilterConfig config) throws ServletException – esse método é

invocado pelo contêiner durante a primeira vez que o filtro écarregado na memória. Códigos de inicialização devem ser colocadosaqui, incluindo o uso de parâmetros de inicialização contidos noarquivo web.xml – recebidos no parâmetro FilterConfig.

void destroy – esse método é invocado pelo contêiner quando o filtro édescarregado da memória. Isso ocorre normalmente quando aaplicação WEB é encerrada. O código de liberação de recursosutilizados pelo filtro deve ser inserido aqui – o encerramento de uma conexão ao banco de dados, porexemplo.

void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException – esse método contém toda a funcionalidade do filtro, ou seja, as regras que devemser verificadas, antes que uma requisição possa continuar seu caminho até um recurso. Esse método échamado pelo contêiner quando o servidor decide que o filtro deve interceptar uma determinadarequisição ou resposta ao usuário. Os parâmetros passados para esse método são instâncias dasclasses ServletRequest e ServletResponse do pacote javax.servlet.http e da classe FilterChain dopacote javax.servlet. Se o filtro estiver sendo usado por uma aplicação web (o caso mais comum), odesenvolvedor pode realizar o casting entre esses objetos para instâncias das classesHttpServletRequest e HttpServletResponse do pacote javax.servlet.http, respectivamente. Issopermite a recuperação de informações específicas do protocolo HTTP.

Assim como um servlet, o contêiner irá criar uma única instância da classe Filter e criar threads, para lidarcom as requisições concorrentes de vários clientes. Isso significa que esse método deve ser programado no modothread-safe. Um exemplo de classe implementando um filtro é apresentado abaixo. Esse filtro usa o recurso deentrada disponível na classe ServletContext, para registrar todas as requisições do usuário que passam pelo filtro.

import java.io.IOException;import java.util.logging.Filter;import java.util.logging.LogRecord;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;

public class RegistroFilter implements Filter {

private FilterConfig config;

Filtros, são gerenciadospelo contêiner.

Page 79: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

79Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

70

public void init(FilterConfig config) {this.config = config;

}

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws ServletException, IOException {

// recupera o objeto ServletContext que// será usado para realizar o loggingServletContext context = config.getServletContext();

// cria um registro da URL acessada pelo usuárioStringBuffer log = new StringBuffer();log.append(request.getServerName() + ":");log.append(request.getServerPort() + "/");log.append(request.getLocalAddr() + "/" );log.append(request.getLocalName());log.append("--> acessado pelo usuário em ");log.append( new java.util.Date());

// utilizando o recurso de logging disponível// na classe ServletContextcontext.log(log.toString());// chama o próximo filtro na cadeia de filtroschain.doFilter(request, response);

}

public void destroy() {}

public boolean isLoggable(LogRecord arg0) {throw new UnsupportedOperationException("Não implementado!.");

}}

Listagem 9.2 – Exemplo de implementação de um filtro

9.2.3 Configuração do Deployment DescriptorA configuração de filtros é muito parecida com a configuração de Servlets. Existe uma sessão necessária

para configurar cada filtro utilizado na aplicação bem como sessões para configurar o mapeamento entre os filtrose os padrões de URLs aos quais as cadeias de filtros serão aplicadas. Um exemplo de configuração de filtro éapresentado abaixo:

<filter><filter-name>RegistroFilter</filter-name><filter-class>cap8.RegistroFilter</filter-class>

</filter><filter-mapping>

<filter-name>RegistroFilter</filter-name><url-pattern>/*</url-pattern>

</filter-mapping>

Uma vez que a interpretação do arquivo web.xml sofre influência da ordem em que os elementos sãodeclarados, é recomendada a declaração dos filtros após os elementos <context-param> e antes de qualquerdefinição de servlets. Não se esqueça de colocar os elementos <filter-mapping> após a definição dos filtros.

Por padrão, filtros não são aplicados a componentes web (outros servlets, JSP, etc.) acessados pela classeRequestDispatcher através de chamadas include ou forward. Esse comportamento, entretanto, pode sermodificado, incluindo-se um ou mais elementos <dispatch> ao mapeamento do filtro.

Filtros são aplicadosapenas a requisições

feitas diretamente pelocliente ao contêiner..

Page 80: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

80Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

71

...</context-param><filter><filter-name>RegistroFilter</filter-name><filter-class>cap8.RegistroFilter</filter-class>

</filter><filter-mapping>

<filter-name>RegistroFilter</filter-name><url-pattern>/*</url-pattern><dispatch>REQUEST</dispatch><dispatch>INCLUDE</dispatch>

</filter-mapping>

Elementos <dispatch> possue um dos seguintes valores: REQUEST, INCLUDE, FORWARD e ERROR. Issoindica quando um filtro deve ser aplicado apenas a requisições do cliente, apenas em includes, apenas emrequisições, apenas em caso de erro ou na combinação desses quatro valores.

9.3 ListenersA partir da especificação Servlet 2.3 define eventos que ocorrem

durante a vida de uma aplicação, fornecendo aos desenvolvedores deaplicativos Web mais interação com o objeto ServletContext e HttpSession. Osdesenvolvedores de WebApplication pode escrever ouvintes de evento, ou seja,Listeners, para que eles possam agora ser notificado quando ocorrer algumevento, como a criação ou destruição, ou quando os atributos são modificadosno ServletContext ou HttpSession.

Existem dois tipos de ouvintes de evento, e ambos os tipos se aplicamaos objetos ServletContext e HttpSession. Os dois tipos são eventos de ciclo devida e mudanças de atributos de eventos:

Ciclo de VidaServletContext – acabou de ser criado e está disponível para atender seu pedido, ou está prestes a serencerrado.HttpSession – acabou de ser criado, ou foi encerrado/expirou.

Alteração de AtributosServletContext – foi adicionado, removido ou substituído.HttpSession – foi adicionado, removido ou substituído.

Um ponto interessante é que pode haver múltiplos Listeners para cada tipo de evento e o desenvolvedortem a flexibilidade para definir a ordem de eventos serão chamados. O container gerencia o ciclo de vida dosListeners. É de responsabilidade do servidor instanciar cada uma das classes registradas como Listener antes daexecução do primeiro pedido para a aplicação. Além disso, cada uma das classes deve ser referenciado até a últimasolicitação.

Quando uma aplicação web é iniciada, um objeto de contexto do servlet, ServletContext, é criado eassociado com a aplicação web. Existe um relacionamento um-para-um entre um objeto de contexto do servlet eda aplicação web. Todos os recursos dentro da aplicação web, como Servlets e JSPs, pode recuperar todas asinformações armazenadas no contexto do servlet.

Pode ser inicializado objetos e colocá-los no contexto do servlet quando ele é criado e destruir os objetosquando o contexto do servlet é destruído. Por exemplo, você pode decidir criar uma conexão com um banco dedados quando o contexto do servlet é criado e fechar a conexão quando o contexto do servlet for destruído.

Listener é utilizado paracapturar eventos que

ocorrem em umaaplicação Web.

Page 81: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

81Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

72

Para escrever um Listener que será executado quando o contexto do servlet for criado e destruído, escrevauma classe Java que implementa a interface javax.Servlet.ServletContextListener. Esta classe tem dois métodosque precisam ser implementados:

void contextDestroyed (SCE ServletContextEvent)Notificação que o contexto está prestes a ser destruído.

void contextInitialized (SCE ServletContextEvent)Notificação de que a aplicação está pronta para processar solicitações.

Veja o código abaixo, de uma implementação simples, que imprime no log do servidor mensagens quandoo evento ocorre:

public final class MyContextListener implements ServletContextListener {

public void contextDestroyed(ServletContextEvent event) {System.out.println("A aplicação parou!");

}

public void contextInitialized(ServletContextEvent event) {System.out.println("A aplicação iniciou!");

}}

Listeners precisão ser registrados no deployment descriptor, web.xml, da aplicação. São definidos usandotags <listener> e serão executados na ordem que você especificar. A tag <listener> tem um elemento filho,<listener-class>, que define a classe que implementa a interface.

<listener><listener-class>

com.listeners.MyContextListener</listener-class>

</listener>

A especificação Servlet 2.3 permite uma maior interação entre oprogramador, a aplicação e o ServletContext. O programador pode agora escreveruma classe que é executado quando os atributos do objeto ServletContext forammodificados. Se você quiser executar algum código quando os atributos do objetoServletContext for modificado, escreva uma classe Java que implementa ainterface javax.Servlet.ServletContextAttributesListener. Esta interface definetrês métodos que precisam ser implementados:

void attributeAdded (sarna ServletContextAttributeEvent)Notificação de que um novo atributo foi adicionado.

void attributeRemoved (sarna ServletContextAttributeEvent)Notificação de que um atributo existente foi removido.

void attributeReplaced (sarna ServletContextAttributeEvent)Notificação de que um atributo foi substituído ou alterado.

Veja um exemplo de uma classe que implementa de forma simples, imprimindo mensagens no log doservidor, e precisa ser registrada no DD da aplicação da mesma forma mostrada anteriormente.

As tags Listener tem queser adicionadas antes dasdefinições de servlets, ou

seja, antes das tags deservlet.

Page 82: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

82Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

73

public class ServletContextAttribListener implementsServletContextAttributesListener {

public void attributeAdded(ServletContextAttributeEvent scab) {System.out.println("Um atributo foi adicionado.");

}

public void attributeRemoved(ServletContextAttributeEvent scab) {System.out.println("Um atributo foi removido.");

}

public void attributeReplaced(ServletContextAttributeEvent scab) {System.out.println("Um atributo foi alterado.");

}}

Os Listeners também podem fazer as notificações quando um objeto HttpSession é criado, destruído, outem seus atributos modificados. É possível escrever um listener que controla todas as notificações de mudanças doobjeto HttpSession. Isso poderia ser feito com as notificações ServletContext, mas os exemplos anterioresmantinha separado para mostrar cada método.

Para receber notificações do HttpSession é necessário escrever uma classe Java que implementa a interfacejavax.Servlet.http.HttpSessionListener. Essa interface define dois métodos que precisam ser implementados:

void sessionCreated (HttpSessionEvent SE)Notificação de que uma sessão foi criada.

void sessionDestroyed (HttpSessionEvent SE)Notificação de que uma sessão foi invalidada.

Para receber as notificações que os atributos de HttpSession foram modificados deve implementar ainterface javax.servlet.http.HttpSessionAttributesListener. Esta interface define três métodos que devem serimplementados:

void attributeAdded (HttpSessionBindingEvent SE)Notificação de que um atributo foi adicionado.

void attributeRemoved (HttpSessionBindingEvent SE)Notificação de que um atributo foi removido.

void attributeReplaced (HttpSessionBindingEvent SE)Notificação de que um atributo foi substituído.

Veja um exemplo abaixo que recebe todas as notificações de HttpSession, se foi criada ou destruída e seum atributo foi adicionado, removido ou alterado.

public final class MySessionListener implements HttpSessionAttributesListener,HttpSessionListener {

public void sessionCreated(HttpSessionEvent event) {System.out.println("HttpSession criada.");

}

public void sessionDestroyed(HttpSessionEvent event) {System.out.println("HttpSession destruida.");

}

Page 83: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

83Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

74

public void attributeAdded(HttpSessionBindingEvent event) {System.out.println("Atributo adiciado.");

}

public void attributeRemoved(HttpSessionBindingEvent event) {System.out.println("Atributo removido.");

}

public void attributeReplaced(HttpSessionBindingEvent event) {System.out.println("Atributo alterado");

}}

Listeners deve ser utilizados para lidar com notificações sobre alteraçõesnos objetos ServletContext e HttpSession, permite mais controle embora osexemplos tenha sido simples.

10 JavaServer Pages

10.1 IntroduçãoServlets é uma boa idéia, mas dá para imaginar montar uma página

complexa usando println()? Muitas vezes o desenvolvimento de um site é umatarefa complexa que envolve vários profissionais. A tarefa de projeto do layout dapágina fica a cargo do Web Designer, incluindo a diagramação dos textos eimagens, aplicação de cores, tratamento das imagens, definição da estrutura dainformação apresentada no site e dos links para navegação pela mesma. Já oDesenvolvedor Web é responsável pela criação das aplicações que vão executarem um site.

O trabalho destes dois profissionais é somado na criação de um único produto, mas durante odesenvolvimento a interferência mútua deve ser a mínima possível. Ou seja, um profissional não deve precisaralterar o que é foi feito pelo outro profissional para cumprir sua tarefa. A tecnologia Servlet não nos permite atingiresse ideal. Por exemplo, suponha que um Web Designer terminou o desenvolvimento de uma página e a entregoupara o Desenvolvedor Web codificar em um Servlet. Se após a codificação o Web Designer desejar realizar umaalteração na página será necessário que ele altere o código do Servlet (do qual ele nada entende) ou entregar umanova página para o Desenvolvedor Web para que ele a codifique totalmente mais uma vez. Quaisquer umas dessasalternativas são indesejáveis e foi devido a esse problema a Sun desenvolveu uma tecnologia baseada em Servletschamada de JSP.

A idéia de se usar scripts de linguagens de programação em páginas HTML que são processados no ladoservidor para gerar conteúdo dinâmico não é restrita à linguagem Java. Existem várias soluções desse tipo fornecidapor outros fabricantes, tais como: PHP, ASP, ColdFusion.

10.1.1 Ciclo de vida do JSPJava Server Pages são páginas HTML que incluem código Java e outras tags especiais. Desta forma as partes

estáticas da página não precisam ser geradas por println(). Elas são fixadas na própria página. A parte dinâmica égerada pelo código JSP. Assim a parte estática da página pode ser projetada por um Web Designer que nada sabede Java.

A primeira vez que uma página JSP é carregada pelo container JSP o código Java é compilado gerando umServlet que é executado, gerando uma página HTML que é enviada para o navegador. As chamadas subseqüentessão enviadas diretamente ao Servlet gerado na primeira requisição, não ocorrendo mais às etapas de geração ecompilação do Servlet.

JSP é um Servlet.Ele é criado e compilado

na sua primeira chamadano servidor.

Page 84: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

84Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

75

A Figura 10.1 mostra um esquema das etapas de execução de uma página JSP na primeira vez que érequisitada.

Figura 10.1- Etapas da primeira execução de uma página JSP.

Na etapa (1) a requisição é enviada para um container Servlet/JSP. Na etapa (2) o container verifica que nãoexiste nenhuma instância de Servlet correspondente à página JSP. Neste caso, a página JSP é traduzida para códigofonte de uma classe Servlet que será usada na resposta à requisição. Na etapa (3) o código fonte do Servlet écompilado, e na etapa (4) é criada uma instância da classe. Finalmente, na etapa (5) é invocado o método service()da instância Servlet para gerar a resposta à requisição.

10.2 Estrutura de diretóriosAplicações em JSP são escritas com uma linguagem de script a ser traduzida para um arquivo de código

fonte java. O arquivo de código fonte contém a implementação de um Servlet que é compilado e registradoautomaticamente pelo web contêiner.

Desta forma você não precisa configurar o CLASSPATH, não precisa compilar seu código JSP, utilizar pacotespara resolver conflito de nomes, não precisa colocar sua página JSP em um diretório especial, não precisa usar URLespeciais para invocar sua página JSP, use as mesmas URLs usadas para páginas HTML (exceto pela extensão doarquivo).

Do ponto de vista da publicação de um aplicativo em JSP, você pode colocar todos as suas páginas nadocument root da aplicação. Por exemplo (para o servidor Tomcat):

diretório_instalação/webapps/contexto

Nem tudo é perfeito, você ainda precisará das regras anteriores sobre CLASSPATH, diretórios de instalação,etc.; estas regras são necessárias para classes Java utilizadas por uma página JSP.

10.3 Elementos utilizados em JSPsComo qualquer outra linguagem a linguagem de scripting, JSP tem uma gramática bem definida e inclui

elementos sintáticos para realizar várias tarefas, tais como: declaração de variáveis e métodos, expressões deimpressão e invocação de outra página JSP. Os elementos sintáticos, também chamados de tags JSP, estãoagrupados em seis categorias, veja Tabela 10.1 para uma rápida visão deste elementos.

Page 85: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

85Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

76

Tag JSP Descrição Sintaxe da tag

Diretiva Especifica instruções de tradução para o motor JSP <%@ Diretivas%>

Declaração Declara e define métodos e variáveis <%! Declarações Java%>

Scriptlet Permite ao desenvolvedor escrever código Java de forma livre napágina JSP

<% Código Java %>

Expressão Usado para imprimir conteúdo de variáveis na saída HTML geradapor uma página JSP

<%= uma expressão%>

Ação Fornece instruções em tempo de requisição para o motor JSP <jsp:nome_da_ação />

Comentário Usado para comentar partes do código JSP e para documentação <%-- qualquer texto --%>

Tabela 10.1 – Tipos de elementos JSP

10.3.1 Diretivas JSPExistem dois tipos principais de diretivas. Diretiva page que permite situações como importação de classes,

customização de super classes servlet entre outras. Diretiva include que permite que seja inserido o conteúdo deum arquivo no servlet no momento em que o arquivo JSP é traduzido para servlet.

10.3.1.1 Diretiva Page<%@page atributo1=valor1 atributo2=valor2 atributo3=valor3 ... %>

Abaixo relacionamos os atributos mais utilizados nas diretivas page:

contentType<%@page contentType="text/html" %>

Este atributo indicará qual o tipo de conteúdo que a página JSP estará gerando e enviando para o browser.O valor deste atributo pode variar, text/html indica que o conteúdo a ser enviado para o browser será HTML. Setrocarmos por text/plain indicará que o conteúdo é texto puro e o browser não deverá interpretar o mesmo.

import<%@page import="java.util.*" %>

Permite que seja especificado qual o pacote a ser importado. O atributoimport é o único que pode aparecer várias vezes.

isThreadSafeisThreadSafe = "true|false"

O valor de true (default) indica o processamento normal do servletquando múltiplas requisições podem ser acessadas simultaneamente na mesmainstância de servlet. O valor false indica que o servlet deve implementarSingleThreadModel, como requisição para cada requisição sinalizada ou comrequisições simultâneas sendo uma em cada instância.

SingleThreadModel foidepreciado na API Servlet2.4, deve-se evitar utilizaresse atributo como false.

Page 86: 3way curso-formacao-java-web-completo
Page 87: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

87Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

77

sessionsession = "true|false"

O valor de true (default) indica que a variável predefinida session (do tipo HttpSession) deve estar ligada asessão existente, caso não exista uma sessão, uma nova sessão deve ser criada para ligá-la. O valor false indica quesessões não devem ser usadas.

bufferbuffer = "sizekb|none"

Especifica o tamanho do buffer para o JspWriter out. O buffer padrão é definido pelo servidor.

autoFlushautoFlush = "true|false"

O valor de true (default) indica se o buffer deve ser esvaziado quando estive cheio. O valor false, indica queuma exceção deve ser mostrada quando ocorrer overflows.

errorPageerrorPage = "url"

Especifica que a página JSP deve processar algum Throwables, mas não carregá-lo na página corrente.

isErrorPageisErrorPage = "true|false"

Define se uma página pode atuar como uma página de erro para uma outra página JSP. O default é false.

10.3.2 Diretiva includeA diretiva include permite a inclusão estática de arquivos na hora em que a página JSP é traduzida no

servlet. A inclusão é estática porque não há processamento do arquivo incluído, somente ocorre a cópia do textodo arquivo referenciado no local onde se encontra umas das definições:

<%@include file="relativeURL" %> ou <jsp:directive.include "relativeURL" %>

A Figura 10.1 demonstra o ciclo de processamento da diretiva include:

Figura 10.2 – Processamento da diretiva include – inclusão estática

Page 88: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

88Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

78

O atributo file é mandatório e deve conter uma URL relativa, não contém informação de protocolo,hostname ou porta. A URL deve ser relativa o documento JSP corrente (não usa a / no início do caminho), ourelativa ao document root (começa com a / no caminho). Veja exemplo de uso na Listagem 10.1, a página a.jspinclui a página b.jsp da Listagem 10.2.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html>

<body><%@include file="b.jsp" %><b> Até mais</b>

</body></html>

Listagem 10.1 – a.jsp

<pre><%= System.currentTimeMillis() %>

</pre>

Listagem 10.2 – b.jsp

10.3.3 DeclaraçõesAs declarações são usadas para definir variáveis e métodos específicos

para uma página JSP. Os métodos e variáveis declaradas podem então serreferenciados por outros elementos de criação de scriptlets na mesma página.Pode assumir a seguinte sintaxe - <%! Declaração %>, veja Listagem 10.3:

<%!class Circle {

public Circle(double r){}; }; Circle ca = new Circle(2.0);%><%! int i = 0; %><%! int a, b; double c; %>

Listagem 10.3 – Declaração em JSP, declarado.jsp

O escopo de uma declaração é geralmente o arquivo JSP, mas se forincluído outros arquivos com a diretiva include, o escopo se expande para oescopo do arquivo incluído, isto é, passa a fazer parte de uma única página JSP.

10.3.4 ExpressõesPode conter alguma expressão válida da linguagem de script usada nessa

página, no caso a linguagem é Java, mas sem ponto-e-vírgula.

<%= Expressão %>

Veja exemplos de uso na listagem 10.4,<%= new String() %><%= aux1 + aux2 + aux3 %><%= array[i] %><%= Math.sqrt(2) %>

Listagem 10.4 – expressao.jsp

Você deve declarar umavariável ou um método

antes de usá-la.Toda declaração deve ser

finalizada ou separadapor ponto-e-vírgula.

A expressão Java éavaliada da esquerda

para a direita, convertidaem String e depoisinserida na página.

Page 89: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

89Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

79

Essa avaliação é feita em tempo de execução, quando a página é solicitada, permitindo fácil e rápido acessoa informação que foi requisitada. Por exemplo, uma exibição de data e hora em que a página é acessada.

Para construir uma expressão em JSP você pode colocar entre as tags qualquer expressão definida naEspecificação da Linguagem Java. Ao contrário dos scriptlets (que veremos a seguir), uma expressão não aceitaponto e vírgula e define somente uma expressão da Linguagem.

10.3.5 ScriptletsScriptlets permite inserir trechos de código em Java na página JSP. Uma vez que scriptlets podem conter

qualquer código Java, eles são comumente usados para agregar lógica computacional dentro da página JSP. AListagem 10.5 demonstra o uso.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html>

<body><%

String option;int numberOption = Integer.parseInt(request.getParameter("option"));if (numberOption == 1) {

option = "Compra";} else if (numberOption == 2) {

option = "Venda";} else {

option = "Aluguel";}

%>

<font face="verdana, arial" size=5>Opção Escolhida: <%=option%></font>

</body></html>

Listagem 10.5 – scriptlets.jsp

Quando você escreve um script, você pode usar os objetos implícitosdo JSP ou das classes importadas através da diretiva page, variáveis oumétodos (declarados entre as tags <%! e %>) ou objetos nomeados atravésda tag <jsp:useBean>.

10.3.6 AçõesAções permitem que você execute tarefas sofisticadas como instanciação de objetos, comunicação com

recursos do lado do servidor como Servlets e JSP, sem que para isto seja necessária codificação Java. Entretanto omesmo pode ser obtido usando código Java dentro dos scriptlets como visto anteriormente. Todas as tags de açãosão construídas com a sintaxe XML.

10.3.6.1 <jsp:include>A tag <jsp:include> pode ser utilizada para redirecionar o pedido para qualquer recurso estático ou

dinâmico a partir de uma página JSP principal. Os recursos podem ser desde um servlet, um arquivo HTML etambém outra JSP.

<jsp:include page =”url” flush=”true” />

Lembre-se que em umscript você deve finalizaras expressões através douso de ponto-e-vírgula.

Page 90: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

90Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

80

Veja exemplo da Listagem 10.6:

<html><body bgcolor="white">

<font color="red"><%@ page buffer="5kb" autoFlush="false"%>

<p>A hora corrente retornada por outro JSP:<%@ include file="b.jsp"%>

<p><jsp:include page="/mensagem.html" flush="true"/>pela inclusão da saída do outro JSP:<jsp:include page="b.jsp" flush="true" />

</body></html>

Listagem 10.6 – acaoInclude.jsp

<p>Hora em milesegundos</p>

Listagem 10.7 – mensagem.html

A tag possui dois atributos page e flush. O atributo page informa a URL para onde irá ocorrer a chamada. Oatributo flush serve para informar a página JSP principal que o seu buffer de conteúdo de saída será descarregadoantes de se passar o controle para a página referenciada na tag, permitindo que a página incluída possa adicionarseu conteúdo de saída corretamente. Por esse motivo ele deve sempre ser utilizado com o valor true.

10.3.6.2 <jsp:forward>A tag <jsp:forward> serve para redirecionar pedidos para qualquer JSP, Servlet ou página HTML, dentro do

mesmo contexto o qual a página que disparou a ação se encontra. A página que realiza o desvio tem seuprocessamento finalizado exatamente no ponto onde o redirecionamento acontece embora todo o processamentoaté este ponto ainda aconteça. Se houver dados no buffer de saída colocados por esta página, estes serão apagadosantes do desvio de controle.

<html><%

double freeMem = Runtime.getRuntime().freeMemory();double totlMem = Runtime.getRuntime().totalMemory();double percent = freeMem/totlMem;if (percent < 0.5) {

%>

<jsp:forward page="/a.jsp"/><% } else { %>

<jsp:forward page="mensagem.html"/><% } %>

</html>

Listagem 10.8 – jspForward.jsp

10.3.7 ComentáriosExistem dois tipos principais de comentários que podem ser usados em uma página JSP. Comentário de

Conteúdo: esses comentários são transmitidos de volta para o navegador como parte da resposta de JSP e sãovisíveis na visualização do código da página.

A página principal podeenviar ou não parâmetrospara o recurso incluído, o

qual irá processar opedido retornando o

conteúdo de saída juntocom a saída da página

que realizou a chamada.

Page 91: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

91Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

81

Aqueles familiarizados com HTML percebem que é a mesma sintaxe de comentário para essa linguagem demarcação. Tais comentários não produzem qualquer output visível, mas podem ser visualizados pelo usuário finalatravés do item view source do navegador.

Comentários JSP não são enviados para o cliente e são visíveis apenasnos arquivos fontes JSP originais. O corpo do comentário é ignorado pelocontainer JSP. Os comentários JSP podem assumir duas sintaxes:

<%-- comentário jsp --%>E / OU

<% /* comentário scriptlet */ %>

Esse segundo comentário é introduzido dentro da página através deum scriptlets, usando a sintaxe de comentário nativa da linguagem de criaçãode scripts, no caso Java.

10.4 Objetos implícitosAssim como todo objeto em Java, cada objeto implícito é uma

instância de uma classe ou interface e segue uma API correspondente. Abaixosegue um resumo dos objetos implícitos disponíveis em JSP, suas respectivasclasses/interfaces e uma pequena descrição do objeto.

Objetos implícitos de JSP e suas APIs para aplicações de HTTP.

Objeto Classe ou Interface Descriçãopage java.lang.Object Instância de servlet da página.config javax.servlet.ServletConfig Dados de configuração de servlet.request javax.servlet.http.HttpServletRequest Dados de solicitação, incluindo parâmetros.response javax.servlet.http.HttpServletResponse Dados de resposta.out javax.servlet.jsp.JspWriter Fluxo de saída para conteúdo da página.session javax.servlet.http.HttpSession Dados de sessão específicos de usuário.application javax.servlet.ServletContext Dados compartilhados por todas as páginas

de aplicação.pageContext javax.servlet.jsp.PageContext Dados de contexto para execução da página.exception javax.lang.Throwable Erros não capturados ou exceção.

Tabela 10.2 - Descrição resumida dos objetos implícitos.

10.4.1 pageO objeto page representa a própria página JSP ou, mais especificamente, uma instância da classe de servlet

gerada na tradução da página JSP. O objeto page é do tipo java.lang.Object.Esta variável raramente é utilizada. De fato, uma vez que esta variável é do tipo Object, ela não pode ser

usada diretamente por invocações de servlets.

<%= page.geServletInfo() %> <------- Erro

<%= ((Servlet)page).getServletInfo() %> <------- Ok, typecast

<%= this.geServletInfo() %> <------- OK

Durante a fase decompilação do JSP é

declarado e inicializadonove variáveis comumenteusadas dentro do método_jspService() do servlet

gerado a partir da páginaJSP.

Page 92: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

92Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

82

A primeira expressão dá erro de compilação indicando que getServletInfo() não é um método dejava.lang.Object.

Na segunda há um cast da referencia page para Servlet. Uma vez que page refere-se ao servlet gerado, quepor sua vez implementa a interface Servlet. Perceba que neste caso a variável page pode sofrer casting paraJspPage ou HttpJspPage, porque as duas interfaces são derivadas de Servlet.

A terceira expressão nós usamos a referencia this que é uma instância da servlet gerada.

10.4.2 configO objeto config armazena dados de configuração do servlet, em forma de parâmetros de inicialização para

o servlet de uma página JSP quando compilada. Pelo fato das páginas JSP raramente serem escritas para interagircom parâmetros de inicialização, este objeto implícito raramente é usado na prática.

O objeto config é uma instância da interface javax.servlet.ServletConfig. Veja exemplo:

<web-app ....><display-name>cap9</display-name>

<servlet><description></description><display-name>InitTestServlet</display-name><servlet-name>InitTestServlet</servlet-name><jsp-file>initTeste.jsp</jsp-file><init-param>

<param-name>regiao</param-name><param-value>centro oeste</param-value>

</init-param>

</servlet></web-app>

Listagem 10.9 – web.xml parâmetros de inicialização

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html>

<body> Nome Servlet = <%=config.getServletName()%><br>

Parametro regiao = <%=config.getInitParameter("regiao")%></body>

</html>

Listagem 10.10 – initTeste.jsp recuperando parâmetros de inicialização

10.4.3 request e responseO objeto request e response representa a solicitação e resposta, respectivamente. O objeto request

implementa a interface javax.servlet.http.HttpServletRequest enquanto response implementa a interfacejavax.servlet.http.HttpServletResponse. Esses objetos são passado ao método _jspService() no momento em queum cliente faz uma requisição à página JSP. Este objetos funcionam da mesmo forma que utilizados em servlets, ouseja, analisando a requisição e enviando a resposta:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><html>

<body>Seu IP :<%=request.getRemoteAddr()%><br>Seu Host :<%=request.getRemoteHost()%><br><%

response.setHeader("Expires", "0");response.setHeader("Pragme", "no-cache");

Page 93: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

93Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

83

if (request.getProtocol().equals("HTTP/1.1")) {response.setHeader("Cache-Control", "no-cache");

}%>

</body>

</html>

Listagem 10.11 – RequestResponse.jsp

10.4.4 Objeto outEste objeto implícito representa o fluxo de saída para a página, cujo conteúdo será enviado para o

navegador com o corpo de sua resposta. O objeto out é uma instância da classe javax.servlet.jsp.JspWriter. Esseobjeto implementa todos os métodos print() e println() definidos por java.io.Writer.

Por exemplo, o objeto out pode ser usado dentro de um script para adicionar conteúdo à página gerada.Veja o listagem 10.12 abaixo.

<%int i = (int) (Math.random() * 10);if (i % 2 == 0) {

out.print("O Número escolhido " + i + " é par!");} else {

out.print("O Número escolhido " + i + " é impar!");}

%>

Listagem 10.12 – imprime.jsp

Esse objeto é muito utilizado para gerar conteúdo dentro do corpo de um script, sem ter que fechá-lotemporariamente para inserir conteúdo de página estático. Contudo, deve-se evitar usar os métodos print() ouprintln() para inserir cadeias de caracteres muito grandes, é aconselhável fechar o script e inserir o conteúdoestático.

10.4.6 sessionEste objeto representa a sessão atual de um usuário individual. Todas as

solicitações feitas por um usuário são consideradas parte de uma sessão. Desde quenovas solicitações por aqueles usuários continuem a ser recebidas pelo servidor, asessão persiste. Se, no entanto, um certo período de tempo passar sem que qualquernova solicitação do usuário seja recebida, a sessão expira. O objeto session armazenainformações a respeito da sessão.

O objeto session é uma instância de javax.servlet.http.HttpSession, funcionada mesma maneira que vimos em servlets. Uma sessão só estará ativa se existir adiretiva :

<%@ page session=”true” %>

10.4.7 applicationEste objeto representa a aplicação à qual a página JSP pertence. Ele é uma

instância da interface javax.servlet.ServletContext. Os containers JSP tipicamentetratam do primeiro nome de diretório em uma URL como o nome de uma aplicação.

10.4.8 pageContextO objeto pageContext fornece várias facilidades como gerenciamento de

sessões, atributos, páginas de erro, inclusões e encaminhamento de requisições defluxo de resposta. O objeto pageContext é uma instância da classejavax.servlet.jsp.PageContext.

Um dos principaisusos para o objeto

session é armazenare recuperar valores

de atributos, a fim detransmitir asinformações

específicas deusuários entre as

páginas.

Page 94: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

94Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

84

10.4.9 ExceptionO objeto exception não está automaticamente disponível em todas as páginas JSP. Este objeto está

disponível apenas nas páginas que tenham sido designadas como páginas de erro, usando o atributo isErrorPageconfigurado como true na diretiva page.

<%@ page isErroPage=”true” %>

O objeto exception é uma instância da classe java.lang.Throwable correspondente à exceção não tratadaou repassada que fez com que o controle fosse transferido para a página de erro.

<%@ page isErrorPage="true"%><h1>Erro Encontrado</h1>O seguinte erro foi encontrado:<br><b><%=exception.toString() %></b><br><%

exception.printStackTrace();%>

Listagem 10.13 – excecao.jsp

10.5 JavaBeansJavaBeans são classes Java reutilizáveis que seguem algumas regras bem definidas para nomeação de seus

métodos e variáveis. Embora a definição exata de JavaBeans fuja ao escopo desse material, para efeitos de uso douso dessas classes em páginas JSP, é necessário que se siga algumas regras básicas no seu desenvolvimento:

1. O construtor da classe, se declarado, não deve receber nenhum argumento.2. Podem existir um ou mais métodos públicos para a definição de valores de propriedades do Bean; esses

métodos são chamados de métodos setter.3. Podem existir um ou mais métodos públicos para a obtenção de valores de propriedades do Bean; esses

métodos são chamados de métodos getter.

Temos, a seguir, uma exemplo de classe JavaBean, listagem 10.14:

package apostila.cap9;

public class Alguem {private String nome;private byte idade;private String hobies[];private boolean brasileiro;

// construtor padrãopublic Alguem() {}

// getter métodospublic String getNome() {

return nome;}

A idéia por trás douso de JavaBeans emnossas páginas JSP, éque eles encapsulem

a lógica de nossaaplicação,

separando-a dorestante da página.

Page 95: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

95Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

85

public byte getIdade() {return idade;

}

public String[] getHobies() {return hobies;

}

public boolean isBrasileiro() {return brasileiro;

}

// setter métodospublic void setNome(String nome) {

this.nome = nome;}

public void setIdade(byte idade) {this.idade = idade;

}

public void setHobies(String[] hobies) {this.hobies = hobies;

}

public void setBrasileiro(boolean brasileiro) {this.brasileiro = brasileiro;

}

}

Listagem 10.14 – Alguem.java

10.5.1 <jsp:useBean>A tag <jsp:useBean> te permite acessar métodos de um JavaBean em sua página JSP. A tag vem em duas

formas:

<jsp:useBean id="varBean" class="package.beanClasse" scope="page">//algum html ou JSP aqui

</jsp:useBean>

ou

<jsp:useBean id="varBean" class="package.beanClasse"scope="page" />

O atributo id especifica qual o nome da instância do bean dentro da aplicação.O atributo scope possui um dos valores de escopo já vistos anteriormente: page,request, session ou application. E por último o atributo class que define o nome daclasse a qual o bean será instanciado.

Sope determina quanto tempo o objeto irá existir como variável de programa.Para que um bean possa ser instanciado não poderá existir objetos anteriores commesmo identificador em id e scope, caso contrário, se já existir uma instância para oobjeto esta será usada.

O atributo scope éopcional, porém nãodeve ser ignorado.

Ele tem a função dedeterminar o tempo

de vida de umcomponente

JavaBean em umapágina JSP.

Page 96: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

96Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

86

10.5.2 <jsp:setProperty>A tag <jsp:setProperty> é utilizada para configurar valores das propriedades dos componentes JavaBeans

em uma página JSP. Existem quatro formatos para a utilização desta tag.

Sintaxe Descrição

<jsp:setProperty name=”nomeBean”property=”nomePropriedade” />

Usando este formato a propriedade especificada serásetada com o valor que será passado comoparâmetro no pedido HTTP(request).

<jsp:setProperty name=”nomeBean” property=”*” />

Usando esta forma cada parâmetro enviado nopedido HTTP request será avaliado a fim de seencontrar um método correspondente combinandocom seu nome, caso isto aconteça o método set éinvocado com o valor do parâmetro recebido nopedido HTTP.

<jsp:setProperty name=”nomeBean”property=”nomePropriedade”param=“nomeParametro” />

Usando esta forma a propriedade do bean seráconfigurada com o valor do parâmetro do pedidoespecificado na tag, invocando-se o método setapropriado com o valor do parâmetro comoargumento.

<jsp:setProperty property=”nomePropriedade”value=“String|<%= ... %>” />

Usando esta forma o valor especificado seráatribuído a propriedade do bean em questão. Estevalor poderá ser uma cadeia de caracteres ou atémesmo o resultado de uma expressão JSP (<%= ...%>).

Tabela 10.3 – formas possíveis para <jsp:setProperty>

10.5.3 <jsp:getProperty>A tag <jsp:getProperty> é utilizada para recuperar valores de uma propriedade de um componente

JavaBean, converte o valor recuperado em uma cadeia de caracteres (String) e insere no conteúdo de saída. Os doisatributos necessários para esta tag são o nome do Bean (propriedade name) já referenciado anteriormente na tag<jsp:useBean>, e o que indica a propriedade (property) que se deseja recuperar o valor. O atributo property devepossuir um método getXXX() correspondente no Bean.

<jsp:getProperty name=”nomeBean” property=”nomePropriedade” />

10.5.4 Usando JavaBeans com Ações JSPVeja um exemplo de como utilizar o que foi dito até aqui sobre manipulação de JavaBeans com JSP. A

Listagem 10.15 apresenta um formulário HTML contendo objetos caixa de texto, checkbox e radio, todos oscomponentes de entrada de dados no formulário são nomeados (atributo name) com os mesmos nomes dados aoscampos do JavaBean. Reveja a Listagem 10.14, observe os nomes dos atributos e os métodos setter e getter.

Page 97: 3way curso-formacao-java-web-completo

Siga-nos também no Twitter!twitter.com/3waynet

Page 98: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

98Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

87

<html><body>Favor preencha com seus dados:<br>

<form action="trataFormAlguem.jsp"> Nome: <input type="text" name="nome"><br> Idade: <input type="text" name="idade"><br> Hobbies: <br>

<input type="checkbox" name="hobbies" value="truco">Truco<br><input type="checkbox" name="hobbies" value="peteca">Peteca<br><input type="checkbox" name="hobbies" value="garrafao">Garrafão<br>

É Brasuca:<input type="radio" name="brasileiro" value="true"><br><input type="submit"><br>

</form></body>

</html>

Listagem 10.15 – formAlguem.html, formulário de submissão

Na Listagem 10.16 fazemos o tratamento dos dados submetidos pelo formulário HTML formAlguem.html. Nalinha (2) declaramos um bean do tipo apostila.cap10.Alguem no escopo da sessão. Veja na linha (4) que toda asoperação necessárias para atribuir os dados capturados do formulário formAlguem.html será processado por umaúnica ação JSP <jsp:setProperty>, essa ação vinculará cada campo do formulário HTML ao respectivo atributo dobean Alguem pela invocação dos métodos setXXX() definidos na classe Alguem. O compilador JSP é responsávelpela conversão dos dados vindos do formulário para o bean.

<%@page session="true"%><jsp:useBean id="umCara" class="apostila.cap9.Alguem" scope="session" /><%-- configura propriedades do bean --%><jsp:setProperty name="umCara" property="*" /><html>

<body>Esse cara tem o seguinte perfil:<br>Nome: <jsp:getProperty name="umCara" property="nome" /><br>idade: <jsp:getProperty name="umCara" property="idade" /><br>É brasuca: <jsp:getProperty name="umCara" property="brasileiro" /><br>hobbies:<br><% String hb[] = umCara.getHobbies();

if (hb != null)for (int i = 0; i < hb.length; i++)

out.print(i + " - " + hb[i]);%>

</body></html>

Listagem 10.16 – trataFormAlguem.jsp, configura e imprime dados do bean Alguém

10.6 Componentes Web ReutilizáveisNo mundo JSP re-usar componentes web significa essencialmente que você vai incluir o conteúdo ou o

resultado do processamento de outro componente web na página JSP. Isto pode ser feito de duas maneiras:estática ou dinâmica. Inclusão estática envolve incluir o conteúdo do componente web no arquivo JSP no momentoem que o arquivo JSP está sendo traduzido, enquanto na inclusão dinâmica a saída gerada por outro componente éincluída juntamente como a saída da página JSP que recebe a requisição.

10.6.1 Fragmentos JSPUm fragmento de página é a parte de uma página, como o cabeçalho, o rodapé ou a barra de navegação,

que pode ser reutilizada em outras páginas. Por exemplo, você pode colocar um elemento comum, como um

Page 99: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

99Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

88

gráfico ou um campo Pesquisa, em um fragmento de página e inclui-lo como um cabeçalho em todas as páginas doaplicativo. Você pode também incluir o nome da sua companhia e informações sobre direitos autorais em umfragmento de página e usar tal fragmento como o rodapé do seu aplicativo. Assim como a página principal, ofragmento de página é uma página JSP com seu próprio Bean de página associado. Entretanto, a extensão dearquivo de um fragmento de página normalmente será algo como jspf em vez de jsp (isto é só uma convenção –mas também evita o processamento dos fragmentos).

10.6.2 Diretiva includeConforme visto em 10.3.2, a diretiva <@ include file=”URL”> nos permite fazer inclusão estática de

fragmento de código. Uma vez que o código da página JSP incluída torna-se uma parte da página JSP que inclui,cada página incluída pode acessar as variáveis e métodos definidos na outra página. Elas também compartilhamtodos os objetos implícitos, como mostra a Listagem 10.17.

<html><body>

<%//Pega um criterio de classificacao a partir do request.

String criterio = request.getParameter("criterio");//Busca produtos na base de dados e recupera seu ID.

String productId[] = getProdutos(criterio);%>

O seguintes produtos foram encontrados pelo criterio de comparação:<br><!--

Deixa para descricaoProduto.jsp a geracao da descricao para cada produto

--><%@ include file="descricaoProduto.jsp" %>

Nova busca<!--

FORMULARIO para outra consulta--><form>...</form>

</body></html>

Listagem 10.17 – buscaProduto.jsp

Na Listagem 10.17, o arquivo buscaProduto.jsp processa a busca pelo critério informado pelo usuários eretorna os produtos da base de dados. Ele inclui o arquivo descricaoProduto.jspf para gerar a descrição. O códigopara buscaDescricao.jsp é mostrado na Listagem 10.18.

<%// A variavel implicita request usada aqui// pertence à página incluída

String ordenaPor = request.getParameter("ordenadoPor");

// Usa o array produtoId definido por buscaProduto.jsp// para classificar e gerar a descrição do produtoprodutoId = sort(produtoId, ordenaPor);for(int i=0; i<produtoId.length; i++){

// Gera uma descrição tabulada para os produtos }%>

Listagem 10.18 – buscaDescricao.jsp

Page 100: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

100Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

89

Quando uma diretiva include inclui um arquivo as seguintes regras devemser observadas:

- Nenhum processamento pode ser feito em tempo de tradução, assim ovalor do atributo file não pode ser uma expressão. O seguinte uso deinclude é invalido:

<% String umaURL ="copyright.html"; %><%@ include file="<%= umaURL %>" %>

- Como parâmetros de requisição são propriedades da requisição e nãotêm qualquer significado em tempo de tradução, o atributo file não podepassar quaisquer parâmetros à página incluída. Desta forma o valor doatributo file no seguinte exemplo é inválido:

<%@ include file="outro.jsp?abc=pqr" %>

- A página incluída pode ou não ser compilada independentemente. Seobservar a Listagem 10.18, o arquivo buscaDescricao.jsp não pode sercompilado, uma vez que ele não define a variável produtoID. Em geral, émelhor evitar estas dependências e usar uma variável implícitapageContext para compartilhar objetos entre as páginas incluídasestaticamente pelo uso dos métodos pageContext.setAttribuet() epageContext.getAttribute().

10.6.3 Ação <jsp:include>

Figura 10.3 – Inclusão dinâmica

O elemento jsp:include é processado quando uma página JSP é executada. A ação include permite quevocê inclua um recurso estático ou um recurso dinâmico em um arquivo JSP. Os resultados entre a inclusão de

A ação jsp:include ésimplesmente uma

diretiva includediferente. A vantagemda jsp:include é que elasempre irá verificar pormudanças no arquivo

incluído.

Page 101: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

101Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

90

recurso estático ou dinâmico são ligeiramente diferente. Se o recurso é estático seu conteúdo é inserido nainvocação do arquivo JSP. Se o recurso é dinâmico a requisição é enviada para o recurso incluído, a página incluída éexecutada e então o resultado é incluído na resposta da página JSP includente. A Figura 10.2 demonstra ofuncionamento da ação padrão jsp:include.

A ação jsp:include nos fornece em JSP o que no Servlet é obtido com a invocação do métodoRequestDispatcher.include(ServletRequest,ServletResponse).

10.6.4 Ação <jsp:param>Você pode passar parâmetros para componentes incluídos dinamicamente usando a tag <jsp:param/>. O

seguinte exemplo ilustra o uso da tag <jsp:param> para passar dois parâmetros para página incluída:

<jsp:include page="alguma.jsp"><jsp:param name="nome1" value="valor1" /><jsp:param name="nome2" value="valor2" />

</jsp:include>

Pode haver qualquer número de elementos <jsp:param> aninhados com <jsp:include> ou <jsp:forward>. Ovalor do atributo value também pode ser especificados usando expressões em tempo-de-execução da seguintemaneira:

<jsp:include page="alguma.jsp"><jsp:param name="nome1" value="valor1" /><jsp:param name="nome2" value="valor2" />

</jsp:include>

10.8.5 Ação <jsp:foward>A ação <jsp:forward> realiza um encaminhamento da requisição para outro recurso web da mesma forma

que no Servlet, podemos utilizar RequestDisptcher.forward(ServletResquest,ServletResponse). A Figura 10.3demonstra o processamento da ação forward.

Figura 10.4 – Encaminhamento a partir do JSP

Page 102: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

102Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

91

11 Expression Language

11.1 O que é ELA Unified Expression Language (EL), ou simplesmente EL, foi adicionada na especificação JSP 2.0 para

diminuir os problemas na interação entre JavaServer Pages (JSP) EL com JavaServer Faces (JSF) EL.A sintaxe e o alcance da linguagem são bem simples. Apesar da EL se parecer bastante com Java ela se

comporta de forma diferente. Você vai perceber tais diferenças assim que começar a usar o operador [ ]. Vocêencontrará coisas que não funcionariam em Java mas que funcionam com EL e vice-versa.

11.2 Sintaxe de ELA melhor maneira de compreendermos as expressões EL é

compara-las com expressões em scripts JSP. Por exemplo, se você quiserimprimir o valor de uma variável temperatura na sua página você o fariautilizando expressão JSP como se segue:

Temperatura externa é de <%= temperatura%> graus.

ou, você pode usar EL

Temperatura externa é de ${temperatura} graus.

Agora image que tivesse usando uma ação <jsp:useBean> pararetornar o estado de objeto tempo. Clima que mantenha a informaçãoda temperatura, então você usaria a seguinte sentença usando açõesJSP:

<jsp:useBean id="c" class="tempo.Clima" scope="session" />Temperatura externa é de <jsp:getProperty name="c" property="temperatura"/> graus

ou, você pode usar EL

<jsp:useBean id="c" class="tempo.Clima" scope="session" />Temperatura externa é de ${temperatura} graus.

Você pode usar uma expressão EL em um atributo de uma tag que aceite expressões:

- Associada a uma só expressão:<qualquer:tag value="${expr}"/>A expressão é avaliada e o resultado é convertido para o tipo esperado como valor do atributo.

- Intercalando texto com várias expressões:<qualquer:tag value="algum${expr}${expr}texto${expr}"/>As expressões são avaliadas da esquerda para a direita. Cada expressão é convertida para umastring e ligada com o texto. A string final é convertida para o tipo esperado pelo atributo.

- Somente texto:<qualquer:tag value="algumtexto"/>A string é convertida no tipo esperado pelo atributo.

A Expression Language ofereceuma sintaxe para definirexpressões que pode ser

utilizada em texto estático oucomo valor de qualquer atributo

de uma tag que aceite umaexpressão JSP.

Page 103: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

103Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

92

Veja outras equivalências da EL na Listagem 11.1:

${produto}

equivale a:

<%= pageContext.findAttribute(“produto") %>

que por sua vez equivale a:

<jsp:useBean id="produto"type="algumPackage.algumaClass" scope="..."><%= produto %>

Listagem 11.1 – Exemplo equivalência EL

11.2.1 Literais e OperadoresA EL define os seguintes literais:

Boolean: true e falseInteger: como em JavaString: com aspas simples ou duplas; aspas duplas (“) é escapadacom \” e aspas simples (') é escapada com \' e \ é escapada com\\Null: null

Se você precisar utilizar uma expressão literal que inclua oscaracteres ${}, reservados pela sintaxe EL, você precisa escapar estes caracteres como segue:

- Criando um expressão composta como em: ${'${'}exprA}- Ou o caractere de escape \ pode ser usado para evitar a avaliação de uma expressão: \${exprA}

Em termos de operadores, na EL estão disponíveis os mesmos operadores e com as mesmas precedênciasque se utilizam em Java. Foram acrescentados seu congêneres:

Aritméticos: +, - (binario), *, / e div, % e mod, - (unário)Lógicos: and ou &&, or ou ||, not ou !Relacional: == ou eq, != ou ne, < ou lt , > ou gt, <= ou ge, >= ou leVazio: empty , operação prefixada para determinar se um valor é null ou emptyCondicional: A ? B : C, como em Java.

Exemplos:

Expressão EL Resultado

${1 > (4/2)} false

${4.0 >= 3} true

${100.0 == 100} true

${(10*10) ne 100} false

${'a' < 'b'} true

Toda expressão deve começarcom ${expr} ou #{expr}, a

primeira forma é definida comosendo de avaliação imediata

utilizada com scripts em JSP, asegunda forma é definida como

de avaliação atrasada, poissofrerá avaliação em outras

fase do ciclo de vida da página,ela é utilizada em JSF (ou outra

tecnologia similar).

Page 104: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

104Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

93

${'hip' gt 'hit'} false

${4 > 3} true

${1.2E4 + 1.4} 12001.4

${3 div 4} 0.75

${10 mod 4} 2

${!empty param.Add} True se o parâmetro Add for null ou uma String vazia

11.2.2 VariáveisA EL é SOMENTE LEITURA, uma expressão como ${produto.nome=”algumacoisa”} não é válida. Na EL as

seguintes variáveis podem ser referenciadas:

Componentes JavaBeansCollectionsTipos EnumeradosObjetos Implícitos

11.2.3 Navegação em variáveisPara usar variáveis com EL você pode usar operadores combinados. Usamos operadores para acessar

coleções ou propriedades. Os operadores de acesso a propriedades permitem acesso aos membros de objetos,enquanto os operadores de coleções retornam elementos de Map, List ou Array.

Na EL estes operadores são descritos por:

a.b – retorna a propriedade de a associada com identificador b.a[b] – retorna o valor de a associado com a chave ou índice b.

11.2.3.1 Operador ponto (.)Este operador possui algumas restrições de uso. O literal à esquerda do ponto (.) , deve ser um Map ou um

JavaBean. O segundo literal, à direita de ponto (.), deve ser uma propriedade do bean ou uma chave do Map e deveobedecer aos padrão de nomenclatura de variáveis em Java (não iniciar com número, etc…). Veja exemplo:

${pessoa.nome} //atributo do bean pessoa invoca getNome()${map.chave} //chave do map${requestScope.pessoa.nome}//atributo do objeto no escopo request${pessoa.1} // não funciona pois não obedece o padrão de nomenclatura Java

11.2.3.2 operador [ ]Este operador é mais poderoso e flexível. O literal à esquerda de [] também pode ser um List ou um array

de qualquer tipo. A variável à esquerda pode ser um número ou ainda qualquer valor que não respeite as regras denomenclatura do Java. Veja exemplos do operador []:

${pessoa["nome"]} mesmo que ${pessoa.nome}

${map["chave"]} mesmo que ${map.chave}

${map["br.com.servlet"]} // agora funciona

${minhaLista["1"]} // agora funciona, porém…

11.2.4 Navagação em Arrays e ListasQuando a variável for um array ou lista, tudo que se coloca dentro do [] é convertido para um inteiro, ou

seja, a chave ou índice deve ser um literal numérico, exemplo:

Page 105: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

105Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

94

${minhaLista["0"]}${minhaLista['0']}${minhaLista[0]}

Algo como, ${minhaLista["posicaoDois"]} não será aceito pelo contêiner, ele não converterá a chave“posicaoDois” para um inteiro e lançará uma exceção.

11.2.5 Navegação em MapasSe o literal na expressão EL for um Map, o contêiner buscará em todos os escopos um atributo com o nome

especificado para variável e retornará o valor associado à chave colocada dentro dos [] e cercada por “” ou ''

${meuMap["chave"]}${meuMap['chave']}

Observe a próxima expressão, ${meuMap[chave]} perceba que nesta expressão EL o literal da chave dentrodos colchetes não está cercado por “”. Supondo que a seguinte declaração tenha ocorrido dentro da página,

<% request.setAttribute(”chave”, “minhaChave”)%>${meuMap[chave]}

a última expressão EL será traduzida para ${meuMap["minhaChave"]}.

<%@page import="java.util.HashMap"%><%

HashMap pessoa= new HashMap();pessoa.put("nome","river");pessoa.put("idade",24);request.setAttribute("pessoa",pessoa);request.setAttribute("chave","idade");

%>${pessoa["nome"]}${pessoa[chave]}

Listagem 11.2 – Iterando sobre Mapas com EL

11.2.6 Objetos implícitosEm EL, os objetos implícitos que estão disponíveis na JSP surgem através de expressões com recurso a:

Nome Descrição

param Um Map contendo os parâmetros ( String ) da requisição.

paramValues Um Map contendo os parâmetros ( String[] ) da requisição

header Um Map contendo os cabeçalhos ( String ) da requisição.

headerValues Um Map contendo os cabeçalhos ( String[] ) da requisição

cookie Um Map contendo os campos de um Cookie como um objeto simples

initParam Um Map contendo os parâmetros de inicialização do contexto

pageScope Um Map contendo os atributos do escopo da página ( page )

requestScope Um Map contendo os atributos do escopo da requisição ( request )

sessionScope Um Map contendo os atributos do escopo da sessão ( session )

applicationScope Um Map contendo os atributos do escopo do contexto ( application )

Page 106: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

106Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

95

Veja os seguintes exemplos:

<%-- declara variavel --%><%

String vars[] = { "JSP", "JSTL", "Servlet", "JSF" };//variáveis na EL devem estar em pageContext ou session ou requestsession.setAttribute("vars", vars);

%><%-- cria form --%><html>

<body><form action="ELObjetosImplicitos.jsp">

Informe um parametro:<input type="text" name="foo"><br>Multiplos:<input type="checkbox" name="tecno" value="${vars['0']}"

checked="checked">${vars[0]}</input><br><input type="checkbox" name="tecno" value="${vars['1']}"

checked="checked">${vars['1']}</input><br><input type="checkbox" name="tecno" value="${vars['2']}"

checked="checked">${vars["2"]}</input><br><input type="checkbox" name="tecno" value="${vars['3']}"

checked="checked">${vars["3"]}</input><br><input type="submit">

</form>

<%-- imprime variaveis implicitas --%>\${param.foo} => ${param.foo}<br>\${param["foo"]} => ${param["foo"]}<br>\${param['foo']} => ${param['foo']}<br>\${paramValues.tecno[0]} => ${paramValues.tecno[0]}<br>\${paramValues.tecno["1"]} => ${paramValues.tecno["1"]}<br>\${paramValues.tecno['2']} => ${paramValues.tecno['2']}<br>\${paramValues.tecno['3']} => ${paramValues.tecno['3']}<br>\${header["host"]} => ${header["host"]}<br>\${header["accept"]} => ${header["accept"]}<br>\${header["user-agent"]} => ${header["user-agent"]}<br>

</body></html>

Listagem 11.3 – ELObjetosImplicitos.jsp

11.3 Habilitando e Desabilitando EL e scriptletsO padrão ${} não é símbolo reservado na especificação anterior a JSP 2.0, portanto pode haver aplicações em

que este símbolo possa utilizados com outro intuito. A fim de prevenir a avaliação destes padrões dentro de umapágina você tem três opções:

Page 107: 3way curso-formacao-java-web-completo
Page 108: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

108Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

96

1. Escapar o caracteres ${} :\${expr}

2. Configurar sua aplicação (web.xml) com o grupo de propriedade JSP:

<jsp-config>

<jsp-property-group>

<url-pattern>*.jsp</url-pattern>

<el-ignored>false</el-ignored>

</jsp-property-group>

</jsp-config>

3. Configurar a página com diretiva page:

<%@ page isELIgnored=”true” %>

12 JavaServer Pages Standard Tag Library ( JSTL )

12.1 O que é JSTLJSTL significa JSP Standard Tag Library e consiste essencialmente, num conjunto de tags, que oferecem

controle sobre o processamento das páginas sem aumento de complexidade.Permitem substituir os scriptlets e assim estimular a separação entre apresentação e lógica, resultando

num investimento significativo no sentido de conseguir seguir o modelo MVC.

12.2 Instalação da JSTLPara instalar a JSTL você precisa:- Fazer o download da última versão do site da Sun ou outro fornecedor .- Se você tiver os exemplos do Tomcat instalado, procure pelo arquivo jstl.jare standard.jar, dentro do diretório ../webapps/jsp-exemplos/WEB-INF/lib- Copiar os JARs das bibliotecas desejadas para o diretório WEB-INF/lib/ dasua aplicação Web e os arquivos TLD para o diretório WEB-INF/- Declarar cada taglib e associá-la com seu TLD no deployment descriptorweb.xml.- Incluir em cada página que usa as marcas:

<%@ taglib uri="uri_da_taglib" prefix="prefixo" %>

- Usar as marcas da biblioteca com o prefixo definido no passo anterior

<prefixo:nomeTag atributo="...">...</prefixo:nomeTag>

12.3 Como usar JSTL em uma página JSPO prefixo definido para utilização da tag pode ter qualquer valor mas no caso da taglib core da jstl a

convenção é o padrão da letra c. Já a URI (que não deve ser decorada) é mostrada a seguir e não implica em umarequisição pelo protocolo http, mas sim um nome a ser utilizado numa busca entre os arquivos descritores de tags(TDL). A URI está para a tag, nos arquivos tlds, assim como <servlet-name> está para um servlet, no arquivoweb.xml.

As uri's sofremvariações de acordocom a a versão da

biblioteca em relação àespecificação JSTLimplementada pelo

contêiner web.

Page 109: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

109Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

97

Existem cinco bibliotecas de tags JSTL (versão 1.1), para incluir uma taglib em sua aplicação proceda como:

Core library: tags para condicionais, iterações, urls, ...:<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" />Exemplo:<c:if test="..." ... >...</c:if>

XML library: tags para processamento XML:<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" />Exemplo:<x:parse>...</x:parse>

Internationalization library I18N:<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"/>Exemplo:<fmt:message key="..." />

SQL library: manipular banco de dados<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"/>Exemplo:<sql:update>...</sql:update>

Fuctions: Manipulação de string e<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"/>Exemplo:<sql:update>...</sql:update>

12.4 Biblioteca CoreA lista completa das tags da versão 1.1 da JSTL core pode ser facilmente compreendida:

Tag Descrição

c:catch bloco do tipo try/catch

c:choose bloco do tipo switch

c:forEach um for para iterar sobre coleções

c:forTokens for em tokens (ex: “a,b,c” separados por vírgula)

c:if if

c:import import

c:otherwise default do switch

c:out saída

c:param parâmetro

Sempre que formosutilizar uma taglibdevemos primeiro

escrever um cabeçalhoatravés de uma tag jspque define qual taglib

iremos utilizar edefinimos um nome

para o mesmo, ochamado prefixo.

Page 110: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

110Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

98

c:redirect redirecionamento

c:remove remoção de variável

c:set criação de variável

c:url veja adiante

c:when teste para o switch

Tabela 12.1 – Tags JSTL Core

12.4.1 Suporte a variáveis - c:set e c:removeO conjunto de tags que permite configura valores de variáveis EL ou propriedades de uma variável EL em

qualquer scope JSP (page, request, session ou application). Se a variável não existir ela é criada.A variável EL ou propriedade pode receber valor através do atributo value:

<c:set var=”num” scope=”session” value=”${4*5}”/>

ou dentro do corpo da tag:

<c:set var=”num” scope=”session” > ${8*2}<c:set/>

Para configurar propriedades de um JavaBean ou um java.util.Map,mas só isso, você não pode usá-lo para adicionar elementos em uma listaou em arrays. Você deve usar o atributo target ao invés de var, quandoestiver configurando um JavaBean ou um Map veja como:

<c:set target=”${carrinho}” property=”items”value=”${lista}” />

A tag <c:remove> é usada para remover uma variável de seu escopo.O atributo var tem que ser um literal String não pode ser uma expressão.Veja um simples exemplo:

<c:remove var=”num” scope=”session”/>

Veja Listagem 12.1:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<jsp:useBean id="contato" class="apostila.cap11.Contato" scope="session"/>

<c:set var="variavel" value="uma valor para variavel" scope="page"/>

<c:set target="${contato}" property="nome" value="propriedade do bean" /><html>Uma variável => ${variavel}<br>Uma propriedade de bean => ${contato.nome}<br>

<c:remove var="contato" scope="session"/>

Ainda tem Uma variavel => ${variavel}<br>

Na tag <c:set> o atributotarget, ao contrário do que

possa pareçer, NÃO recebe umliteral String com o id do

<jsp:useBean>. Diferentementede <jsp:setProperty> o atributotarget necessita da referênciado objeto bean, isto significa

que você deve usar umaexpressão EL (${idBean}) ou

uma expressão descript(<%=idBean %>) ou uma

ação <jsp:attribute>.

Page 111: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

111Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

99

Não tem mais bean => ${contato.nome}<br></html>

Listagem 12.1 – VariaveisJSTL.jsp Usando <c:set> e <c:remove>

12.4.2 Controle de Fluxo12.4.2.1 Condicional <c:if>,<c:choose>

Você pode usar a tag <c:if> para construir expressões condicionais simples. Por exemplo:

<c:if test="${empty param.nome}">Voce nao preencheu o campo nome.

</c:if>

A tag <c:if> tem uma condição e um “bloco” de código (qualquer coisa aceitável em JSP). Caso a condiçãoda tag seja satisfeita o “bloco” de código é executado. A Listagem 12.2 demonstra o uso <c:if>.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><html>

<c:if test="${empty param.nome}"><form action="IfJSTL.jsp"> Nome: <input name="nome"/> <input type="submit"/></form>

</c:if><c:if test="${not empty param.nome}">

Você preencheu ${param.nome}.</c:if>

</html>

Listagem 12.2 – IfJSTL.jsp

A tag <c:choose> e suas parceiras <c:when> e <c:otherwise>,funcionam como uma estrutura if/else, permitindo contornar alimitação da tag <c:if>.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c"%>

<html>

<c:if test="${empty param.userpref}">

<form action="ChooseJSTL.jsp">

Preferencia:

<select name="userpref">

<optgroup label="Carros Suecos">

<option value="volvo">Volvo</option>

<option value="saab">Saab</option>

</optgroup>

<optgroup label="Carros Germanicos">

<option value="mercedes">Mercedes</option>

<option value="audi">Audi</option>

</optgroup>

</select> <input type="submit" /></form>

</c:if>

Se existe <c:if> logo existe a tag<c:else>, certo?

ERRADO, essa tag não existe naJSTL Core.

Page 112: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

112Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

100

<c:choose>

<c:when test="${param.userpref eq 'volvo'}">

A Volvo é uma empresa sueca fundada em 1927

</c:when>

<c:when test="${param.userpref eq 'saab'}">

Saab Automobile AB é uma subsidiária da General Motors.

</c:when>

<c:when test="${param.userpref eq 'mercedes'}">

A Mercedes-Benz é uma marca alemã de automóveis pertencente ao grupo

Daimler AG criada em 1924.

</c:when>

<c:when test="${param.userpref eq 'audi'}">

As quatro argolas unidas representam as marcas alemãs que formaram a AutoUnion,

fundada em 1947.

</c:when>

<c:otherwise>

Escolha um dos veículos da lista.

</c:otherwise>

</c:choose>

</html>

Listagem 12.3 – ChooseJSTL.jsp

12.4.2.4 Iteradores <c:forEach> e <c:forTokens>A tag <c:forEach> é capaz de iterar por uma coleção. O exemplo a seguir mostra o uso de expression

language de uma maneira mais limpa que o script JSP.

Script JSP:

<%

// ...

List contatos = lstContatos.getLista();

for (int i = 0; i < contatos.size(); i++ ) {

Contato contato = (Contato) contatos.get(i);

%>

<li>

<%=contato.getNome()%>,

<%=contato.getEmail()%>:

<%=contato.getEndereco()%>

</li>

<%

}

%>

Page 113: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

113Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

101

Tag <c:forEach>:

<c:forEach var="contato" items="${lstContatos.lista}">

<li>${contato.nome}, ${contato.email}: ${contato.endereco}</li></c:forEach>

Também é possível criar um contador do tipo int no corpo da tag <c:forEach>. Para isso basta definir oatributo chamado varStatus para a variável desejada e utilizar a propriedade count dessa variável.

<c:forEach var="contato" items="${dao.lista}" varStatus="id">

<li>${id.count} é ${contato.nome}</li>

</c:forEach>

Veja Listagem 12.4, exemplo de uso da tag <c:forEach>:

<%@ page language="java" contentType="text/html" %>

<%@ page import="java.util.*" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%

// Criar um ArrayList com dados de teste

ArrayList list = new ArrayList();

Map autor1 = new HashMap();

autor1.put("nome", "Austragesilo");

autor1.put("id", new Integer(1));

list.add(autor1);

Map autor2 = new HashMap();

autor2.put("nome", "Bismark");

autor2.put("id", new Integer(2));

list.add(autor2);

Map autor3 = new HashMap();

autor3.put("nome", "Caipora");

autor3.put("id", new Integer(3));

list.add(autor3);

pageContext.setAttribute("autores", list);

%>

<html>

<head>

<title>Resultado da Busca: Autores</title>

</head>

<body bgcolor="white">

Aqui todos os autores que casam com critério de busca:

<table>

<TH>nome</th>

<TH>Id</th>

Page 114: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

114Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

102

<c:forEach items="${autores}" var="current">

<tr>

<td><c:out value="${current.nome}" /><td>

<td><c:out value="${current.id}" /><td>

</tr>

</c:forEach>

</table>

</body>

</html>

Listagem 12.4 – ForEachJSTL.jsp

Na tag <c:forTokens> o atributo items é uma String constituída por tokens separados por algumdelimitador. Se você imaginar uma String como um coleção de substrings é possível notar a semelhança com<c:forEach>. Veja Listagem 12.5.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set var="nomes" value="A:B;C|D" scope="page" />

<html>

<head>

<title>JSTL forTokens</title>

</head>

<body>

<c:forTokens items="${pageScope.nomes}"

delims=":;|"

var="nomeAtual"

varStatus="status" >

Membro família #<c:out value="${status.count}" /> is

<c:out value="${nomeAtual}" /> <br />

</c:forTokens>

</body>

</html>

Listagem 12.5 – ForTokensJSTL.jsp

12.5 Biblioteca de InternacionalizaçãoInternacionalizar aplicações é cada vez mais uma tarefa corriqueira de

todo desenvolvedor web. A maioria dos frameworks web tem a sua maneiraparticular de prover esse mecanismo.

12.5.1 LocaleA tag <fmt:setLocale> é utiliza para fazer com que o sistema passe a ser

exibido em uma língua diferente da que está previamente definida pelo browsercliente.

<fmt:setLocale value="${param.lingua}" scope="session"/>

A JSTL é uma formapadrão de trabalhar com

internacionalização,definida na especificaçãodo Java EE, através da JSP

Standard TagLibs.

Page 115: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

115Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

103

Você também poderia utilizar a classe javax.servlet.jsp.jstl.core.Config em um Servlet. Esta classe permitecontrolar as configurações da JSTL programaticamente, deixando transparente o controle da localização para suaspáginas JSP.

O seguinte trecho de código mostra como a tag <fmt:setLocale> é utilizada para especificar explicitamentea configuração de localização na sessão do usuário:

<fmt:setLocale value="pt_BR" scope="session"/>

Após a execução deste fragemento JSP as preferências de idioma especificadas pelo usuário para seubrowser serão ignoradas.

12.5.2 MensagensTextos de localização de idiomas são utilizadas na JSTL com uso da tag <fmt:message>. Esta tag permitirá a

você retornar mensagens e textos de um arquivo de recurso (resource bundle) e mostrá-lo em sua página.Um arquivo resource bundle é um arquivo contendo todas as mensagens (e rótulos) a serem utilizados pelo

sistema. A Listagem 12.7 mostra um arquivo resource bundle, messages.properties:

site.titulo = Sistema com i18n

saudacao = Bem vindo ao sistema

campo.nome = Nome:

campo.email = Email:

campo.rua = Rua:

campo.cidade = Cidade:

botao.enviar = Enviar

botao.cancelar = Cancelar

erro.campo.obrigatorio = Por favor, preencha o campo

Listagem 12.7 – Exemplo de um arquivo Resource Bundle

Para usar este arquivo contendo as mensagens do seu sistema você referenciá-lo em sua página para que atag <fmt:message> saiba onde encontrar os recursos. Isto pode ser feito de duas formas: usando a tag<fmt:setBundle> ou <fmt:bundle>:

<fmt:bundle basename="br.com.empresa.pacote.messages">

Adicionando a seguinte configuração ao seu web.xml:

<web-app ...><context-param>

<param-name> javax.servlet.jsp.jstl.fmt.localizationContext

</param-name><param-value>messages</param-value>

</context-param></web-app>

Listagem 12.6 – Configurando arquivo de Mensagens

A segunda a opção é mais flexível e também mais desejável, já que não precisamos alterar as páginas JSPcaso venhamos mudar localização do resource. Este arquivo de mensagens deve estar no classpath da suaaplicação web e deve possuir a extensão .properties. Existem várias formas de se fazer isso. A mais simples, é criaro arquivo messages.properties no diretório onde estão os fontes (*.java) da sua aplicação.

Page 116: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

116Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

104

Caso queira deixá-lo dentro de algum pacote, a configuração no web.xml deverá conter o nome completodo arquivo:

<param-value>br.com.empresa.pacote.messages</param-value>

Para usar essas mensagens nas suas páginas JSP você basta usar a tag <fmt:message> da JSTL,

<fmt:message key=”chave”/>

Veja o exemplo, não considerando configuração do resource bundle no web.xml:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<fmt:setLocale value="en_US" scope="session"/>

<fmt:bundle basename="messages">

<html>

<head>

<title><fmt:message key="site.titulo"/></title>

</head>

<body>

<h1><fmt:message key="site.titulo"/></h1>

<p><fmt:message key="saudacao"/></p>

<form>

<fmt:message key="campo.nome"/>

<input type="text" name="nome" /><br/>

<fmt:message key="campo.email"/>

<input type="text" name="email" /><br/>

<fmt:message key="campo.rua"/>

<input type="text" name="rua" /><br/>

<fmt:message key="campo.cidade"/>

<input type="text" name="cidade" />

<p><input type="submit"

value='<fmt:message key="botao.enviar"/>'></p>

</form>

</body>

</html>

</fmt:bundle>

Listagem 12.8 – fmtMessageJSTL.jsp

A tag <fmt:message> sempre procura o arquivo de mensagens maisadequado para o Locale associado ao usuário. Os navegadores enviam no cabeçalhodas requisições com informações sobre os idiomas configurados pelo usuário em seu

O Locale padrão é o dousuário, aquele que estáconfigurado no browser.

Page 117: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

117Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

105

browser. Experimente mudar essas configurações no seu navegador e veja que o sistema passa a ser exibido emidiomas diferentes.

Se o Locale associado usuário for en_US (inglês dos EUA), a tag fmt:message irá tentar buscar asmensagens nos seguintes arquivos (contendo o texto para o locale desejado), em ordem:

messages_en_US.propertiesmessages_en.propertiesmessages.properties

O primeiro a ser encontrado será usado. Portanto, a boa prática é ter o arquivo messages.properties com alíngua padrão do sistema e um arquivo específico para cada língua adicional.

12.5.3 Formatação de Números e DatasA biblioteca fmt inclui tags para manipular Data e Números: <fmt:formatDate>, <fmt:parseDate>,

<fmt:formatNumber>. Como o próprio nome sugere, <fmt:formatDate> faz formatação de datas e mostra datas ehoras (saída dados), enquanto <fmt:parseDate> é usada para fazer análise de valores de datas e horas (entrada dedados). Veja exemplo:

<c:set var="usDateString">4/1/03 7:03 PM</c:set>

<fmt:parseDate value="${usDateString}" parseLocale="en_US"

type="both" dateStyle="short" timeStyle="short" var="usDate"/><br>

<c:set var="brDateString">4/1/03 19:03</c:set>

<fmt:parseDate value="${brDateString}" parseLocale="pt_BR"

type="both" dateStyle="short" timeStyle="short" var="brDate"/><br>

<ul>

<li> Analise <c:out value="${usDateString}"/> dado localização U.S.English

resultando na data <c:out value="${usDate}"/>.</li>

<li> Analise <c:out value="${brDateString}"/> dado localização Pt Brasil

resultando na data <c:out value="${brDate}"/>.</li>

</ul>Listagem 12.9 – fmtFomatDate.jsp

A tag <fmt:formatNumber> é usada para mostrar dados numéricos, incluindo valores monetários epercentuais, de arcodo com uma localização especifica.

<table>

<fmt:timeZone value="US/Eastern">

<c:forEach items="${entryList}" var="blogEntry" varStatus="status">

<c:if test="${status.first}">

<tr><td align="left" class="blogDate">

<fmt:formatDate value="${blogEntry.created}"dateStyle="full"/>

</td></tr>

</c:if>

<tr><td align="left" class="blogTitle">

<c:out value="${blogEntry.title}" escapeXml="false"/>

</td></tr>

Page 118: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

118Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

106

<tr><td align="left" class="blogText">

<c:out value="${blogEntry.text}" escapeXml="false"/>

<font class="blogPosted">

[My <fmt:formatNumber value="0.02" type="currency"/>

posted at <fmt:formatDate value="${blogEntry.created}"

pattern="h:mm a zz"/>]

</font>

</td></tr>

</c:forEach>

</fmt:timeZone>

</table>Listagem 12.9 – fmtFomatDate.jsp

13 Tratamento de erros em aplicações Web

13.1 Configuração de páginas de erroPermitir que um usuário visualize a pilha de exceção quando ao algo dá errado ou um mensagem de erro

padrão do tipo 404 Not Found, não será um bom cartão de visitas para suapágina.

Você poderá elaborar um página personalizada para manipular os erros,e então usar a diretiva page para configurá-la.

Veja Listagem 13.1 e 13.2:

<%@ page isErrorPage="true" %><html> Veja bem ! Veja Bem ! ... Um erro ocorreu, por gentileza tente outra vez.<br/></html>

Listagem 13.1 – erro.jsp , definindo página de erro com JSP

Agora qualquer página JSP poderá usar erro.jsp para informar (ouomitir) um erro ao usuário, basta que as páginas que possam lançar exceçõesinformem qual será sua página de erro colocando a diretiva:

<%@ page errorPage="erro.jsp" %>

Como nada é perfeito teremos um grande inconveniente ao utilizarmos essa abordagem, se você tivermuitas paginas que precisem deste tratamento de erro você terá modificar cada uma para que contenham adiretiva errorPage. Tudo bem, você diria, posso fazer isso! Mas se precisar de um tratamento diferente paraexceções de tipos diferentes? Então sua abordagem deverá ser mais abrangente, você poderá usar a tag <error-page> do Deployment Descriptor.

É possível declarar páginas de erro no web.xml para uma aplicação web inteira, e você pode até mesmoconfigurar páginas de erro para diferentes tipos de exceções, ou diferentes tipos de código de erros HTTP.

13.1.1 Declarando uma página de erro geralEsta declaração se aplica a tudo na sua aplicação web, não apenas para páginas JSPs. As tags internas

<exception-type> ou <error-code> são usados para indicar o tipo da exceção ou código de erro HTTP que seráinterceptado pelo contêiner. Veja Listagem 13.2.

Você não poderá evitarque erros ocorram (nãotodos), mas você pode

pelo menos informar esseserros de uma forma mais

amistosa.

Page 119: 3way curso-formacao-java-web-completo
Page 120: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

120Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

107

<error-page><exception-type>java.lang.Throwable</exception-type><location>/erro.jsp</location>

</error-page>

Listagem 13.2 – erro geral

13.1.2 Declarando página de erro para uma exceção mais específicaEsta declaração configura uma página de erro que só será invocada quando

houver uma SQLException. Se você tiver, ao mesmo tempo, uma declaração geralcomo a Listagem 13.1.1 e ocorrer uma declaração diferente de SQLException, elecontinuará caindo em erro.jsp.

<error-page><exception-type>java.sql.SQLException</exception-type><location>/erroSQL.jsp</location>

</error-page>

Listagem 13.3 – exceção mais específica

13.1.3 Página de erro HTTPVeja como configurar uma página de erro que só é chamada quando o código

HTTP de status for 404 (arquivo não encontrado).

<error-page><error-code>404</error-code><location>/erroHTTP.jsp</location>

</error-page>

Listagem 13.4 – erro http

13.2 Tratando erros em ServletsSe é bom observador deve ter notado que um servlet, através dos métodos service() ou doXXX(), só podem

lançar exceções do tipo ServletException e IOException, ou suas subclasses destas. Então como poderíamosinformar para uma página ou outro servlet a ocorrência de exceções como SQLException ou outra exceçãochecável? A resposta é, não poderíamos.

13.2.1 Criando nossa ExceptionSe você realmente precisar de uma exceção você deverá criá-la como uma subclasse de ServletException.

Veja um exemplo na Listagem 13.5.

import javax.servlet.ServletException;

public class MinhaServletException extends ServletException {

public MinhaServletException(String message) {

super(message);

}

}Listagem 13.5 – MinhaServletException

A Listagem 13.6 apresenta um servlet que lança a exceção MinhaServletException:

O contêiner usa aconfiguração de

<error-pager> noweb.xml como

padrão, ma se umapágina especificar adiretiva errorPage o

contêiner usará aconfiguração da

diretiva.

Page 121: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

121Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

108

public class LancaExceptionServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

throw new MinhaServletException("Minha Exceção");

}

}

Listagem 13.6 – Lançando subclasse de ServletException

13.2.2 Servlet que dispara ExceptionMas ainda temos um problema como poderemos repassar informações de exceção que não são subclasses

de ServletException e IOException? A estratégia a ser utilizada neste caso é utilizar a classe ServletException comouma classe empacotadora. Você captura a exceção num bloco try...catch e “embrulha” a exceção capturada com oconstrutor ServletException(java.lang.Throwable rootCause) e relança-la com throw. Veja exemplo na Listagem13.7.

//uma Exception nao ServletException

public class OutraException extends Exception {

public OutraException(String msg){

super(msg);

}

}

public class LancaExceptionServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

throw new ServletException(

new OutraException("Um Exception nao ServletException"));

}

}

Listagem 13.7 – Injetando uma exceção em ServletException

13.2.3 Mapeamento no Deployment DescriptorDa mesma forma que fizemos com JSPs, também podemos configurar nossa exceção gerada pelo servlet no

web.xml, de modo declarativo. Veja na Listagem 13.8.

<error-page>

<exception-type>apostila.cap13.OutraException</exception-type>

<location>/erro.jsp</location>

</error-page>

Listagem 13.8 – web.xml configurado para capturar OutraException

<%@ page isErrorPage="true"%>

<h1>Erro Encontrado</h1>

O seguinte erro foi encontrado:

<br>

Page 122: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

122Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

109

<b><%=exception.toString() %></b>

<br>

<%

exception.printStackTrace();

%>

Listagem 13.9 – Página de erro erro.jsp

14 MVC para Aplicações Web

14. 1 Por que Combinar Servlets e JSP?Colocar todo HTML dentro de um Servlet realmente não parece a melhor idéia. O que acontece quando

precisamos mudar o design da página? O seu designer não vai ter tempo de editar sua Servlet, recompilá-la ecolocá-la no servidor.

Uma idéia mais interessante é usar o que é bom de cada um dos dois. O JSP foi feito apenas paraapresentar o resultado, ele não deve fazer acessos a bancos e outros. Isso deve estar no Servlet. O ideal então é quea Servlet faça o trabalho sujo e árduo e o JSP apenas apresente esses resultados. A Servlet possui a lógica denegócios (ou regras de negócio) e o JSP tem a lógica de apresentação.

Em um cenário típico:- Use JSP para tornar mais fácil manter e desenvolver o conteúdo HTML- Para códigos dinâmicos simples, chame o código servlet utilizando elementos de script- Para aplicações mais complexas, utilize classes personalizadas chamadas dentro dos elementos de script- Para aplicações bastante complexas, utilize beans e custom tags

Mas, isto não é tudo, para processamento complexo, iniciar com JSP é bastante estranho. Além da facilidadede separar código real em classes separadas, beans e custom tags, a suposição por trás de JSP é que uma páginafornece um aparência básica única.

14.2 Mal Entendidos Sobre MVCUm Framework elaborado nem sempre é necessário, frameworks com Struts e JavaServer Faces, são

muitas vezes úteis. Mas eles não são indispensáveis. Implementar MVC com RequestDispatcher funciona bem paraa maioria das aplicações simples e moderadamente complexas.

Usar MVC não mudará totalmente o projeto do sistema. Podemos utilizar MVC para requisiçõesindividuais. O MVC deve ser encarado como uma abordagem, também conhecido como abordagem Modelo 2(Model 2 approach), essa abordagem não vai conflitar com sua arquitetura.

14.3 Implementando MVC com RequestDispatcherPara modelos de aplicações menos exigentes podemos seguir os seguintes passos na construção de uma

aplicação web segundo o Modelo 2.

1. Defina beans para representar os dados.2. Use um Servlet para manipular requisições. O servlet lê os parâmetros da requisição, verifica por dados

ausentes e malformados, etc. Veja o exemplo de encaminhamento de requisição, Listagem 14.1:

Page 123: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

123Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

110

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {

String operation = request.getParameter("operation");if (operation == null) {

operation = "unknown";}

String address;if (operation.equals("order")) {

address = "/WEB-INF/Order.jsp";} else if (operation.equals("cancel")) {

address = "/WEB-INF/Cancel.jsp";} else {

address = "/WEB-INF/UnknownOperation.jsp";}

RequestDispatcher dispatcher =request.getRequestDispatcher(address);

dispatcher.forward(request, response);

}Listagem 14.1 – Exemplo ecaminhamento de Requsição

3. Preencha os beans. O servlet invoca a lógica de negócios (código específico daaplicação) ou código de acesso a dados para obter os resultados. Os resultadossão inseridos em beans que foram definidos no passo 1. Portanto, para garantirque uma página JSP não irá criar objetos, devemos utilizar:

<jsp:useBean ... type="pacote.Classe" />

ao invés de

<jsp:useBean ... class="pacote.Classe" />

A página JSP não deve modificar os objetos. Portanto, devemos utilizar ${propriedade} ou <jsp:getProperty>mas não <jsp:setProperty> dentro da JSP.

4. Armazene o bean na requisição, sessão, ou no contexto do servlet. O servlet chama setAttribute no objeto dotipo requisição, sessão, ou contexto do servlet para armazenar uma referência aos beans que representam osresultados da requisição.

ValueObject valor = new ValueObject(...);request.setAttribute(“identificador", valor);

RequestDispatcher dispatcher = request.getRequestDispatcher ("/WEB-INF/SomePage.jsp");

dispatcher.forward(request, response);

Listagem 14.2 – armazenando beans

5. Encaminhe a requisição para uma página JSP. O servlet determina qual página JSP é adequada para a situaçãoe utiliza o método forward de RequestDispatcher (Listagem 14.1) para transferir controle para a página.

6. Extraia os dados dos beans. A página JSP acessa os beans com <jsp:useBean> e com um escopo associado com

A página JSP nãodeve criar os objetos.

É o servlet, não apágina JSP, que deve

criar todos osobjetos contendo

dados.

Page 124: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

124Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

111

o contexto definido no passo 4. A página então usa EL, preferencialmente, ou mesmo uma ação<jsp:getProperty> para exibir as propriedades dos beans. A página JSP não cria ou modifica o bean; elameramente extrai e exibe os dados criados pelo servlet.

<jsp:useBean id=“identificador" type="somePackage.ValueObject" scope="request" />${identificador.propriendade}

Listagem 14.3 – recuperando beans

14.4 Framework MVC STRUTSStruts é um framework de código aberto que é disponibilizado e gerenciado pela Apache Software

Foundation. Temos abaixo uma representação de como o Struts gerencia a arquitetura Model 2:

Figura 14.4 – Modelo Struts

Vamos examinar os objetos fornecidos pelo framework para cada um dos componentes Model, View eController.

14.4.1. Controller

14.4.1.1. ActionServlet

No centro da implementação do Controller do framework Struts encontra-se a ActionServlet. Este servecomo um Servlet Front Controller e fornece um único ponto de acesso ao restante da aplicação. Contém tambéma lógica de manipulação da requisição do cliente, através da requisição HTTP do cliente, baseado na requisição, eredireciona o usuário diretamente à página WEB ou despacha a requisição ao objeto gerenciador chamado Actionsque será, então, responsável por determinar o resultado da resposta.

A ActionServlet conhece todos estes detalhes, qual Action chamar para gerenciar determinada requisição,qual componente de View deve ser chamado em seguida lendo esta informação de um arquivo de configuração

Page 125: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

125Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

112

XML, geralmente nomeado struts-config.xml. Esta servlet é fornecida pelo framework Struts. Tudo o que énecessário para incluí-la em nossa aplicação é configurá-la corretamente no descritor de implementação daaplicação. Abaixo está um trecho de web.xml exibindo como configurar o ActionServlet para o uso:

...<servlet>

<servlet-name>action</servlet-name><servlet-class>

org.apache.struts.action.ActionServlet</servlet-class>

<init-param><param-name>application</param-name><param-value>ApplicationResources</param-value>

</init-param><init-param>

<param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value>

</init-param></servlet>...<servlet-mapping>

<servlet-name>action</servlet-name><url-pattern>*.do</url-pattern>

</servlet-mapping>

Listagem 14.5 – web.xml configurando struts

14.4.1.2. ActionComo mencionamos antes, algumas requisições do cliente são delegadas às instâncias de objetos da Action

por nossa classe servlet Front Controller. Todos os objetos Action definem um método chamado execute() e é esteo método que é chamado pela ActionServlet para gerenciar a requisição.

O framework Struts fornece aos desenvolvedores somente a classe base Action. Para incluir objetos Actioncomo gerenciadores de requisições em sua aplicação, os desenvolvedores devem estender esta classe base efornecer uma implementação para o método execute().

Uma atividade comum em aplicações WEB é o início de uma sessão do usuário. Abaixo é mostrada umaimplementação da classe LoginAction que poderia ser utilizada para gerenciar tais requisições.

package actions;

import forms.LoginForm;

import javax.servlet.http.*;

import org.apache.struts.action.*;

public class LoginAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

// faz o cast do objeto genérico ActionForm

// para a implementação específica ActionForm

// configurada para esta Action

LoginForm loginForm = (LoginForm) form;

// Recupera os dados especificados pelo usuário.

String loginName = loginForm.getLoginName();

Page 126: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

126Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

113

String password = loginForm.getPassword();

// Verifica se é o usuário correto

if (!(loginName.equals("1234") && password.equals("1234")))

return mapping.findForward("failure");

// Armazena o resultado no session scope

// para uso no restante da aplicação

HttpSession session = request.getSession();

session.setAttribute("USER", loginName);

// o usuário efetuou o login com sucesso. Despacha o usuário para

// o restante da aplicação.

return mapping.findForward("success");

}

}

Listagem 14.5 – Exemplo ação struts, LoginAction.java

Observe que a implementação acima emprega o uso de umobjeto de negócio, chamado UserService, para a autenticação dousuário e não fornece diretamente sua própria implementação nométodo execute(). Instâncias de Action que forem criadas destamaneira a funcionalidade central deve ser delegada aos objetos denegócio (que podem ser considerados parte da Model), nãoimplementada na própria Action. As únicas atividades que uma Actiondeve executar são:

- Recuperar as informações fornecidas pelo JavaBean deusuário do ActionForm associado.- Traduzir dados do formulário em parâmetros requeridospelos objetos de negócio que implementam a funcionalidade.- Recuperar o resultado da operação do objeto de negócio edeterminar a View seguinte para onde o usuário deve serencaminhado.- Opcionalmente, armazenar os resultados dos dados daoperação de negócio na sessão ou solicitar objetos que serãoutilizados pelo restante da aplicação.

Instâncias de Action são capazes de instruir a ActionServlet para qual componente de View delegar aresposta retornando instâncias de objetos ActionForward. Actions têm o acesso a estes objetos de ActionForwardcom o uso de um objeto ActionMapping, que encapsula os dados de mapeamentos de caminhos lógicos para cadaAction. Estes mapeamentos são lidos do arquivo de configuração pela ActionServlet, que é responsável por enviar aActionMapping necessária à Action. Deste modo, para instruir a ActionServlet a passar o controle para um caminhológico chamado success, nossa Action executa a seguinte instrução:

return mapping.findForward("success");

14.4.1.3. ActionFormO framework Struts fornece uma classe chamada ActionForm. Instâncias desta classe são usadas para

facilitar a recuperação dos dados dos formulários preenchidos pelo usuário através das instâncias de Action quegerenciam os eventos de formulário.

Convém lembrar que ao codificaros exemplos dos objetos Action,que o framework irá criar uma

única cópia do objeto e usá-lo parafacilitar todas as requisições.

Isto significa que devemos semprecodificar a Action para ser thread-safe e certificar em utilizar semprevariáveis locais e não variáveis de

classe.

Page 127: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

127Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

114

Cada instância de ActionForm representa um formulário ou um conjunto de formulários, define aspropriedades que correspondem aos elementos do(s) formulário(s) que representam, e as expõem usandométodos setters e getters de acesso publico. Actions que necessitam dos dados dos formulários, simplesmentechamam os métodos getters da instância de ActionForm.

Abaixo é listado o ActionForm usado no exemplo acima (Listagem 14.5):

import org.apache.struts.action.*;

public class LoginForm extends ActionForm {

private String loginName;

private String password;

public String getLoginName() {

return loginName;

}

public void setLoginName(String loginName) {

this.loginName = loginName;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

Listagem 14.6 – LoginForm.java

Ao codificar ActionForms, devemos lembrar de:- Definir propriedades com os métodos get e set para cada elemento representado no formulário.- Não colocar nenhuma lógica de negócio no ActionForm. São concebidos meramente para transferirdados entre componentes da View e do Controller e por isso não são utilizados pela lógica de negócio.- Opcionalmente, incluir um método de validação dos dados antes que o controle passe para a Action.

14.4.1.4. Arquivo struts-config.xmlAtua como arquivo de configuração para os componentes do framework Struts. Abaixo, temos uma cópia

do arquivo struts-config.xml usado para o exemplo acima:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts-config PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 1.2//EN""http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"><struts-config><form-beans><form-bean name="loginForm" type="login.LoginForm"/>

</form-beans>

Struts fornece a definiçãobase da classe; os

desenvolvedores têm aresponsabilidade de criar

suas própriasimplementações.

Page 128: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

128Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

115

<action-mappings>

<action name="loginForm"path="/login"scope="request"type="login.LoginAction">

<forward name="success" path="/success.jsp"/><forward name="failure" path="/failure.jsp"/>

</action>

</action-mappings></struts-config>

Descreveremos a seguir, cada um desses elementos.

<!DOCTYPE ...>Define o arquivo XML como sendo um arquivo de configuração parautilização pelo framework Struts. Excluir esta linha, ou mesmo digitá-laerrado, resultará em erros quando a aplicação carregar.

<struts-config>Elemento raiz do arquivo de configuração. Todos os outros elementos são filhos desse elemento.

<form-beans>Marca o início e o fim das definições das instâncias de uma classe ActionForms. Elementos <form-beans>Devem ser colocados como filhos deste elemento.

<form-bean>Define uma instância de ActionForm que pode ser utilizada pela aplicação. Tem dois atributos:

name – o nome lógico a ser associado com a classe ActionFormtype – o nome completo da classe ActionForm.

<action-mappings>Marca o início e o fim das definições de ações e seus mapeamentos. Todos os elementos <action> devemser colocados como filhos deste elemento.

<action>Define uma instância de um objeto Action para utilização pela aplicação. A maior parte dos elementos deação implementa os seguintes atributos:

name – o nome do elemento <form-bean> a ser utilizado nesta ação.path – o caminho relativo ao contexto a ser utilizado por esta Action. Qualquer requisição a estecaminho resulta na chamada da Action definida.scope – contexto do escopo onde nossa ActionForm pode ser acessada. Isto informa onde a

ActionServlet deverá armazenar a instância da classe ActionForm.type – o nome de classe Action.

<forward>Ações podem ter nenhum ou muitos elementos de redireção. Este elemento define o mapeamento lógicoentre um nome e um caminho na nossa aplicação. Tem os seguintes atributos:

name – o nome lógico do elemento de redireção que pode ser utilizado pela instância de Action.path – o caminho para o componente de visualização associado a este redirecionador.

Podemos definir qualAction é chamada para

cada requisição, quecomponente de formuláriousar para cada Action e omapeamento de nomeslógicos para caminhos

reais, entre outros.

Page 129: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

129Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

116

14.4.2. Model (Modelo)O framework Struts não fornece explicitamente nenhum componente dentro de Model. Quais objetos

utilizar como componentes Model é deixado a critério do desenvolvedor, apesar de serem normalmente JavaBeansou, eventualmente, Entreprise JavaBeans (EJB), ou ainda Springs.

14.4.3. View (Visualização)Struts pode utilizar qualquer tecnologia da camada de apresentação, apesar de, na maioria dos casos,

utilizar JSP, JSF e/ou HTML. O que o Struts fornece para esta camada é um conjunto de bibliotecas de tags quepermite utilizar as facilidades do Struts para popular e validar automaticamente os formulários.

15. Custom Tags

15.1 IntroduçãoTendo visto o uso e a facilidade de se programar páginas utilizando JSTL

você provavelmente desejaria utilizar a mesma estratégia para um conjunto defuncionalidades, específicas de sua implementação, que não tenham sidocontempladas na JSTL.

Escrever novos manipuladores de tags é uma tarefa relativamentesimples de ser feito com JSP/Servlets. Existem três maneiras de se criar seuspróprios manipuladores de tags. Dessas três, duas foram introduzidas com JSP2.0 para tornar a tarefa de desenvolver tags mais simples (Simple Tags e TagFiles). Mas ainda assim, você precisará aprender como desenvolver as tagsClássicas, para as ocasiões absurdamente raras em que nenhuma das outrasduas for capaz de fazer o que você quer.

15.2 Como funcionam as Custom Tags?Ao contrário do que você esteja pensado, construir tags JSP é algo tão

simples quanto desenvolver uma classe Java normal ou um Servlet. Para usarJSP Custom Tags, você precisa definir separadamente três componentes:

- a classe tag handler (manipulador da tag) que define ocomportamento da tag- o tag library descriptor (descritor da biblioteca de tag) que define umarquivo XML contendo elementos que são mapeados para aimplementação da tag e- um arquivo JSP que usa a tag library.

15.2.1 A classe Tag HandlerQuando definimos uma nova tag, sua primeira tarefa é definir uma classe Java que diz ao sistema o que

fazer quando encontrar a declaração da tag. Esta classe deve implementar a interface javax.servlet.jsp.tagext.Tag.Você normalmente conseguirá isto, fazendo herança da classe TagSupport ou BodyTagSupport.

A Listagem 15.1 é um exemplo de uma tag simples que insere o texto Exemplo Custom Tag(tags.TagExemplo) em uma página JSP que faça uso da mesma. Não se preocupe em entender de imediato ocomportamento exato desta classe – isso será explicado nas próximas seções. Por agora, somente atente para o fatode que a classe TagExemplo está faz parte do pacote tags. Consequentemente, a classe deverá ser colocada dentrode um subdiretório tags dentro de ../WEB-INF/classes, da mesma forma que um servlet.

public class TagExemplo extends TagSupport {

public int doStartTag() {

Podemos reutilizarfragmentos JSP utilizando

a tags <jsp:include> e<jsp:param>, mas

certamente o código JSP ea organização correm o

risco de ficar muitobagunçados. Não seriamelhor se pudéssemos

criar tags como as da JSTLpara incrementar nossa

aplicação?

Page 130: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

130Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

117

try {

JspWriter out = pageContext.getOut();

out.print("Exemplo Custom tag " +

"(tags.TagExemplo)");

} catch(IOException ioe) {

System.out.println("Erro em TagExemplo: " + ioe);

}

return(SKIP_BODY);

}

}

Listagem 15.1 – Exemplo de Custom Tag

15.2.2 Arquivo Descritor de Tag LibraryUma vez definido o tag handler, sua próxima tarefa é identificar a classe

para o servidor e associando-a com uma tag XML, apropriada, do descritor detags. A Listagem 15.2 mostra um arquivo (em formato XML), ele contémalgumas informações fixas como: nome da sua biblioteca, uma descriçãoresumida e um série de tags de descrição. A parte não negritada da listagem écomum, e virtual igual, para todos os arquivos descritores de tags, podendo sercopiado para novos arquivos descritores de forma literal.

Note que o elemento tag define o nome principal da tag e identifica aclasse que manipula a tag. O nome completamente qualificado da classe deveser usado. A classe deve ser colocada em qualquer lugar que seu servidor aceitecomo local de instalação de beans ou qualquer outra classe de suporte.

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE taglibPUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN""http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd"><taglib>

<tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name>exemplo-tags</short-name><uri>http://minha.empresa.br/exemplo-taglib</uri><description>

Uma simples tag library</description><tag>

<name>exemplo</name><tag-class>tags.TagExemplo</tag-class><body-content>empty</body-content><description>Exemplo simples: insere uma na saída</description>

</tag></taglib>

Listagem 15.2 – Descritor da tag tagexemplo.tld

O arquivo descritor debiblioteca de tags deve ter

extensão .tld,diferentemente do

web.xml.

Em uma aplicação real olocal mais indicado paracolocação do TLD serádentro do subdiretório

WEB-INF, assim o arquivopoderá ser reutilizado por

diferentes páginas emmúltiplos diretórios,alémde previnir que o usuário

final possa acessar oarquivo TLD diretamente.

Page 131: 3way curso-formacao-java-web-completo
Page 132: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

132Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

118

15.2.3 O Arquivo JSPDepois de ter implementado o manipulador da tag e registrado este manipulador no descritor, você agora

está pronto para utilizar sua tag customizada no em uma página JSP. Para utilizar a tag numa página JSP, precisamosadicionar a diretiva:

<%@ taglib uri="..." prefix="..." %>

A diretiva requer um atributo uri que pode ser absoluto ou relativo à URL. Por enquanto, nós iremos utilizaruma URL relativa, bem simples, que corresponde a uma descritor de arquivo TLD colocado no mesmo diretório dapágina JSP que faz uso da tag. Adicionalmente, você pode usar o arquivo web.xml para mudar o significado doliteral string fornecido ao atributo uri da diretiva taglib, veja o elemento taglib do web.xml.

O atributo prefix, também obrigatório, especifica um prefixo que será usado como nome da tag definida nodescritor de tags. Por exemplo, se o arquivo TLD defini uma tag nomeado como tag1 e o atributo prefix tem comovalor o literal teste, então o nome corrente da tag será teste:tag1. Esta tag será usada, dependendo se ela estádefinida como uma tag que aceita um corpo, de duas das seguintes maneiras:

<test:tag1>Qualquer JSP</test:tag1>

ou apenas

<test:tag1 />

Para demonstrar, o descritor definido na Listagem 15.2 esta nomeado como tagexemplo.tld e reside nomesmo diretório da página JSP mostrada na Listagem 15.3. Daí, o JSP usa a diretiva taglib com uma simples URLrelativa, dando somente o nome do arquivo ao atributo uri, como mostrado abaixo:

<HTML>

<HEAD>

<%@ taglib uri="tagexemplo.tld" prefix="mtag" %>

<TITLE><mtag:example /></TITLE>

</HEAD>

<BODY>

<H1><mtag:exemplo /></H1>

<mtag:exemplo />

</BODY>

</HTML>

Listagem 15.3 – JSP usando a custom tag Exemplo

16. Tag File16.1 O que é um Tag File

Uma Tag File nada mais é do que um pequeno código de arquivo JSP. A sua função é justamente criarpequenos fragmentos de códigos para um determinado fim. Ela ajuda na organização e design da sua aplicação,retirando uma fatia de códigos comuns e repetitivos das suas páginas JSP. Suporta EL, JSTL e qualquer tag libs,incluindo tags de frameworks, como por exemplo as tags do Struts.

16.2 Utilizando Tag Files em uma página JSPCom Tag Files você pode invocar conteúdo reutilizável usando um tag customizada, em vez dos genéricos

<jsp:include> ou <c:import>. Numa comparação mais grosseira podemos ver as Tag Files como includes maispoderosos.

Page 133: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

133Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

119

Tão simples quanto parece, um tag file é um arquivo contendo código JSP que tem como extensão .tag ou.tagx. De fato, o único elemento JSP que não pode ser usado num tag file são as diretivas page. Par demonstrarcomo funciona, façamos um simples exemplo. A Listagem 16.1 mostra uma sequência de seis números.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:forTokens items="0 1 1 2 3 5" delims=" " var="fibNum">

<c:out value="${fibNum}"/>

</c:forTokens>

Listagem 16.1 – exemplo.tag

A Listagem 16.1 contém somente código JSP, que faz uso da açãoforTokens, da JSTL e de expressões EL. A Listagem 16.2, usa a tag file, da Listagem16.1 e mostra o resultado.

<%@ taglib prefix="ex" tagdir="/WEB-INF/tags" %><html><body> Os primeiros seis números da seqüência deFibonacci são:

<ex:exemplo/></body></html>

Listagem 16.2 example.jsp

Pode parecer trivial, mas este novo recurso é importante. A chave é a simplicidade. Você não precisa terconhecimento de programação em Java para construir novas tags com tag files. Você não precisa, necessariamente,de arquivos descritores de tag. A nova especificação (JSP 2.0), tornou simples a integração de tag file com um JSP.Você só precisa seguir dois passo:

- adicionar a diretiva taglib ao JSP com um atributo prefix e o atributo tagdir apontando para /WEB-INF/tags.- coloque a tag contendo o prefixo e o nome do tag file (sem a extensão) em qualquer lugar em que o JSPnecessite usar a tag.

Este processo levanta uma questão importante. Se uma tag clássica necessita de TLDs para localizar suasclasses, como estas tag files são localizadas? Par responder isto, nós precisamos saber como o contêiner acessa eprocessa as tag files.

16.3 Tag Files empacotadosPara ficar mais fácil e rápido, no exemplo da Listagem 16.1, nos colocamos a tag file no diretório WEB-

INF/tags, com isso não foi preciso gerar um jar para tag. Isto foi necessário porque o contêiner verificaautomaticamente pelos tag files dentro deste diretório.

Mas se você quiser colocar suas tags dentro de um JAR a situação muda. Neste caso você precisará criarum arquivo TLD. Este descritor de tag é similar aos TLDs das tags clássicas, mas ao invés de associar tags a umaclasse de manipulador de tag, ele irá associar um nome a um tag file e seu caminho.

Para tornar isto possível, o TLD do tag file usa um elemento <tag-file> no lugar de <tag>. Os únicossubelementos necessários são <name>, que especifica o nome do arquivo sem a extensão e <path>, que especificao caminho para o arquivo de tag. Entretanto, <path> deve começar com /META-INF/tags. Aqui temos um exemplode TLD para um tag file empacotado.

Diferentemente das tagsclássicas, Tag Files nãoimplementa uma classe

com manipulador de tag.

Page 134: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

134Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

120

<taglib> ...

<uri>http://minha.empresa.com/tagfile/exemplo</uri><tag-file>

<name>exemplo</name><path>/META-INF/tags/exemplo.tag</path>

</tag-file></taglib>

Este arquivo deve ser colocado dentro do diretório META-INF e o tag file(s) deverão estar em META-INF/tagsou em um subdiretório. Um exemplo da estrutura de diretório segue abaixo:

META-INF/

exemplo.tld

tags/

exemplo.tag

Uma vez que o tag file não se encontra dentro ou abaixo de /WEB-INF/tags, você não poderá usar oatributo tagdir na diretiva taglib. A invés disto, você precisa especificar a URI definida no seu TLD(http://minha.empresa.com/tagfile/exemplo) usando o atributo uri. Para nosso exemplo, Listagem 16.2, a diretivataglib deverá ser usada com segue:

<%@ taglib prefix="ex" uri="http://minha.empresa.com/tagfile/exemplo" %>

Outra diferença importante entre TLDs de tag file e TLDs de tags clássicas, são relativos aos elementos<attribute> e <body-content>. As tags clássicas podem conter esta informação dentro de seus TLDs, tag files não.Os tag files usam um conjunto de diretivas especiais. Elas dizem ao contêiner como processar o tag file, éimportante entender como elas funcionam.

16.4 DiretivasJSP contém três tipos diferentes de diretivas: page, taglib e include. Tag files

possui variable, cria e inicializa uma variável usada no processamento da tag. A tag,diz ao web contêiner como processar o tag file. A attribute, descreve os atributos quepodem ser usados na tag. Vejamos as duas últimas.

16.4.1 tagA nova diretiva, tag, funciona como a diretiva page em um JSP. Ela fornece ao

web contêiner um conjunto de configuração a ser usado por todo o arquivo de tag.Um atributo que não paralelo no JSP é dynamic-attributes. Ele age como o

subelemento <dynamic-attributes> do TLD, mas ao invés de informar atributos paraum método em Java, o web contêiner atualiza as variáveis locais especificadas peladiretiva.

Por exemplo, o seguinte tag file usa a diretiva tag para enviar dados aoatributo dinâmico. Estes dados são mostrados com tag de ação forEach da JSTL.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ tag dynamic-attributes="atributo" %>

Tag files removeu adiretiva page e

adicionou outrastrês: variable, tag e

attribute.

Page 135: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

135Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

121

<c:forEach items="${atributo}" var="localVar">

${localVar.value}<br>

</c:forEach>Listagem 16.3 – dinatributo.tag, tag file e atributos dinâmicos

O código JSP, na Listagem 16.4, mostra como usar a tag file (dinatributo.tag, Listagem 16.3) e comoconfigurar valores para os atributos da tag. Quando o JSP for invocado ele mostrará uma lista de valores.

<%@ taglib prefix="dyn" tagdir="/WEB-INF/tags" %>

<html><body>

<dyn:dinatributo atr1="primeiro" atr2="segundo" atr3="terceiro"/>

<dyn:dinatributo x="a" y="b" z="d"/>

</body></html>Listagem 16.4 – atributo-dinamico.jsp

16.4.2 attributeAtributos dinâmicos são bastante flexíveis, mas se você souber quais atributos sua tag irá precisar você

poderá informá-las ao web contêiner usando atributos estáticos. As tags tradicionais tem o subelemento<attribute> no TLD para tal propósito. Mas para configurar um conjunto de atributos na tag file nos precisamos dadiretiva attribute.

O atributo name fornece uma identificação required e informa ao contêinerse atributo é obrigatório e rtexprvalue informa ao contêiner que o valor do atributopode ser obtido em tempo de execução.

Vejamos um exemplo simples para demonstrar o uso destas diretivas em umtag file.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c" %>

<%@ attribute name="sim_ou_nao" required="true" %>

<c:choose>

<c:when test='${sim_ou_nao == "sim"}'>

Penta campeão

</c:when>

<c:otherwise>

Quero hexa ! Campeão, Brasil

</c:otherwise>

</c:choose>Listagem 16.5 – estatributo.tag

Então, o seguinte código JSP usa a tag file e configura o atributo:

<%@ taglib prefix="atr" tagdir="/WEB-INF/tags" %>

<html>

<body>

<atr:estatributo sim_ou_nao="sim" />

</body>

</html>Listagem 16.6 – estatributo.jsp

Os atributosassociados com a

diretiva attribute sãosimilares aos

subelementos doelemento <tag> nos

TLDs.

Page 136: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

136Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

122

A diretiva attribute também permite que você insira code JSP dentro de atributos estáticos simplesmenteconfigurando o atributo fragment para true. Entretanto, para processar esse fragmento, você precisará de recursosextras, fora do escopo das diretivas de tag file, ou seja, você vai precisar de novas ações padrões.

16.4.3 variableTag files podem atribuir e mostrar variáveis, este recurso é fornecido pela diretiva variable. Esta diretiva

funciona como o subelemento <variable> na TLD das tags clássicas. Você pode usar o atributo scope para definirsua visibilidade, name-given e name-from-attribute para nomear a variável. A única diferença é o atributo alias,que fornece uma nome local para uma variável quando seu nome real é determinado pelo atributo value usandoname-from-attribute.

Como exemplo, se tag file contém a diretiva <%@ variable name-given="x" %> então o JSP pode configuraro valor da variável com ação JSTL

<c:set var="x"> Hurra!</c:set>

e mostrar este valor dentro de um JSP com ${x}. Um consideração importante a respeito desta diretiva éque não é preciso um script de declaração para declarar um variável no JSP.

16.5 Standard ActionsJSP fornece um conjunto de ações padrão (standard actions), permitindo que você direcione o

processamento da página a ser realizado pelo web contêiner. Tag files podem utilizar todas as ações JSP e maisduas: <jsp:invoke> que usa o fragmento declarado pela diretiva attribute e <jsp:doBody> que processa o corpo datag.

16.5.1 <jsp:invoke/>As classes SimpleTag obtém o conteúdo do corpo da tag pela chamado do método getJspBody(), que

retorna um JspFrament. Então, para direcionar o resultado do fragmento para JspWrite, o manipulador da tagchama o método invoke(). O argumento deste método determina que objeto JspWrite irá receber a saída dofragmento.

A ação <jsp:invoke> realiza essencialmente a mesma função do método invoke(), mas ela é usada comatributos declarados como fragmentos, não podendo ser utilizados com conteúdo do corpo. Além disto, esta açãopode fazer mais com JspFragment do que somente direcionar este fragmento para oJspWrite. Ela pode converter os fragmentos para String ou num objeto Reader.

De todos os atributos, somente fragment é obrigatório na ação <jsp:invoke>.Se nem var ou varReader estiver configurado, então o JspFragment será direcionadopara JspWrite padrão. Se uma delas, var ou varReader for configurada, mas scopenão, então o escopo do fragmento será page.

A Listagem 16.6 apresenta uma tag file que usa <jsp:invoke>. O atributofragment, obrigatório, esta especificado com valor frag, cujo valor será umJspFragment. Então dependendo do valor de proc, ele retorna o fragmento para oJSP como uma variável String.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%@ attribute name="frag" required="true" fragment="true"%>

<%@ attribute name="proc" required="true" %>

<c:if test='${proc == "yes"}'>

<jsp:invoke fragment="frag"/>

</c:if>Listagem 16.6 - invokeaction.tag

Assim como acontececom SimpleTag, tag

files não podemprocessar elementos

de script (declarações,expressões, scriptlets)dentro do conteúdo do

corpo.

Page 137: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

137Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

123

A Listagem 16.7, apresenta o JSP necessário para testar esta tag file. Primeiro, ele incorpora a tag econfigura o valor de proc para yes. Então, usando a ação <jsp:attribute>, ele especifica uma linha de código JSP queserá o valor do atributo frag.

<%@ taglib prefix="inv" tagdir="/WEB-INF/tags" %>

<html>

<body>

<inv:invokeaction proc="yes">

<jsp:attribute name="frag">

dois + dois = ${2+2}

</jsp:attribute>

</inv:invokeaction>

</body>

</html>Listagem 16.7 - invokeaction.jsp

Tudo que fizemos aqui foi aprender como configurar e processar atributos num tag file. Agora veremoscomo tag files fazem para usar informações entre as tags.

16.5.2 <jsp:doBody/>A ação <jsp:doBody> funciona como o <jsp:invoke>, mas ele recebe o corpo da tag ao invés do atributo. Ele

contém os mesmos atributos de que <jsp:invoke>, com exceção de fragment. Então, quando a tag file recebe oconteúdo do corpo, ela pode manipulá-lo de três formas:

- mostrá-lo com o JspWriter padrão;- enviá-lo para uma variável com o atributo var;- armazená-lo como um objeto Reader com o atributo varReader.

A tag file da Listagem 16.8 processa o conteúdo do corpo de acordo como o atributo att. Quando att é igualvar, ele será armazenado numa variável e quando att for igual reader, ele será armazenado num objeto Reader. Seatt não for especificado, o padrão é que JspWriter mostre o conteúdo como saída.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ attribute name="att" required="true" %>

<c:choose>

<c:when test='${att == "var"}'>

<jsp:doBody var="var" scope="application"/>

</c:when>

<c:when test='${att == "reader"}'>

<jsp:doBody varReader="bodyReader" />

</c:when>

<c:otherwise >

<jsp:doBody />

</c:otherwise>

</c:choose>Listagem 16.8 - bodyaction.tag

Page 138: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

138Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

124

O JSP na Listagem 16.9, realiza dois trabalhos. Primeiro, ele acessa a tag file e configura o atributo att paravar. Então, usando EL, ele mostra a variável contendo o corpo da tag.

<%@ taglib prefix="corpo" tagdir="/WEB-INF/tags" %>

<html>

<body>

<corpo:bodyaction att="var">

Este é corpo da tag

</corpo:bodyaction >

${bodyvar}

</body>

</html>Listagem 16.9 - bodyaction.jsp

17 Simple Tag17.1. O que é uma Simple Tag

O JSP 2.0 introduziu uma série de novos mecanismos com o intuito defacilitar a vida do desenvolvedor. Com Simple Tags, podem ser criados todos tiposde tags com mais facilidade: desde tags com corpo vazio, passando por tags que,dependendo de uma determinada condição, incluem ou não seu corpo, e até tagsque processam o corpo repetidas vezes.

Toda a lógica de processamento de um Simple Tag fica em um únicométodo, doTag(), em uma classe que implementa a interfacejavax.servlet.jsp.tagext.SimpleTag.

17.2. Ciclo de Vida.Quando um JSP invoca uma tag, uma nova instância da classe handler é criada, dois ou mais métodos são

chamados para o handler e quando o método doTag() é finalizado, o objeto handle desaparece, em outras palavras,estes objetos handler não são reutilizados pelo web contêiner.

17.3. Overview das classes envolvidasUma Tag handler Simples deve implementar a interface SimpleTag. A maneira mais fácil de fazê-lo é

estender SimpleTagSupport e substituir apenas o método de que você precisa, doTag(). Você não precisa usarSimpleTagSupport, mas 99,99% dos desenvolvedores de tags simples a usam.

A SimpleTagSupport implementa os métodos de SimpleTag, mas o doTag() não faz nada, você precisasubstituí-lo em seu tag handler. Ela também adiciona três métodos de conveniência, o mais útil é o getJspBody().

Nome Descrição

setJspContext() Torna o JspContext disponível para o processamento na tag

setParent() Chamado pelo web contêiner para tornar a tag pai disponível

setJspBody() Permite o processamento do corpo da tag

doTag() Chamado pelo web contêiner no começar da operação da SimpleTag

getParent() Invocado por classes Java para obter seu JspTag pai

Tabela C.1 Métodos da interface SimpleTag

Simple Tags são maissimples de implementarque as tags clássicas, e

mesmo que tag file, poisseu objetivo é trabalharapenas com a EL, e nãocom scripts JSP, porém

têm o mesmo poderfuncional.

Page 139: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

139Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

125

17.4. Criando SimpleTagsO primeiro passo é escrever uma classe que estenda SimpleTagSupport:

import java.io.IOException;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.SimpleTagSupport;

public class SimpleTag1 extends SimpleTagSupport {

}

}Listagem 17.1 – SimpleTag1.java

Depois de criar a classe é necessário reimplementar o método doTag() oriundo da superclasseSimpleTagSupport, que por sua vez herdou esse método da interface SimpleTag.

import java.io.IOException;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.tagext.SimpleTagSupport;

public class SimpleTag1 extends SimpleTagSupport {

public void doTag() throws JspException, IOException {

getJspContext().getOut().print("Simple Tag Handler");

}

}Listagem 17.2 – SimpleTag1.java, com método doTag()

Note que o método doTag() declara uma IOException, então não é preciso tratar a exceção com um blocatry/catch.

17.5. Mapeamento de tlds em páginas Jsp.Crie um TLD para a tag.

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

version="2.0">

<description>Minha biblioteca SimpleTag</description>

<tlib-version>1.0</tlib-version>

<short-name>BibliotecaSimpleTag</short-name>

<uri>simpleTags</uri>

Page 140: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

140Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

126

<tag>

<description>Minha Tag</description>

<name>minhaTag</name>

<tag-class>SimpleTag1</tag-class>

<body-content>empty</body-content>

</tag>

</taglib>Listagem 17.3 – TLD para SimpleTag1

Coloque a TLD dentro de WEB-INF e a tag handler dentro de WEB-INF/classes, usando a estrutura dediretórios do pacote. As classes Tag Handler vão para o mesmo lugar onde todas as outras classes Java da aplicaçãoweb forem. Escrevendo um JSP que use a tag.

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib prefix="tag" uri="simpleTags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Testando Simple Tags</title>

</head>

<body>

<tag:minhaTag/>

</body>

</html>Listagem 17.4 – Usando SimpleTag1 com SimpleTag1.jsp

17.6 Corpo da TagSe a tag precisar de um corpo, o <body-content> do TLD precisa refletir isso e é necessário adicionar um

comando especial no método doTag().

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib prefix="tag" uri="simpleTags" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<tag:minhaTag> Isto é um corpo </tag:minhaTag>

</body>

</html>Listagem 17.5 – Tag com corpo

Page 141: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

141Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

127

Para que o JSP acima funcione, é necessário modificar o método doTag() da classe SimpleTag1 conformeabaixo:

public void doTag() throws JspException, IOException {

getJspBody().invoke(null);

getJspContext().getOut().print("<br>Simple Tag Handler");

}Listagem 17.6 – doTag() com suporte a um corpo

Você deverá informar essa nova opção em seu arquivo TLD:

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

version="2.0">

<description>Minha biblioteca SimpleTag</description>

<tlib-version>1.0</tlib-version>

<short-name>BibliotecaSimpleTag</short-name>

<uri>simpleTags</uri>

<tag>

<description>Minha Tag</description>

<name>minhaTag</name>

<tag-class>lab10.SimpleTag1</tag-class>

<body-content>scriptless</body-content>

</tag>

</taglib>Listagem 17.6 – Recofigurando simpleTags.tld

17.7. Tópicos Avançados: definindo atributos.Imagine que você tenha uma tag com um corpo que usa uma expressão EL como atributo. Agora imagine

que o atributo não exista no momento em que você invoca a tag! Em outras palavras, o corpo da tag depende que atag handler defina o atributo.

<tag:minhaTag> A mensagem é: ${mensagem } </tag:minhaTag>

No ponto em que a tag é invocada, “mensagem” não é um atributo dentro do escopo! Se você tirasse estaexpressão da tag, ela retornaria nula. Para definir o atributo mensagem usamos o método setAttribute:

public void doTag() throws JspException, IOException {

getJspContext().setAttribute("mensagem", "Uma mensagem");

getJspBody().invoke(null);

}

Page 142: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

142Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

128

É possível configurar um atributo referenciando uma coleção, no exemplo abaixo a expressão EL no corpoda tag representa um único valor em uma coleção e o objetivo é fazer a tag gerar uma linha para cada elemento dacoleção. Simplesmente o método doTag() só precisa fazer o trabalho em um loop, invocando o corpo em cadaiteração do loop.

<table>

<tag:minhaTag>

<tr><td>${mensagem }</td></tr>

</tag:minhaTag>

</table>

O método doTag() da tag handler:

String[] mensagem = {"oi!", "tudo bem?", "Bom dia!", "Boa noite!"};

public void doTag() throws JspException, IOException {

for(String msg : mensagem){

getJspContext().setAttribute("mensagem", msg);

getJspBody().invoke(null);

}

}

Cada loop da tag handler reinicia o valor do atributo “mensagem” e chama getJspContext() novamente.

18. HTML e JavaScript

18.1 BrowsersBrowsers são softwares que lêem e interpretam arquivos HTML (Hyper Text Markup Language) enviados na

World Wide Web ( www – Rede Mundial ), formata-os em páginas da Web e os exibe ao usuário. Navegadores daWeb também podem executar som ou arquivos de vídeo incorporados em documentos da Web se você dispuser dohardware necessário.

Existem Browsers para todos os gostos. Os mais utilizados são o InternetExplorer e o Mozilla Firefox, vêm acompanhados de outros programas para Internet,como o leitor de Correio Eletrônico (e-mail). Existem outras opções de Browsers,basta escolher um deles e navegar na Internet.

18.2 HTTP User-AgentHTTP é um protocolo da Internet utilizado pelos computadores ligados à Web

para comunicar-se entre si, ativa os navegadores da Web para recuperareminformações de servidores da World Wide Web. O protocolo permite a um usuáriousar um programa cliente para entrar em uma URL, ou clicar em um hyperlink, erecuperar texto, elementos gráficos, som e outras informações digitais de umservidor da Web.

Endereços URL derecursos HTTPcomeçam com

http://.

Page 143: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

143Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

129

18.3 User-Agent StringEsta ferramenta foi desenvolvida para a captura de informações sobre o tipo de cliente SW (browser,

webcrawler, anonymizer, etc) que está sendo usado pelo sistema operacional do cliente além disso apresenta umaanálise detalhada com fragmentos do produtor URL. Exemplo do User-agent mostrado pelo Firefox:

18.4 O Documento HTMLO primeiro conceito que deve-se ter em mente ao projetar páginas Web é

que HTML não foi criada para controlar a aparência dos documentos, ao contráriodos processadores de texto e programas de layout de página. As tags de HTMLapenas informam ao navegador o que são os elementos que estão na página. Elesdizem, por exemplo, que um determinado trecho é o título principal do documento eoutro é um item de lista. A formatação do trecho é deixada para o navegador.

Para complicar ainda mais, cada usuário pode modificar a configuraçãopadrão de seu navegador para que o seu programa mostre o texto na fonte (tipo decaractere) que quiser.

Em compensação é muito simples criar uma página básica para colocar naInternet com HTML. Exemplo de uma página HTML:

<html><head><title>Minha primeira página</title></head>

<body>Texto – imagens – links - ...

<body></html>

Saída:

18.5 O Modelo de ObjetosO Modelo de Objeto de Documentos (DOM – Document Object Model) é

uma interface de programação de aplicativos (API) para documentos HTML e XML. É adefinição da estrutura lógica dos documentos e o meio pelo qual um documento éacessado e manipulado.

Na especificação DOM, o termo documento é utilizado no seu sentido maisamplo. XML é usado como o meio de representação de muitos tipos diferentes deinformação que podem ser armazenados em sistemas diversos e muitos seriamtradicionalmente considerados como informação no lugar de documentos. Assimmesmo, o XML apresenta estas informações como documentos e o DOM pode serutilizado para o gerenciamento destas informações.

Com o Modelo deObjeto de

Documentos (DOM),os programadores

podem criardocumentos, navegarpela sua estrutura eadicionar, modificar

ou apagar elementose conteúdo.

Cada navegadormostra a página de

uma forma um poucodiferente, o que

dificulta o trabalho deprogramação visual

na Web.

Page 144: 3way curso-formacao-java-web-completo
Page 145: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

145Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

130

Tudo o que seja encontrado em um documento HTML ou XML pode ser acessado, alterado, apagado ouadicionado através do Modelo de Objeto de Documentos com apenas algumas exceções. Em particular as interfacesDOM para sub-conjuntos internos e externos XML ainda não foram especificados.

Como em uma especificação W3C, um objetivo importante para o Modelo de Objeto de Documentos é o deproporcionar uma interface de programação standard que possa ser utilizada em um número amplo de ambientese aplicativos. O DOM foi concebido para ser utilizado com qualquer linguagem de programação.

18.6 HTML e XMLHTML e XML são primos. Eles derivam da mesma inspiração, o SGML

(Standard Generalized Markup Language). Ambos identificam elementos emuma página e ambos utilizam sintaxes similares. Se você é familiar com HTML,também o será com o XML.

Como o HTML, o XML também faz uso de tags (palavras encapsuladaspor sinais '<' e '>') e atributos (definidos com name="value"), mas enquanto oHTML especifica cada sentido para as tags e atributos, e frequentemente amaneira pela qual o texto entre eles será exibido em um navegador, o XML usaas tags somente para delimitar trechos de dados, deixa a interpretação do dadoa ser realizada completamente para a aplicação que o está lendo. Resumindo,enquanto em um documento HTML uma tag <p> indica um parágrafo, no XMLessa tag pode indicar um preço, um parâmetro, uma pessoa, ou qualquer outracoisa que se possa imaginar, inclusive algo que não tenha nada a ver com um pcomo por exemplo autores de livros.

Os arquivos XML são arquivos texto, mas não são tão destinados àleitura por um ser humano como o HTML. Os documentos XML são arquivostexto porque facilitam que os programadores ou desenvolvedores debuguemmais facilmente as aplicações, de forma que um simples editor de textos podeser usado para corrigir um erro em um arquivo XML. Mas as regras deformatação para documentos XML são muito mais rígidas do que paradocumentos HTML. Uma tag esquecida ou um atributo sem aspas torna odocumento inutilizável, enquanto que no HTML isso é tolerado.

As especificações oficiais do XML determinam que as aplicações nãopodem tentar adivinhar o que está errado em um arquivo, no HTML issoacontece, mas devem parar de interpretá-lo e reportar o erro.

18.7 O Valor Semântico de um DocumentoNas recomendações do W3C, cada elemento (tag) tem sua função própria no (X)HTML. Cada tag tem seu

papel a cumprir, foi criada com um propósito. Criar documentos semanticamente corretos significa utilizar a tagcerta no lugar certo. Por exemplo: <h1> para título superior, <p> para parágrafos, <ul> para lista não ordenada,<form> para formulário, etc...

Criando documentos semanticamente corretos, além de contribuir para uma web melhor, você estarábeneficiando a si próprio. Seu site poderá aparecer primeiro no Google e outros sites de busca, será bastanteamigável aos leitores de tela, será compatível com aplicações futuras, enfim, muitos outros benefícios que vocêdescobrirá quando for desenvolver.

18.8 XMLExtensible Markup Language (XML) é linguagem de marcação de dados (meta-markup language) que

provê um formato para descrever dados estruturados. Isso facilita declarações mais precisas do conteúdo eresultados mais significativos de busca através de múltiplas plataformas. O XML também vai permitir o surgimentode uma nova geração de aplicações de manipulação e visualização de dados via internet.

A grande diferença entreHTML e XML é que o

HTML descreve aaparência e a ações em

uma página na rede,enquanto o XML não

descreve nem aparência eações, mas sim o que cada

trecho de dados é ourepresenta!

Em outras palavras, o XMLdescreve o conteúdo do

documento!

Page 146: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

146Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

131

O XML permite a definição de um número infinito de tags, enquanto no HTML, se as tags podem ser usadaspara definir a formatação de caracteres e parágrafos, o XML provê um sistema para criar tags para dadosestruturados.

Um elemento XML pode ter dados declarados como sendo preços de venda, taxas de preço, um título delivro, a quantidade de chuva, ou qualquer outro tipo de elemento de dado. Como as tags XML são adotadas porintranets de organizações, e também via Internet, haverá uma correspondente habilidade em manipular e procurarpor dados independentemente das aplicações onde os quais são encontrados. Uma vez que o dado foi encontrado,ele pode ser distribuído pela rede e apresentado em um browser como o Internet Explorer 5 de várias formaspossíveis, ou então esse dado pode ser transferido para outras aplicações para processamento e visualização.

18.9 DoctypeO DOCTYPE é uma referência a um DTD, que significa Document Type

Definition, em português Definição de Tipo de Documento. Nele estão descritos oselementos que podem ser usados, quais elementos podem estar dentro de outroselementos, que tags descrevem esses elementos, se um elemento tem conteúdo ounão, se é necessário ter tag de abertura e/ou de fechamento. Enfim, tudo que pode ounão ser usado dentro do nosso documento.

Uma declaração de DOCTYPE é dividida em duas partes, um identificadorpúblico (public identifier) e uma URI. O identificador público diz que tipo dedocumento está sendo usado:

-//W3C//DTD HTML 4.01//EN

Este é o identificador público do HTML 4.01 Strict. A URI aponta para oendereço do DTD na web:

http://www.w3.org/TR/html4/strict.dtd

Note que no exemplo acima, nosso DOCTYPE está dividido em duas linhas. Se você preferir, pode usar umalinha apenas, mas tome o cuidado de incluir um espaço entre o identificador público e a URI.

É extremamente importante identificar o DOCTYPE em todos os seus documentos HTML. Caso contrário,seu browser pode interpretar seu documento de maneira estranha, causando problemas que seriam facilmenteevitados caso o DOCTYPE estivesse presente.

Um browser, ao encontrar a declaração de DOCTYPE não vai ler o documento referenciado em sua URI einterpretar o HTML de acordo com ele. Porém, ele vai se basear no identificador público e na presença ou não deuma URI para decidir como interpretar o documento. Na verdade, isso vai influir na maneira como estilos CSS sãoaplicados ao documento HTML.

Em geral, os browsers têm duas formas de interpretar um documento: Strict Mode ou StandardsCompliance Mode, onde as especificações são seguidas à risca e Quirks mode (Modo de compatibilidade), onde obrowser vai deixar passar alguns erros, interpretando o documento mais ou menos como versões mais antigas debrowser o fariam. Vamos estudar com calma estes modos de interpretação (além de um outro, usado pelo Mozilla)mais a frente.

18.10 A linguagem HTML18.10.1 Introdução

Apesar dessa aparente sofisticação, as páginas Web não passam de documentos de texto simples. Podemser produzidas com qualquer editor de texto, como o Notepad do Windows. A diferença é que as páginas Webcontêm algumas marcas especiais para determinar o papel de cada elemento dentro do texto. Alguns elementossão marcados como títulos, outros como parágrafos. As marcações são usadas também para indicar os links quelevam a outros documentos na rede. Essas marcas são chamadas de tags e estão especificadas dentro da linguagemutilizada para criar as páginas Web, HTML.

DTD é umdocumento ondeestão definidas as

regras para a criaçãode um documento

HTML.

Page 147: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

147Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

132

18.10.2 Estrutura do documento htmlA estrutura básica de um documento HTML é a seguinte:

<HTML> ... </HTML><HEAD> ... </HEAD><TITLE> ... </TITLE><BODY> ... </BODY>

Onde:

<HTML> ... </HTML>São usados para delimitar os comandos HTML, indicam o início e o fim de um documento. O Browser

reconhece a TAG HTML e indica que o documento que virá a seguir deve ser interpretado como HTML.

<HEAD> ... </HEAD>Delimita a seção do cabeçalho do documento onde serão definidos poucos comandos de linguagem, o mais

importante é o título que é exibido na barra de títulos do browser.

<TITLE> ... </TITLE>Definem o título da página que é exibido na barra de títulos do browser. Estas TAGs devem estar sempre

detro das TAGs <head></head>.

<BODY> ... </BODY>Dentro desta TAG estão os elementos da página Web. É onde estão localizados os textos, imagens, links,

etc.

18.10.2.1 Características das Tags HTMLOs comandos em HTML são chamados de TAGs, compreendem de marcas padrões que são ultilizadas para

fazer indicações a um browser.Assim, como em outras linguagens, os comandos tem uma sintaxe própria e obedecem a algumas regras:- As TAGs sempre aparecem entre os sinas “menor que”(<) e “maior que”(>);- Geralmente são usadas aos pares e a TAG de finalização de um comando qualquer é finalizada com aprecedência de uma barra(/).

Em geral:<nome da tag> texto </nome da tag>

onde:<nome da tag>: indica o início da TAG</nome da tag>: indica o final da TAG.

18.10.2.2 AtributosOs atributos HTML devem ser colocados sempre na tag de abertura, logo

após o nome do elemento, precedido de um espaço e é composto de um nome deatributo, um sinal de igual (=) e um valor de atributo, cercado por aspas duplas (") ousimples (‘).

Um bom exemplo de atributo é o id, que serve para identificar, de maneiraúnica, um elemento dentro de um documento HTML. Exemplo:

<p id="nome">

Atributos servem paradefinir uma

propriedade de umelemento HTML.

Page 148: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

148Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

133

Outro bom exemplo é o atributo href, usado para definir uma referência de hipertexto (link) em umelemento A ou LINK. Exemplo:

<a href="http://www.3way.com.br">

A tag alt referida no início do texto é, na verdade, um atributo, usado para definir um texto, que devesubstituir uma imagem, caso a mesma não esteja disponível ou não seja suportada pelo user-agent (alt éabreviatura de alternate, que significa substituto). Exemplo:

<img src="/img/bruno_um_milhao.jpg" alt="Foto">

18.10.2.3 TextosTags de título <H> - "Headings"

Com elas você pode apenas definir o tamanho das letras, mas não o tipo defontes. Veja agora como ficam as tags headings para cabeçalhos que vão do tamanho1 até 6:

<H1> Este é o primeiro nível </H1><H2> Este é o segundo nível </H2><H3> Este é o terceiro nível </H3><H4> Este é o quarto nível </H4><H5> Este é o quinto nível </H5><H6> Este é o sexto nível </H6>

Tag <FONT>Você pode também usar as tags de fonte no lugar das tags de headings. Este tipo de tag é a mais usada,

pois você pode definir mais facilmente o tamanho do texto e fonte que você deseja, e personalizar ainda mais a suapágina. A tag é <FONT>, dentro dela você pode definir vários parâmetros, como cor, tamanho e tipo de letra. Vejaagora como usar as tags de fontes:

Atributo FACEUma evolução que permite a escolha da fonte (tipo de letra) para os textos, a tag é feita assim:

<FONT FACE=fonte_da_letra>Texto</FONT>

Exemplos:

<FONT FACE=Times>Fonte Times New Roman </FONT><FONT FACE=Arial>Fonte Arial </FONT><FONT FACE=Courier>Fonte Courier New </FONT>

Atributo COLOR e SIZE<font size="3"> A palavra terá o tamanho 3</font><font color="red"> A palavra terá a cor vermelha </font>

Podemos também combinar as tags acima:

<font face="Arial" size="2" color="red">Palavra com tamanho 3 e em vermelho

</font>

Texto em HTML podeser formatado de duas

formas, utilizandoHeadings ou a tag

FONT.

Page 149: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

149Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

134

18.10.2.4 Caracteres EspeciaisAs formas de representar caracteres especiais, através de uma notação específica, são chamadas de

Entidades. Existem Entidades de Caracter e Entidades Numéricas.

Exemplo:Caracter Entidade de Caracter Entidade Numérica Descriçãoç &ccedil; &#231; c cedilha (minúsculo)

HTML permite que caracteres especiais sejam representados por seqüências de escape, indicadas por trêspartes: um “&” (e (ê) comercial) inicial, “um número ou cadeia de caracteres correspondente ao caracterdesejado”, e um “;” (ponto e vírgula) final.

Exemplo:Caracter Entidade de Caracter Entidade Numérica Descriçãoã &atilde; &#227; a c/ til

Um caracter bastante útil é o espaço não ignorável, o &nbsp; (Non-breaking space). Este caracter éimportante quando desejamos forçar o browser a não ignorar espaços em branco entre palavras.

Caracter Entidade de Caracter Entidade Numérica DescriçãoNon-breaking space &nbsp; Espaço não ignorável

Exemplo:<body>

<p>Veja como fica com &nbsp;&nbsp;&nbsp;&nbsp; espaço não ignorável!</p></body>

Visualização pelo Browser:

Veja como fica com espaço não ignorável!

Os caracteres ASCII “<” (menor que), “>” (maior que), e “&” (e (ê) comercial) tem significados especiaispara indicar um comando HTML. Mas por vezes queremos exibir estes símbolos na tela e são usados dentro dedocumentos seguindo a correspondência:

Caracter Entidade de Caracter Entidade Numérica Descrição& &amp; &#38; E(ê) comercial< &lt; &#60; Menor que> &gt; &#62; Maior que

Outras seqüências de escape suportam caracteres ISO Latin1. Temos aqui uma tabela com as entidadesmais utilizados em Português:

Tabela de Caracteres Especiais e AcentuaçãoCaracter Entidade de Caracter Entidade Numérica Descrição

&#09; Tabulação Horizontal&nbsp; Espaço não ignorável

" &quot; &#34; AspasÀ &Agrave; &#192; A c/ craseÁ &Aacute; &#193; A c/ acento agudo

Page 150: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

150Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

135

 &Acirc; &#194; A c/ acento circunflexoà &Atilde; &#195; A c/ tilÇ &Ccedil; &#199; C cedilha (maiúsculo)É &Eacute; &#201; E c/ acento agudoÊ &Ecirc; &#202; E c/ acento circunflexoÍ &Iacute; &#205; I c/ acento agudoÓ &Oacute; &#211; O c/ acento agudoÔ &Ocirc; &#212; O c/ acento circunflexoÕ &Otilde; &#213; O c/ tilÚ &Uacute; &#218; U c/ acento agudoÜ &Uuml; &#220; U c/ tremaà &agrave; &#224; a c/ craseá &aacute; &#225; a c/ acento agudoâ &acirc; &#226; a c/ acento circunflexoã &atilde; &#227; a c/ tilç &ccedil; &#231; c cedilha (minúsculo)é &eacute; &#233; e c/ acento agudoê &ecirc; &#234; e c/ acento circunflexoí &iacute; &#237; i c/ acento agudoñ &ntilde; &#241; n c/ tiló &oacute; &#243; o c/ acento agudoô &ocirc; &#244; o c/ acento circunflexoò &otilde; &#245; o c/ tilú &uacute; &#250; u c/ acento agudoü &uuml; &#252; u c/ trema

Veja outras entidades numéricas:

Tabela de Caracteres Especiais e AcentuaçãoCaracter Entidade de Caracter Entidade Numérica Descrição# &#35; Tralha$ &#36; Cifrão% &#37; Percente

Por que usar estas formatações?Os browsers costumam mostrar corretamente os caracteres acentuados

normalmente. Essa prática, embora facilite sobre a digitação dos documentos, não érecomendada, devido a um problema relativo a transmissão desses caracteres.

Chama-se conjunto de caracteres uma representação digital de texto. Umcaracter é um símbolo cujas diversas representações devem significar a mesma coisapara uma comunidade de pessoas. Na prática, porém, existem alguns conjuntos queassociam dois números distintos a um mesmo caracter.

Os Browser já permitem que se escolha a codificação adequada ao conjuntode caracteres relativo aos documentos a serem recuperados. Mas para garantir ainterpretação apropriada de um documento, pode-se inserir uma indicação doesquema de codificação, através do campo:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

Na World Wide Web,os acentos da LínguaPortuguesa chegam atravar os Browsers de

usuários em outrospaíses, que usam um

conjunto de caracteresdiferentes do ISO Latin1, apesar do ISO Latin 1

ser padrão na Web.

Page 151: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

151Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

136

18.10.3 Listas

18.10.3.1 Listas Ordenadas<OL> e </OL> marcam o início e o fim de uma lista ordenada. Os itens da lista são colocados em ordem e

recebem na primeira linha um número ou letra. Devem ser usados junto com o tag <LI>.Exemplo:

<OL><LI>Item 1</LI><LI>Item 2</LI>

</OL>

Atributo: START=nEspecifica o número a partir do qual os itens da lista começam a ser

contados. Sendo que n pode ser um número ou uma letra. Também podem serutilizados números romanos.Exemplo:

<OL START=3><LI>Item 1</LI><LI>Item 2</LI>

</OL>

Atributo: TYPEDefine o tipo de numeração empregada na lista. Pode assumir valores "1 (1,

2, 3, 4, etc) ", "I" (I, II, III, IV, etc), "i" (i, ii, iii, iv, etc), "A" (A,B, ..., Z) ou "a" (a, b, ..., z).Exemplo:

<ol type="A"><li> Treinamento </li><li> Consultoria </li><li> Desenvolvimento </li><li> Manutenção </li>

</ol>

18.10.3.2 Listas não – Ordenadas<UL> e </UL> marcam o início e o fim de uma lista não ordenada. Deve ser usado junto com o tag <LI>. Os

itens da lista recebem marcas gráficas na primeira linha conhecidas como bullets.Exemplo:

<UL><LI>Item 1<LI>Item 2

</UL>

Atributo: TYPEIndica qual o símbolo deve ser usado para demarcar cada elemento da lista. Pode ser os valores disc, circle

ou square.Exemplo:

<ul type="circle"><li> Treinamento </li>

Listas é uma boaforma de organizar as

páginas Web.Podem servir como

resumos ou índices detodo o site, contendolinks para as outraspáginas criadas por

você ou outraspessoas.

Page 152: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

152Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

137

<li> Consultoria </li><li> Desenvolvimento </li><li> Manutenção </li>

</ul>

18.10.3.3 Exemplo de Lista de Conteudo

Listas de DefiniçãoEstas listas são chamadas também “Listas de Glossário”, uma vez que têm o formato:

<DL><DT>termo a ser definido<DD>definição<DT>termo a ser definido<DD>definição

</DL>

Que produz:

termo a ser definidodefinição

termo a ser definidodefinição

Este tipo de lista é muito utilizado para diversos efeitos de organização de páginas.<DL><DT>termo a ser definido<DD>definição

<OL><LI>item de uma lista numerada<LI>item de uma lista numerada

<UL><LI>item de uma lista</UL>

<LI>item de uma lista numerada</OL>

<DT>termo a ser definido<DD>definição</DL>

Saída:termo a ser definido

definição1. item de uma lista numerada2. item de uma lista numerada

item de uma lista3. item de uma lista numerada

termo a ser definidodefinição

Page 153: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

153Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

138

18.10.4 Hyperlinks

O principal poder do HTML vem da capacidade de interligar partes de um texto e imagens a outrodocumento. As interligações entre documentos não se restringe somente a ligações com outras páginas. Empáginas muito longas onde o assunto tem vários tópicos, podemos utilizar índices onde os links tem a função deinterligar os tópicos de um texto e que com apenas um clique em um dos tópicos do índice o item é exibido.

18.10.4.1 TAG <A><A> e </A>

Marca o início e o fim de um link.Atributos:

HREF=URL: indica para onde o link levará (sendo URL o endereço para onde o link está apontando).Exemplo:

<A HREF=”http://www.3way.com.br”>3 Way</A>

18.10.4.2 Caminho RelativoO caminho relativo pode ser usado sempre que queremos fazer referência a um documento armazenado no

mesmo servidor do documento atual. Através do campo de endereço do browser, vemos que este documento estálocalizado em um diretório /www/ do servidor www.3way.com.br. Para escrevermos um link deste documento parao documento doc2.html no diretório /www/exemplos/, tudo que precisamos fazer é escrever:

<A HREF="exemplos/doc2.html">Exemplo de caminho relativo</A>.

18.10.4.3 Caminho AbsolutoUtilizamos o caminho absoluto quando desejamos referenciar um documento que esteja em outro servidor,

por exemplo:

<A HREF="http://www.3way.com.br/">SITE DA 3WAY</A>

que oferece um link para um documento no servidor WWW da 3Way Networks. Com a mesma sintaxe, é possívelescrever links para qualquer servidor de informações da Internet.

18.10.4.4 O Atributo TargetA função do atributo target basicamente é indicar o nome de um frame na página onde um documento

deve ser aberto. Outro controle que você pode ter com ele é se o documento lincado deve ser aberto na própriajanela ou no próprio frame (target:“_self”) onde o próprio link se encontra ou se a URL do link deve ser aberta emoutra janela (target= “_blank”) do seu browser. Essa é a única função do atributo target e é basicamente tudo oque precisar saber sobre ele.Veja o exemplo:

<a href="slide.html" target="_self">slide 1.</a> - irá abrir na mesma página.

<a href="slide.html" target="_blank">slide 2.</a> - irá abrir em outra janela.

<a href="slide2.html" target="dynamic">slide 3.</a> - irá abrir no frame dynamic

<a href="www.google.com” target="miolo">Google</a> - irá abrir no frame miolo

18.10.4.5 Uso com ImagensPara usar imagens em vez de texto nos links é só colocar entre as tags <A></A> as TAGS de imagem quer

veremos um pouco mais a frente. Exemplo:

<A href=”www.google.com.br”><IMG SRC = “foto.jpg”></A>

Page 154: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

154Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

139

18.10.5 TabelasAssim como as listas, no HTML existem elementos específicos para a criação e formatação de tabelas. O

recurso de tabelas é muito interessante e muito usado nas páginas Web. O conceito é o mesmo conhecidousualmente: ela tem linhas e colunas, e na interseção delas estão as células.

Na linguagem HTML você pode inserir nas células tudo o que normalmente faz parte do corpo de umdocumento, como textos, links, imagens, listas e até outras tabelas.

TABLE <table>...</table>Indica o início e o final de uma determinada tabela. Todas as demais

marcas referentes a tabelas - linhas e células - somente serão consideradas seincluidas entre <table> e </table>.

<table>

<tr>

<td>Texto A</td>

<td>Texto B</td>

</tr>

</table>

Atributos da TABELA:01 – BORDER -> Se presente, a tabela apresenta bordas. Se for atributo o

valor 0 (zero), não somente a tabela não apresentará bordas, como o espaçousualmente reservado para bordas será liberado, permitindo a confecção detabelas mais compactas.Exemplo:

<table border="4">

02 – CELLSPACING -> Indica quanto espaço, em pixels, deve ser inserido entre as células da tabela.Exemplo:

<table cellspacing="10">

03 – CELLPADDING -> Indica quanto espaço, em pixels, deve ser inserido entre as bordas das células e seuconteúdo.Exemplo:

<table cellpadding="5">

04 – WIDTH -> Indica a largura da tabela. Usa-se como medida o número de pixels desejado ou umaporcentagem da largura do documento.Exemplo:

<table width="300">

05 – ALIGN -> Indica a posição da tabela no documento. Pode assumir os valores LEFT ou RIGHT, indicando,respectivamente, que a tabela deve estar a esquerda ou a direita do documento, e com o texto fluindo à sua volta.Exemplo:

<table align="center">

06 – BACKGROUND -> Especifica uma imagem que será utilizada como "background" da tabela. A imagemserá "TILED", isto é, repetida de forma a cobrir todo o fundo da tabela.Exemplo:

<table border background="imagem.gif">

Todos os atributos de umatabela são opcionais.

Uma tabela padrão nãopossui bordas e sua alturae largura são as mínimasnecessárias para suportar

seu conteúdo.

Page 155: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

155Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

140

07 – BGCOLOR -> Especifica uma cor de fundo para a tabela.Exemplo:

<table border bgcolor="yellow">

08 – BORDERCOLOR -> Especifica uma cor para as bordas da tabela.Exemplo:

<table border bgcolor="yellow" bordercolor="blue">

18.10.5.1 A TAG <TR>TR <tr>...</tr>

Indica o início e o final de uma determinada linha da tabela (Table Row). Uma linha é composta deelementos.Exemplo:

<table><tr>

<td>Texto A</td><td>Texto B</td>

</tr></table>

Atributos de TR:1 – BGCOLOR -> Define a cor de fundo de uma linha da tabela.

Exemplo:<table>

<tr bgcolor="red"><td>Texto A</td><td>Texto B</td>

</tr></table>

18.10.5.2 A TAG <TD>Indica um elemento (célula) da tabela, vindo do inglês "Table Data". Os elementos contém os dados da

tabela, sejam eles texto, links, imagens, etc.Exemplo:

<table><tr>

<td>Texto A</td><td>Texto B</td>

</tr></table>

Atributos de <TD>:01 – ALIGN -> Define se o conteúdo da célula estará alinhado a esquerda (LEFT), centralizado (CENTER) ou a

direita (RIGHT). Se omitido, o alinhamento fica à esquerda.Exemplo:

<table><tr>

<td align="ceter">Texto A</td><td>Texto B</td>

</tr></table>

Page 156: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

156Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

141

02 – VALIGN -> Define se o conteúdo da célula estará alinhado com seu topo ("TOP"), centralizado("MIDDLE") ou com sua base ("BOTTOM"). Se omitido o alinhamento fica ao meio.Exemplo:

<table><tr>

<td valign="middle">Texto A</td><td>Texto B</td>

</tr></table>

03 – WIDTH -> Define a largura da célula. Pode ser expressa em pixels ou como uma porcentagem dalargura total da tabela.Exemplo:

<table><tr>

<td width="30%">Texto A</td><td width="70%">Texto B</td>

</tr></table>

04 – COLSPAN -> Indica quantas "células de largura" (colunas) a respectiva célula deve ocupar. (Mesclagem)Exemplo:

<table><tr>

<td colspan="2">Texto A</td></tr><tr>

<td>Texto B</td></tr>

</table>

05 – ROWSPAN -> Indica quantas "células de altura" (linhas) a respectiva célula deve ocupar.Exemplo:

<table>

<tr>

<td rowspan="2">Texto A</td>

<td>Texto B</td>

</tr>

<tr>

<td>Texto C</td>

</tr>

</table>

18.10.5.3 A TAG <TH>TH <th>...</th>

Indica um elemento da tabela. A única diferença para TD é que oelemento é identificado como HEADER (cabeçalho) da tabela. Os atributos daTAG <TH> são os mesmos da TAG <TD>.

Usualmente os Browsersexibem o conteúdo de

<TH> em negrito ecentralizado.

Page 157: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

157Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

142

Exemplo:<table>

<tr><th>Texto A</th>

</tr></table>

18.10.5.4 Estrutura Formal das Tabelas

<TABLE width="500" cellspacing="0" border="1" cellpadding="0" align="center"><tr>

<TD align="center" colspan="5" bgcolor="red">Tabela de Preço</TD></tr>

<tr align="center" bgcolor="Gray"><TD>Supermercado</TD><TD>Arroz</TD><TD>Feijão</TD><TD>Óleo</TD><TD>Açucar</TD>

</tr>

<tr align="center"><TD align="left" bgcolor="#CCCCCC">Rede Aleluia</TD><TD>R$5,00</TD><TD>R$7,35</TD><TD>R$1,95</TD><TD>R$2,39</TD>

</tr>

<tr align="center"><TD align="left" bgcolor="#CCCCCC">Alaião</TD><TD>R$4,59</TD><TD>R$6,53</TD><TD>R$2,34</TD><TD>R$2,49</TD>

</tr>

</TABLE>

18.10.6 ImagensIMG <img>

Este TAG é responsável por ligar uma imagem ao documento.

Page 158: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

158Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

143

Atributos de IMG:1 - SRC

Obrigatório, indica a URL da imagem a ser exibida. Podem ser usado URL absoluta(http://www.3way.com.br/images/imagem.gif) ou URL relativa (/images/imagem.gif).Exemplo:

<img src="/images/imagem.gif">

2 - ALTIndica um texto associado à imagem. Quando a imagem não puder ser exibida, o texto é exibido em seu

lugar. Este texto também é exibido quando o cursor fica parado sobre a imagem.Exemplo:

<img src="/images/imagem.gif" alt="Logotipo">

3 - ALIGNDetermina o alinhamento da imagem em relação ao texto existente na mesma linha. Os valores válidos são

"TOP", "MIDDLE", "BOTTOM","LEFT" e "RIGHT".Exemplo:

<img src="/images/imagem.gif" align="top">

4 - WIDTHDetermina a largura, em pixels, da imagem.

Exemplo:

<img src="/images/imagem.gif" width="600">

5 - HEIGHTDetermina a altura, em pixels, da imagem.

Exemplo:

<img src="/images/imagem.gif" height="60">

6 - BORDERDetermina a largura, em pixels, da imagem.

Exemplo:

<img src="/images/imagem.gif" border="2">

7 - HSPACEDetermina a quantidade de espaço deixado em branco aos lados da imagem, de forma que ela não fique

demasiadamente próxima dos outros elementos da página.Exemplo:

<img src="/images/imagem.gif" hspace="10">

8 - VSPACEDetermina a quantidade de espaço deixado em branco acima e abaixo da imagem.

Exemplo:

<img src="/images/imagem.gif" vspace="10">

Page 159: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

159Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

144

18.10.7 FormuláriosFormulários são de grande utilidade para a Web, pois permitem a interatividade entre o usuário, a pessoa

que visualiza as páginas e o Servidor Web. Assim, através da Web, pode-se ler e gravar informações em Banco deDados, gerando enormes possibilidades de uso para a Internet, como por exemplo a de um serviço de venda.Formulários também podem ser gerados para a navegação entre páginas e Sites na Web.

18.10.7.1 A TAG <FORM>Indica a existência de um formulário, isto é, um local da página utilizado pelo usuário para enviar

informações para um local predeterminado (usualmente um Script CGI).Exemplo:

<form method="POST" action="http://www.form.com.br"><p>

<input type="text" name="T1" size="20"><input type="submit" value="Submit" name="B1"><input type="reset" value="Reset" name="B2">

</p></form>

Atributos de FORM:

1 - ACTIONIndica a localização (URL) do script que irá receber e interpretar os dados enviados pelo formulário.

Exemplo:

<form action="http://www.form.com.br">

2 - METHODIndica o formato no qual os dados serão enviados. Pode assumir os valores GET (indica como os dados

serão passados pelo script) ou POST (envia os dados para entrada padrão do sistema operacional).

<form method="POST" action="http://www.form.com.br">

18.10.7.2 A TAG <INPUT>Muitos elementos de um formulário HTML são definidos pela tag <INPUT>. Cada tipo de elemento possui

parâmetros próprios, mas todos possuem pelo menos dois parâmetros em comum:

1 – TYPEDefine o tipo de elemento.

2 – NAMEDefine o nome daquele elemento.

18.10.7.3 Campos de TextoO campo mais comum em formulários. Exibe na tela um campo de entrada de texto com apenas uma linha.

<input type="text" name="" value="" size="" maxlength="">

Atributos do Campo de Texto:1 – Value

É o valor pré-definido do elemento, que aparecerá quando a página for carregada.

Page 160: 3way curso-formacao-java-web-completo

Siga-nos também no Twitter!twitter.com/3waynet

Page 161: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

161Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

145

2 - SizeO tamanho do elemento na tela, em caracteres.

3 – MaxlengthO tamanho máximo do texto contido no elemento, em caracteres.

18.10.7.4 Campos de SenhaTipo de campo semelhante ao anterior, com a diferença que neste caso os dados digitados são substituídos

por asteriscos, por isso são os mais recomendados para campos que devam conter senhas. É importante salientarque nenhuma criptografia é utilizada. Apenas não aparece na tela o que está sendo digitado.

Possui os mesmos atributos do Campo de Texto: Value, Size e Maxlength.

<input type="password" name="" value="" size="" maxlength="">

18.10.7.5 Campos de SeleçãoUtilizado para campos de múltipla escolha, onde o usuário pode marcar mais de uma opção.

<input type="checkbox" name="" value="" checked>

Atributos:1 – Value

O valor que será enviado ao servidor quando o formulário for submetido, no caso do campo estar marcado.

2 - CheckedO estado inicial do elemento. Quando presente, o elemento já aparece marcado.

18.10.7.6 Campos de EscolhaUtilizado para campos de múltipla escolha, onde o usuário pode marcar apenas uma opção. Para agrupar

vários elementos deste tipo, fazendo com que eles sejam exclusivos, basta atribuir o mesmo nome a todos dogrupo. Possui os mesmos atributos do Campo de Seleção.

<input type="radio" name="" value="" checked>

18.10.7.7 Campos de Lista ou Menu

Exibe na tela uma select list.

<select name=""><option value="">texto</option>

</select>

18.10.7.8 Campos com Múltiplas LinhasÉ a mesma TAG usada no Campo de Lista ou Menu, porem, se o parâmetro size tiver o valor 1 e não houver

o parâmetro multiple, exibe na tela uma combo box. Caso contrário, exibe na tela uma select list.

<select name="" size="" multiple>

<option value="">texto</option>

</select>

Atributos:1 – Size

Número de linhas exibidas. Default: 1;

Page 162: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

162Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

146

2 – MultipleParâmetro que, se presente, permite que sejam selecionadas duas ou mais linhas, através das teclas

Control ou Shift;

3 – optionCada item do tipo option acrescenta uma linha ao select;

4 – valueValor a ser enviado ao servidor se aquele elemento for selecionado. Default: o texto do item;

5 – textValor a ser exibido para aquele item. Não é definido por um parâmetro, mas pelo texto que fica entre as

tags <option> e </option>.

Os Atributos da TAG <SELECT> serve tanto para os Campos de Lista ou Menu quanto para os Campos comMúltiplas Linhas.

18.10.7.9 BotõesUtilizado normalmente para ativar funções de scripts client-side (JavaScript, por exemplo). Sem essa

utilização, não produz efeito algum.

<input type="button" name="" value="">

Atributo:1 – Value

O texto que aparecerá no corpo do botão.

18.10.7.10 Upload de ArquivosExibe na tela do browser um campo de texto e um botão, que ao clicado abre uma janela para localizar um

arquivo no disco. Para utilizar este tipo de componente, o formulário deverá utilizar o método POST e ter oparâmetro enctype com o valor multipart/form-data.

<input type="file" name="" size="">

Atributo:1 – Size

O tamanho do campo de texto exibido.

18.10.7.11 FieldsetAs Tag de Fieldset são usados para dividir controles similares de formulários em grupos.

Atributos:

1 – LegendTítulo da FieldSet;

2 – AlignUsado para alinhar o Título da FieldSet.

18.10.7.12 LabelA tag <label> é utilizada em conjunto com elementos de formulário, propiciando uma maior facilidade de

acesso a esses elementos.

Page 163: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

163Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

147

18.10.8 Outras Tags18.10.8.1 - Meta informações <meta>

Meta tags são códigos html, esses códigos ajudam alguns sites de busca,como Altavista e vários outros, a encontrar o seu site mais rapidamente. Essescódigos organizam as informações que os sistemas de busca precisam para mostrar asua página em um resultado de busca feita por um usuário.

As tags ficam entre os comandos <head> e </head>, que ficam bem no topoda página. Eles podem ser colocados em todas as páginas do seu site, somente nasprincipais, ou ainda só na página inicial.

Esta outra meta é usada para informar quem é o autor da página, você podepor exemplo caso, queira, informar seu nome e também seu email. Exemplo:

<meta name= "author" content="Aluno – [email protected]">

Insere a descrição da página que aparecerá em alguns sistemas de buscas.Pequena porque esta deve conter por volta de 255 caracteres, ou seja, uma brevedescrição. Exemplo:

<meta name= "description" content="descricao do seu site">

Esta tag meta é usada para indicar a alguns sites de busca palavras chave (keywords) que podem ser usadaspara identificar o conteúdo do seu site. Elas são separadas por uma vírgula (,). Exemplo:

<meta name= "keywords" content="Palavras-chave sempre separadas por vírgula">

18.10.8.2 - FramesPossibilita, por exemplo, que se determine uma área da tela para ser a página principal e outras áreas para

menus ou links. Isso usado de maneira coordenada pode ser de grande ajuda na navegabilidade pelas páginas deseu site. O primeiro passo para se criar uma estrutura usando frames é definir o Frameset ou conjunto de frames,que indica como será estruturado cada quadro na tela em termos de linhas (rows) e colunas (cols), e quais páginasdeverão ser apresentadas em cada um desses quadros.

No primeiro exemplo vamos dividir a tela em duas áreas: um menu lateral e uma área principal ocupando amaior parte da tela.

<frameset cols="100 , * "><frame src= menu.html name = "area-menu"><frame src= apresentacao.html name="area-principal"></frameset>

Esse código contéminformações sobre o

título, palavras-chavee descrição do seu

site.

Frames ou quadrospermitem a divisão datela de exposição do

browser em diferentesáreas onde pode-se

apresentar diferentespáginas.

Page 164: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

164Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

148

No exemplo anterior temos a tela dividida em duas áreas, definidas por duas colunas verticais. A primeira,com tamanho de 100 pixels, recebeu o nome de area-menu e nela estamos apresentando a página menu.html. Asegunda ocupa o restante da tela ( indicado por "*" ), recebeu o nome de area principal, e nela estamosapresentando inicialmente a página apresentacao.html.

18.10.8.3 - IFrameO iframe é um recurso em desuso, embora seja muito funcional. Ele é muito prático pois cria uma janela

onde você quiser para colocar uma página de html. Basta você colocar o seguinte código aonde deseja que a suajanela do Iframe apareça:

<iframe name=”enquete” src="enquete.html" frameBorder=”0” width=”400”height=”150” scrolling=auto></iframe>

Onde:- name: é o nome da janela, ele será usado caso você queira criar links que abram dentro do iframe, usando oatributo target da TAG de links <a></a>.- src: é a página que será aberta dentro do iframe.- frameborder: borda do frame.- width e height: largura e altura do iframe, respectivamente.- scrolling: barra de rolagem.

No caso de colocar um iframe num post, você deve fazer o upload do arquivo html e das figuras (se tiver) edepois colocar o código acima no post alterando os dados como você preferir. Lembre-se que o HTML trabalhasempre com referências. Todos os arquivos vão ficar no mesmo nível, portanto não utilize nome de pastas para osatributos src, tanto das imagens quando do iframe.

18.11 Cascading Style Sheet – CSS18.11.1 Introdução

A CSS traz para a WEB a mesma conveniência de um só lugar para definir osestilos que estão disponíveis na maioria dos editores de texto.

Embora a metodologia da CSS funcione com a HTML, ela não é um HTML. Emvez disso, a CSS é um código separado que amplia as capacidades do HTML,permitindo que você redefina o modo como as tags HTML funcionam.

18.11.2 Usando CSS com HTMLO melhor da folha de estilo em cascata é que ela é incrivelmente fácil de

configurar. Não exige plug-ins ou softwares diferente, apenas regras.Podemos definir regras que dizem a uma tag HTML especifica o seu

conteúdo, ou pode criar regras genéricas e, em seguida, aplicá-las às TAGS comoquiser. Existem três etapas na regras da CSS.

1 - Seletor HTML: A parte de texto de uma TAG HTML se chama seletor.Exemplo:

p {font: bold 12pt times;}

2 - Classe: Uma classe é uma regra de agente livre que pode ser aplicada a qualquer tag HTML de acordocom a sua vontade. Você pode dar à classe o nome que quiser. Uma classe é o tipo de seletor mais versátil.Exemplo:

.minhaclasse{font bold 12pt times;}

Você pode definir umaCSS em uma

localização centralpara afetar a

aparência das tagsHTML em uma única

página da WEB ou emtodo um site da WEB.

Page 165: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

165Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

149

3 - ID: As regras de ID funcionam como os seletores de classe, porque podem ser aplicadas, a qualquer TagHTML. Os seletores de ID, porém, geralmente são aplicados somente uma vez na página a determinada TAGHTML para criar um objeto para ser usado com uma função JavaScript. Exemplo:

#objeto{font bold 12pt times;}

18.11.2.1 Estilos no próprio ElementoEmbora a CSS signifique nunca ter que definir a aparência de cada tag individualmente, você ainda tem a

liberdade de definir os estilos dentro das TAGs individuais. Isso é particularmente útil para substituir cada um dosoutros estilos que estão definidos para a página. Veja o exemplo abaixo:

<html>

<head>

<title>CSS</title>

</head>

<body style="background-color:black;">

<br>

<h1 style="color:red">Cascading Style Sheet</h1>

<h2 style="color:yellow">CSS</h2>

<BR>

<P style="color:White">

HTML <br>

HTML <br>

</p>

</body>

</html>

18.11.2.2 Estilos no Escopo da PáginaA principal utilização da CSS é para definir as regras de todo um documento. Para fazer isso, você deve

inclui as regras de estilo no título do documento aninhado dentro de um conteiner de estilo.Embora os resultados do acréscimo de estilo dessa forma possam parecer idênticos ao acréscimo dos

estilos diretamente em uma TAG HTML, a colocação dos estilos em uma localização comum permite alterar osestilos de um documento a partir de um único lugar. Veja o mesmo exemplo acima como ficaria:

Page 166: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

166Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

150

<html><head>

<title>CSS</title><style type="text/css">

body{background-color:black;}h1{color:red;font-size:25px;}h2{color:yellow;font-size:80px;}p{color:white;}

</style></head><body>

<br><h1>Cascading Style Sheet</h1><h2>CSS</h2><BR><P>

HTML<br>HTML <br>

</P></body>

</html>

18.11.2.3 Estilos Definidos em Arquivos ExternosÉ um arquivo de texto normal, que pode ter qualquer extensão, apesar de podermos atribuir a extensão

.css para lembrarmos que tipo de arquivo é. O texto que devemos incluir deve ser escrito exclusivamente emsintaxe CSS, ou seja, seria errado incluir o código HTML nas TAGS e etc.

Linkando a página com a folha de estilos, para isso, vamos colocar a TAG <LINK> com os atributos:- rel="STYLESHEET" indicando que o link é com uma folha de estilos- type="text/css" porque o arquivo é de texto, em sintaxe CSS- href="estilos.css" indica o nome do arquivo fonte dos estilos

Vejamos uma página web inteira que linka com a declaração de estilos anterior.

Page 167: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

167Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

151

<html><head>

<link rel="STYLESHEET" type="text/css" href="estilos.css"><title>P&aacute;gina que lê estilos</title>

</head><body>

<h1>P&aacute;gina que lÊ estilos</h1>Esta p&aacute;gina tem no cabeçalho a etiqueta necessária paralinkar com a folha de estilos. é muito f&aacute;cil.<br><br><table width="300" cellspacing="2" cellpadding="2" border="0">

<tr><td>Isto est&aacute; dentro de um TD, logo tem estilopróprio, declarado no arquivo externo</td>

</tr><tr>

<td>A segunda fila do TD</td></tr>

</table></body>

</html>

18.11.3 Declaração de EstilosDeclaração de estilos é o fragmento de uma regra CSS dentro dos colchetes { }. A declaração CSS compõe-se

de duas partes: a propriedade e o valor e uma regra CSS pode conter várias declarações separadas por um ponto-e-vírgula. Por exemplo:

P {font-size : 12pt;font-family : arial,helvetica;font-weight : normal;

}H1{

font-size : 36pt;font-family : verdana,arial;text-decoration : underline;text-align : center;background-color : Teal;

}TD{

font-size : 10pt;font-family : verdana,arial;text-align : center;background-color : 666666;

}BODY {

background-color : #006600;font-family : arial;color : White;

}

Page 168: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

168Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

152

18.11.4 SeletoresSeletor é uma entidade que identifica um elemento HTML ou define uma classe ou pseudo classe na qual a

regra de estilo será aplicada.Por exemplo:

p {font-size: 12px;}

O seletor é p (elemento HTML parágrafo) e a regra CSS escrita determina que os parágrafos terão uma fontede tamanho 12px.

18.11.4.1 Seletores de ClassesSeletor tipo classe tem uma abrangência mais ampla. É um seletor cujo

nome você "inventa" e pode ser aplicado a qualquer elemento HTML. A sintaxe paraeste tipo de seletor é um nome (nome da classe) precedido de um . (ponto) O nomepode conter letras de a-z, A-Z, números de 0-9, hífen, ou caracter de escape.Caracteres Unicode 161-255, bem como qualquer caracter Unicode de códigonúmerico, contudo não podem começar com um (traço) ou um número. Exemplo:

.minhaclasse {color: #FF0000;}

18.11.4.2 Sintaxe Ultilizada para Definição de SeletoresA sintaxe de uma regra css obedece o seguinte padrão:

seletor

{

propriedade: valor

}

18.11.5 Propriedade de Estilo CSSAs propriedades de formatação em CSS possuem duas dimensões: a

dimensão textual (o código) e a dimensão visual (o efeito dos códigos).

18.11.5.1 Configurações EssenciaisAs configurações mais essenciais realizadas com as propriedades CSS é em relação a tabelas

<table></table>, blocos que ficam entre as TAGS <div></div>, Tags de marcação como:<span></span> - é utilizada para a configuração de trechos de parágrafos;<strong></strong> - é ultilizada no HTML para deixar o texto em negrito;<p></p> - marcação de parágrafos.

Essas configurações na maioria das vezes são setadas para alteração no visual de textos e alteração noposicionamento de determinadas partes do documento.

18.11.5.2 Tabela de UnidadesAs unidades de medida de comprimento CSS referem-se a medidas na horizontal ou na vertical, em sentido

mais amplo, em qualquer direção.O formato para declarar o valor de uma unidade de medida CSS é um número com ou sem ponto decimal

imediatamente precedido do sinal '+' (mais) ou do sinal '-' (menos), sendo o sinal '+' (mais) o valor default eimediatamente seguido por uma unidade identificadora válida: p, ex, px, em, deg, etc... A unidade identificadora éopcional quando se declara um valor '0' (zero).

Algumas das propriedades CSS permitem que sejam declarados valores negativos para unidades de medida.A adoção de valores negativos podem complicar a formatação do elemento e devem ser usados com cautela.

Quando se trabalha oCSS com seletores,

significa que todos oselementos do tipodefinido na página

terá ocomportamento

descrito no CSS doseletor.

Page 169: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

169Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

153

São dois os tipos de unidade de medida de comprimento CSS:Unidade relativa - é aquela tomada em relação a uma outra medida. Folhas

de Estilo em Cascata que usam unidades de comprimento relativas são maisapropriadas para ajustes de uso em diferentes tipos de mídia. (p. ex., de uma tela demonitor para uma impressora laser).

O valor é tomado em relação:em: ...ao tamanho da fonte ('font-size') herdada;ex: ...a altura da letra x (xis) da fonte herdada;px: ...ao dispositivo (midia) de exibição;%: ... a uma medida previamente definida.

Unidade absoluta - é aquela que não esta referenciada a qualquer outraunidade e nem é herdada. São unidades de medida de comprimento definidas nossistemas de medidas pela física e em fim são os conhecidos: centímetros, polegadase etc... São indicadas para serem usadas quando as mídias de exibição sãoperfeitamente conhecidas.

pt - point :1/72 in;pc - pica :12 points ou 1/6 in;mm - milímetro :1/10 cm;cm - centímetro :1/100 m;in - polegada :2,54 cm;

Abaixo exemplos ilustrativos do uso destas medidas de comprimento CSS:div { margin: 1.5em; }h4 { margin: 2ex; }p { font-size: 14px; }.classe { padding: 90%; }hr { width: 14pt; }h1 { margin: 1pc; }h2 { font-size: 4mm; }p.classe { padding: 0.3cm; }h5.classe { padding: 0.5in; }

Entendendo as unidades de medida CSS1 - A unidade de medida - pixel

A unidade de medida de comprimento pixel é relativa a resolução dodispositivo de exibição (a tela de um monitor). Sem entrar em maioresconsiderações teóricas a mais simplista definição de pixel que encontrei é esta:

Considere um dispositivo de exibição construido com uma densidade de 90dpi (dpi = dots per inch = pontos por polegada). Por definição, a referência padrãopara pixel é igual a um ponto no citado dispositivo. Daí pode-se concluir que 1 pixelnaquele dispositivo de exibição é igual a 1/90 inch = 0,28 mm. Para uma densidadede 300 dpi 1 pixel é igual a 1/300 inch = 0,085mm. Assim, pixel é uma medida relativaa resolução do dispositivo de exibição.

2 - A unidade de medida - emA unidade de medida de comprimento em referencia-se ao tamanho da

fonte (letra) do seletor onde for declarada. Quando em for declarada para apropriedade font-size referencia-se ao tamanho da fonte (letra) do elemento pai.Quando em for declarada para o elemento raiz do documento referencia-se ao valorinicial (default) do tamanho de fonte (letra). Os exemplos abaixo esclarecem asdefinições:

Se valores negativosnão forem suportados

pela aplicação deusuário, eles serãoconvertidos para ovalor mais próximo

suportado, isso podetornar-se desastroso

para um layout.

Pixel é o menorelemento em um

dispositivo deexibição, ao qual épossivel atribuir-se

uma cor.

Page 170: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

170Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

154

h1 { font-size: 1.2em }

line-height de <h1> será 20% maior do que o tamanho das letras de <h1>

h1 { font-size: 1.2em }

font-size de <h1> será 20% maior do que o tamanho das letras herdado por <h1>, exemplo: se h1 estivercontido numa div com font-size=10px então font-size de h1 = 12px

3 - A unidade de medida - exA unidade de medida de comprimento ex é igual a altura da letra x(xis) minúscula.

4 - A unidade de medida - percentagem, %Valores em percentagem são relativos a um outro valor anterior declarado. Este valor anterior há que estar

bem definido e em geral esta definição está em uma determinada propriedade do mesmo elemento, napropriedade do elemento "pai" (por exemplo: uma medida CSS de comprimento) ou mesmo no contexto geral daformatação (por exemplo: a largura do bloco de conteúdo).

p { font-size: 10px }

p { line-height: 120% }

18.11.5.3 FontesAs propriedades para as fontes, definem as características (os valores na regra CSS) das letras que

constituem os textos dentro dos elementos HTML. As propriedades básicas para fontes são as listadas abaixo:color:...................cor da fontefont-family:.........tipo de fontefont-size:.............tamanho de fontefont-style:...........estilo de fontefont-variant:........fontes maiúsculas de menor alturafont-weight:........quanto mais escura a fonte é (negrito)font:.....................maneira abreviada para todas as propriedades

Valores válidos para as propriedades da fonte:color:

1. código hexadecimal: #FFFFFF2. código rgb: rgb(255,235,0)3. nome da cor: red, blue, green...etc

font-family:1. family-name: define-se pelo nome da fonte,

p. ex:"verdana", "helvetica", "arial", etc.2. generic-family: define-se pelo nome genérico,

p. ex:"serif", "sans-serif", "cursive", etc.

font-size:1. xx-small2. x-small3. small4. medium5. large6. x-large

Page 171: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

171Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

155

7. xx-large8. smaller9. larger10.length: uma medida reconhecida pelas CSS (px, pt, em, cm, ...)11.%

font-style:1. normal: fonte normal na vertical2. italic: fonte inclinada3. oblique:fonte obliqua

font-variant:1. normal: fonte normal2. small-caps: transforma em maiúsculas de menor altura

font-weight:1. normal2. bold3. bolder4. lighter5. 1006. 2007. 3008. 4009. 50010.60011.70012.80013.900

Exemplo:

<html>

<head>

<style>

div{font-family: “Purisa”; font-size:50px; font-style: italic; }

</style>

</head>

<body>

<div>Texto na Fonte Purisa,<br>

tamanho de 50px<br>

estilo em itálico

</div>

</body>

</html>

Page 172: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

172Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

156

18.11.5.4 CoresBasicamente existem 6 maneiras diferentes de definir cores no CSS. E, se considerarmos que para as duas

primeiras regras é válido usar letras minúsculas, existem 8 maneiras de se definir uma cor em uma regra CSS.Exemplos para definir a cor vermelho:

TR {background-color: #FF0000;}TR {background-color: #F00;}TR {background-color: rgb(255, 0, 0);}TR {background-color: rgb(100%, 0%, 0%);}TR {background-color: red;}TR {background-color: ThreeDShadow;}

Definir uma cor pelo seu código hexadecimalEsta é a maneira mais conhecida de definir uma cor. Convém ressaltar que em uma regra CSS é indiferente

usar letras maiúsculas ou minúsculas na sintaxe hexadecimal de cores e também que é válido abreviar a notaçãopara três dígitos. Na notação abreviada cada um dos três dígitos é automaticamente dobrado conforme exemplos aseguir:

#FFF = #FFFFFF

#CF9 = #CCFF99

#cde = #ccddee

#49c = #4499cc

Não é do escopo desta apostila detalhar o código hexadecimal, contudo ressaltamos que os dezesseisdígitos hexadecimais são: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F e somente eles são válidos para definir uma cor, podendoem geral ser usada qualquer combinação deles. Assim: #FFDDHH não define uma cor, pois H não é válido.

Definir uma cor pelo seu código rgbRGB é abreviatura para:r = red (vermelha)g = green (verde)b = blue (azul)

Assim o código rgb(xxx, yyy, zzz) indica uma cor obtida com a mistura de uma quantidade xxx de vermelhocom yyy de verde e com zzz de azul. Duas são as maneiras de se definir a quantidade de cada uma das três cores:

Page 173: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

173Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

157

- Uma faixa de númeração de 0 (zero) até 255- Em percentagem de 0% até 100%

Não é válido usar em uma definição número e percentagem. Exemplos:- definições válidas

rgb(145, 230, 50) - rgb(20%, 0%, 70%)

- definição não válidargb(255, 20%, 120)

Definir cor por palavra-chaveVocê pode definir uma cor usando o nome da cor. Os nomes de cor válidos são os listados nas

recomendações CSS do W3C. As recomendações para CSS listam as seguintes 17 cores:

Palavra-Chave Código Hexadecimal Código RGB

Aqua #00FFFF 0,255,255

Black #000000 0,0,0

Blue #0000FF 0,0,255

Fuchsia #FF00FF 255,0,0

Gray #808080 128,128,128

Green #008000 0,128,0

Lime #00FF00 0,255,0

Maroon #800000 128,0,0

Navy #000080 0,0,128

Olive #808000 128,128,0

Orange #FFA500 255,165,0

Purple #800080 128,0,128

Red #FF0000 255,0,0

Silver #C0C0C0 192,192,192

Teal #008080 0,128,128

White #FFFFFF 255,255,255

Yellow #FFFF00 255,255,0

Exemplo:p {color: aqua;}

div {background-color: teal;}

Definir cor baseado no sistema operacional do usuárioAs recomendações para CSS preconizam a definição da cor baseado nas cores adotadas pelo sistema

operacional do usuário. Este tipo de unidade de definição de cor denominado System Colors está em desuso e nãodeverá constar das futuras recomendações CSS3. Trata-se de uma lista de nomes de cores válidas à semelhança dalistagem de cores por palavra-chave e que se refere a áreas do sistema operacional.

As cores previstas são:

Page 174: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

174Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

158

ActiveBorder, ActiveCaption, AppWorkspace, Background, ButtonFace, ButtonHighlight, ButtonShadow,ButtonText, CaptionText, GrayText, Highlight, HighlightText, InactiveBorder, InactiveCaption,InactiveCaptionText, InfoBackground, InfoText, Menu, MenuText, Scrollbar, ThreeDDarkShadow,ThreeDFace, ThreeDHighlight, ThreeDLightShadow, ThreeDShadow, Window, WindowFrame,WindowText

Embora os valores CSS sejam case insensitives recomenda-se usar a grafia com letras maiúsculas eminúsculas ao se escrever o nome das cores de sistema por razões de legibilidade. Exemplos:

p {color: ThreeDLightShadow;}

div {background: ButtonShadow;}

18.11.5.5 BordasAs propriedades para as bordas, definem as características (os valores na regra CSS) das quatro bordas de

um elemento HTML. As propriedades para as bordas são as listadas abaixo:

border-width:...............espessura da bordaborder-style:................estilo da bordaborder-color:................cor da borda

border-top-width:...........espessura da borda superiorborder-top-style:............estilo da borda superiorborder-top-color:............cor da borda superior

border-right-width:........espessura da borda direitaborder-right-style:..........estilo da borda direitaborder-right-color:..........cor da borda direita

border-bottom-width:.......espessura da borda inferiorborder-bottom-style:.........estilo da borda inferiorborder-bottom-color:.........cor da borda inferior

border-left-width:.........espessura da borda esquerdaborder-left-style:...........estilo da borda esquerdaborder-left-color:...........cor da borda esquerda

border-top:.........maneira abreviada para todas as propriedades da borda superiorborder-right:.......maneira abreviada para todas as propriedades da borda direitaborder-bottom:..maneira abreviada para todas as propriedades da borda inferiorborder-left:.........maneira abreviada para todas as propriedades da borda esquerdaborder:................maneira abreviada para todas as quatro bordas

Valores válidos para as propriedades das bordascolor:

1. código hexadecimal: #FFFFFF2. código rgb: rgb(255,235,0)3. nome da cor: red, blue, green...etc

style:1. none: nenhuma borda2. hidden: equivalente a none

Page 175: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

175Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

159

3. dotted: borda pontilhada4. dashed: borda tracejada5. solid: borda contínua6. double: borda dupla7. groove: borda entalhada8. ridge: borda em ressalto9. inset: borda em baixo relevo10.outset: borda em alto relevo

width:1. thin: borda fina2. medium: borda média3. thick: borda grossa4. length: uma medida reconhecida pelas CSS (px, pt, em, cm, ...)

18.11.5.6 Box Model ( Modelo de Caixa )O box model (modelo das caixas) em CSS, descreve os boxes (as caixas) geradas pelos elementos HTML. O

box model, detalha ainda, as opções de ajuste de margens, bordas, padding e conteúdo para cada elemento.Para ilustrar este conceito, considere um cabeçalho de nível 1 e um parágrafo, conforme marcação a seguir:

h1 { background-color:#99CC99; }

p { background-color:#FFCCCC; }

A seguir acresentamos uma regra CSS para a largura dos elementos :

h1 {background-color:#99CC99;

width:400px;

}

p {

background-color:#FFCCCC;

width:350px;

}

No próximo passo acrescentamos uma regra CSS para as bordas dos elementos:

h1 {background-color:#99CC99;width:400px;border:10px solid #FF0000;

}

p {background-color:#FFCCCC;width:350px;border:5px solid #0000FF;

}

A seguir acresentamos uma regra CSS para os espaçamentos dos elementos:

Page 176: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

176Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

160

h1 {background-color:#99CC99;width:400px;border:10px solid #FF0000;padding:20px;

}p {

background-color:#FFCCCC;width:350px;border:5px solid #0000FF;padding:10px;

}

A seguir acrescentamos uma regra CSS para as margens dos elementos:

h1 {background-color:#99CC99;width:400px;border:10px solid #FF0000;padding:20px;margin:50px;

}p {

background-color:#FFCCCC;width:350px;border:5px solid #0000FF;padding:10px;margin:50px;

}

18.11.5.7 Aplicando Estilos aos Principais Elementos HTMLPara aplicar estilos aos elementos HTML, como já dito, é so declarar no

seletor a TAG em que você quer definir as propriedades do CSS. Usando as classes,você pode inventar um nome ao seletor e atribuir propriedades CSS ao mesmo.Exemplo:

.minhaClasse{ color:#red; font-style: bold; }

Para que as propriedades definidas no classe minhaClasse tenham efeito,devemos colocar o nome da classe no atributo class de qualquer elemento HTML. Exemplo:

<p class=”minhaClasse”> Imprime esse texto na cor Vermelha e em negrito</p>

<strong class=”minhaClasse”>Outro elemento com as mesmas propriedades</strong>

Construindo nossos documentos HTML, em determinado momento queremos aplicar um bloco depropriedades CSS a um único elemento. Quando esse tipo de definição se faz essencial é necessário incluirmos noelemento um ID setando dentro dele qualquer nome, que é o atributo pelo qual vamos declarar as propriedadesCSS. Exemplo:

<div id=”corpo”>...</div>

Existem outros doismodos de aplicar

estilos a umdeterminado

elemento no HTML:classes e ids.

Page 177: 3way curso-formacao-java-web-completo
Page 178: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

178Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

161

Aplicando as propriedades CSS ao elemento:

#corpo{border-top:2px dotted #FF00FF;font-family: Verdana;color: #C0C0C0;padding: 2px;

}

De acordo como definimos o seletor acima, as propriedades só irão ser aplicadas para o elemento no qualseu ID for corpo. Dessa maneira aplicamos efeitos CSS a um único elemento, visando a integridade do seudocumento HTML.

18.11.5.8 Configurações para Barra de RolatemExistem propriedades no CSS capaz de estilizar a barra de rolagem do Internet Explorer. No Ópera este

recurso não está ativado por padrão, nem há fixação disponíveis na interface dousuário. O usuário tem que adicionar uma linha ao seu arquivo opera6.ini. Na "[UserPrefs]", a linha a seguir deve ser adicionado:Enable Scrollbar Colors=1

Qualquer prática de estilização que interfira diretamente com o navegador dousuário, pode estar dificultando acessibilidade ou conflitando com preferênciaspessoais, portanto, use todo seu esforço e poder de persuasão no sentido deconvencer seu cliente a não adotar esta prática pois é uma tecnologia particular edeve ser evitada.

Exemplo:

body {scrollbar-arrow-color:#000000;scrollbar-3dlight-color:#000000;scrollbar-highlight-color:#FF0000;scrollbar-face-color:#FFFFFF;scrollbar-shadow-color:#0000FF;scrollbar-darkshadow-color:#FFFF00;scrollbar-track-color:#00FF00;

}

18.11.5.9 ListasA propriedade list define as características (valores) das listas HTML. As propriedades list são as listadas

abaixo:list-style-position..........onde o marcador da lista é posicionado;list-style-type...............tipo do marcador da lista;list-style........................maneira abreviada para todas as propriedades;

Valores válidos para as propriedades do lista:

list-style-position:1. outside: marcador fora do alinhamento do texto2. inside: marcador alinhado com texto

list-style-type:1. none: sem marcador

Outros browsers nãosuportam esse

recurso.

Page 179: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

179Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

162

2. disc: círculo (bolinha cheia)3. circle: circunferência (bolinha vazia)4. square: quadrado cheio5. decimal: números 1, 2, 3, 4, ...6. decimal-leading: zero7. lower-roman: romano minúsculo i, ii, iii, iv, ...8. upper-roman: romano maiúsculo I, II, III, IV, ...9. lower-alpha: letra minúscula a, b, c, d, ...10. upper-alpha: letra maiúscula A, B, C, D, ...11. lower-greek12. lower-latin13. upper-latin14. hebrew15. armenian16. georgian17. cjk-ideographic18. hiragana19. katakana20. hiragana-iroha21. katakana-iroha

18.11.5.10 Marcadores CustomizadosUsando a propriedade list-style-image é possível customizar os marcadores das listas HTML usando uma

imagem qualquer. O valor dessa propriedade é definido pela URL ( caminho ) da imagem que se quer ter comomarcador.

list-style-image:noneURL: url(caminho/marcador.gif)

Exemplos:

<html><head>

<title>LISTA CUSTOMIZADO</title>

<style>ul{

list-style-image: url("img/marcador.gif");}

</style>

<body><ul>

<li>Item 1</li><li>Item 2</li><li>Item 3</li>

</ul></body>

</html>

Page 180: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

180Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

163

18.11.5.11 HyperlinksOs efeitos em links são possíveis através de declarações de regras de estilo para as pseudo classes do

elemento <a> do HTML. As pseudo classes são usadas em CSS, para adicionar efeitos diferentes a alguns seletores,ou a uma instância de alguns seletores.

A sintaxe das pseudo classes:

Seletor : pseudo classe {propriedade: valor}

As classes em CSS podem também ser usadas com pseudo classes. Esta regra permite que você definadiferentes efeitos para links localizados em diferentes lugares em uma mesma página. No último item deste tutorial"Diferentes estilos de links em uma mesma página web" veremos este efeito.

seletor.class: pseudo-class { propriedade: valor }

São quatro as pseudo classes dos links:a:link.........define o estilo do link no estado inicial;a:visited....define o estilo do link visitado;a:hover.....define o estilo do link quando passa-se o mouse sobre ele;a:active.....define o estilo do link ativo (o que foi "clicado").

Exemplo:

a:active{color:#FF0000;

}

a:houver{color:#0000FF;

}

a:link{color:#00FF00;

}

a:visited{color:C0C0C0;

}

Page 181: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

181Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

164

18.11.5.12 BotõesOs efeitos CSS em botões são gerados a partir de uma classe. Exemplo:

.botao {border: 1px solid #000000; - Definição da borda do botãofont-family: Verdana;padding: 2px;background: #CCCCCC;

}

Esse mesmo efeito pode ser gerado a partir do seletor input, entretanto todos os campos input dodocumento receberiam essas declarações. Exemplo:

Input {border: 1px solid #000000;font-family: Verdana;padding: 2px;

}

18.11.5.13 Campos para Entrada de TextosOs efeitos CSS em Campos de entrada de textos ( input com o atrituto type = text ) são declaradas a partir

de uma classe ou declaradas no próprio elemento. O elemento input tem, geralmente, as mesmas propriedadespara todos as diferenciações de tipos:

Exemplo:

.formulario {border:1px solid #006699; - define as propriedades da borda do

campo;font-family:Verdana; - define qual será a fonte do campo texto;size:12px; - define o tamanho da fonte;background: #CCCCCC; - define a cor de fundo.

}

18.11.5.14 Caixas de SeleçãoExemplo:

.select {border:1px solid #000000; - define a propriedade da borda ( não

aceito no IE )font-family:Arial; - define qual será a fonte do campobackground: #FF00FF;size: 10px;

}

18.11.5.15 Manipulando CursoresUsando o CSS é possível alterar o cursor em algumas partes do documento ou em seu conteúdo geral.

Abaixo segue a lista de cursores disponíveis por padrão no Windows.

default (seta)crosshair (cruz)e-resize (seta que aponta à direita)hand (mão)

Page 182: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

182Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

165

help (sinal de pergunta)move (cruz com setas nas extremidades)n-resize (seta que aponta para cima)ne-resize (seta que aponta ao nordeste)nw-resize (seta que aponta ao noroeste)pointer (mão)s-resize (seta que aponta para baixo)se-resize (seta que aponta para o sudeste)sw-resize (seta que aponta para o sudoeste)text (I-beam)w-resize (seta que aponta à esquerda)wait (relógio de areia)

Alterando em todo o documento:

<html><title>Alterando o cursos em todo o documento</title><head>

<style type="text/css">body {cursor: crosshair}

</style></head><body></body>

</html>

Alterando em algumas partes do documento:

<html><head> <title>Mudar o cursor</title> </head><body>

<p style="cursor: default">default</p><p style="cursor: crosshair">crosshair</p><p style="cursor: pointer">pointer</p><p style="cursor: move">move</h4><p style="cursor: nw-resize">nw-resize</p><p style="cursor: ne-resize">ne-resize</p><p style="cursor: n-resize">n-resize</p><p style="cursor: e-resize">e-resize</p><p style="cursor: help">help</p><p style="cursor: text">text</p><p style="cursor: wait">wait</p>

</body></html>

Cursores personalizados:

<html><head>

<title>Mudar o cursor</title><style type="text/css">

Page 183: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

183Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

166

body {cursor : url("qualquer_imagem.cur")}</style>

</head><body></body>

</html>

18.11.5.16 TabelasBorda Simples

table.comBordaSimples

{

border-collapse: collapse; - retira as bordas duplas nas células da tabela

background: #FFFFF0;

}

table.comBordaSimples td – define propriedades para a tag td da tabela

{

border: 1px solid black;

}

table.comBordaSimples th – define propriedades para o tag th da tabela{

border: 1px solid black;border-bottom: 2px solid black; - propriedades para a borda inferiorbackground: #F0FFF0;

}

Bordas sobrepostasBordas com estilo ('border-style') 'hidden' são suprimidas (ocultas) e têm precedência sobre todas as

outras bordas conflitantes/coincidentes. Se nenhuma das bordas tem estilo 'hidden', a borda mais larga (maior'border-width') tem precedência. Se várias bordas tiverem o mesmo 'border-width', o estilo tem precedência,nesta ordem: (maior) 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove', 'inset' (menor). Bordas com'border-style' igual a 'none' (nenhum) têm sempre a menor prioridade.

Exemplo de bordas:

Page 184: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

184Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

167

18.12 JavaScriptJavaScript é uma linguagem que permite injetar lógica em páginas escritas em HTML (HyperText Mark-up

Language). Os parágrafos de lógica do javaScript podem estar soltos ou atrelados a ocorrência de eventos.

18.12.1 Dentro de um Documento HTMLPara inserir parágrafos de programação dentro do HTML é necessário identificar o início e o fim do set de

JavaScript, da seguinte forma:

<SCRIPT>Set de instruções

</SCRIPT>

Este procedimento pode ser adotado em qualquer local da página.Entretanto, para melhor visualização e facilidade de manutenção, recomenda-se quetoda a lógica seja escrita no início do documento, através da criação de funções aserem invocadas quando se fizer necessário (normalmente atreladas a eventos).

Os comandos JavaScript são sensíveis ao tipo de letra (maiúsculas eminúsculas) em sua sintaxe. Portanto, é necessário que seja obedecida a forma deescrever os comandos, de acordo com a forma apresentada ao longo deste manual.Caso seja cometido algum erro de sintaxe quando da escrita de um comando, oJavaScript interpretará, o que seria um comando, como sendo o nome de umavariável.

18.12.2 Arquivo ExternoVocê pode também usar seus códigos em arquivos externos usando o

atributo SRC=”url-do-arquivo”, mas lembre-se que sempre que você colocar seuscódigos em arquivos externos você precisará nomeá-los com a extensão .JS exemplo:

<script src=”meucodigo.js”></script>

18.12.3 Tratadores de EventosSão fatos que ocorrem durante a execução do sistema, a partir dos quais o programador pode definir ações

a serem realizadas pelo programa. Abaixo apresentamos a lista dos eventos possíveis, indicando os momentos emque os mesmos podem ocorrer, bem como, os objetos passíveis de sua ocorrência.

onload - Ocorre na carga do documento. Ou seja, só ocorre no BODY do documento.onunload - Ocorre na descarga (saída) do documento. Também só ocorre no BODY.onchange - Ocorre quando o objeto perde o focus e houve mudança de conteúdo. Válido para os objetosText, Select e Textarea.onblur - Ocorre quando o objeto perde o focus, independente de ter havido mudança. Válido para osobjetos Text, Select e Textarea.onfocus - Ocorre quando o objeto recebe o focus. Válido para os objetos Text, Select e Textarea.onclick - Ocorre quando o objeto recebe um Click do Mouse. Válido para os objetos Buton, Checkbox,Radio, Link, Reset e Submit.onmouseover - Ocorre quando o ponteiro do mouse passa por sobre o objeto. Válido apenas para Link.onselect - Ocorre quando o objeto é selecionado. Válido para os objetos Text e Textarea.onsubmit - Ocorre quando um botão tipo Submit recebe um click do mouse. Válido apenas para o Form.

18.12.4 Sintaxe da LinguagemA linguagem Javascript tem uma sintaxe muito parecida a de Java por estar baseado nele. Também é muito

parecida a da linguagem C, de modo que se o leitor conhece alguma destas duas linguagens poderá manejar comfacilidade com o código.

Os parágrafos soltossão executados nasequência em que

aparecem na página(documento) e os

atrelados a eventossão executados

apenas quando oevento ocorre.

Page 185: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

185Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

168

ComentáriosUm comentário é uma parte de código que não é interpretada pelo navegador e cuja utilidade radica em

facilitar a leitura ao programador. O programador, a medida que desenvolve o script, vai deixando frases ou palavrassoltas, chamadas comentários, que ajudam a ele ou a qualquer outro a ler mais facilmente o script na hora demodificá-lo ou depurá-lo.

Existem dois tipos de comentários na linguagem. Um deles, a barra dupla, serve para comentar uma linhade código. O outro comentário podemos utilizar para comentar várias linhas e se indica com os signos /* paracomeçar o comentário e */ para terminá-lo. Vejamos uns exemplos:

<script>//Este é um comentário de uma linha/*Este comentário pode se expandirpor várias linhas.As que quiser*/

</script>

Separação de instruçõesAs distintas instruções que contém nossos scripts devem ser separadas convenientemente para que o

navegador não indique os correspondentes erros de sintaxe. Javascript tem duas maneiras de separar instruções. Aprimeira é através do caractere ponto e vírgula (;) e a segunda é através de uma quebra de linha.

18.12.5 Declaração de VariáveisA variável é criada automaticamente, pela simples associação de valores a mesma.

Exemplo: NovaVariavel = "Jose"

Foi criada a variável de nome NovaVariavel que, passou a conter a String Jose. Asvariáveis que são criadas dentro de uma função são Locais e referenciáveis apenas dentroda função. As variáveis criadas fora de funções são Globais, podendo serem referenciadasem qualquer parte do documento.

Desta forma, variáveis que precisam ser referenciadas por várias funções ou emoutra parte do documento, precisam ser definidas como globais. Embora não sejarecomendável, em uma função, pode ser definida uma variável local com o mesmo nomede uma variável global. Para isso utiliza-se o método de definição var.Exemplo:

Variável Global: MinhaVariavel = "";Variável Local: var MinhaVariavel = "";

18.12.6 Palavras ReservadasExistem várias palavras que são reservadas para o JavaScript as quais são listadas abaixo. Essas palavras não

podem ser utilizadas para identificar variáveis ou funções.

abstract boolean break byte catch

case cath char class const

continue default debugger delete do

double else enum export extends

false final finally float for

function goto if implements import

As variáveis podemser Locais ou

Globais.

Page 186: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

186Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

169

in instanceof int interface long

native new null package private

protected public return short static

super switch synchronized this throw

throws transcient true try typeof

var void volatile while with

18.12.7 Tipos de DadosVemos os três tipos de dados que suporta javascript: numérico, boleano e texto.

Cada uma destas classes de informação é o tipo de dados. Javascript distingue entre trêstipos de dados e todas as informações que se podem salvar em variáveis vão estarencaixadas em algum destes tipos de dados. Vejamos detalhadamente quais são estestrês tipos de dados.

Tipo de dados numéricoNesta linguagem só existe um tipo de dados numérico, ao contrário do que

ocorre na maioria das linguagens mais conhecidas. Todos os números são portanto, dotipo numérico, independentemente da precisão que tenham ou se são números reais ouinteiros. Os números inteiros são números que não têm vírgula, como 3 ou 339. Osnúmeros reais são números fracionários, como 2.69 ou 0.25, que também se podemescrever em nota científica, por exemplo, 2.482e12.

Com Javascript também podemos escrever números em outras bases, como ahexadecimal. As bases são sistemas de numeração que utilizam mais ou menos dígitospara escrever os números. Existem três bases com as que podemos trabalhar:

- Base 10É o sistema que utilizamos habitualmente, o sistema decimal. Qualquer número,por padrão, se entende que está escrito em base 10.

- Base 8Também chamado sistema octal, que utiliza dígitos do 0 ao 7. Para escrever um número em octal bastasimplesmente escrever este número precedido de um 0, por exemplo 045.

- Base 16 ou sistema hexadecimalÉ o sistema de numeração que utiliza 16 dígitos, os compreendidos entre o 0 e o 9 e as letras de A à F, paraos dígitos que faltam. Para escrever um número em hexadecimal devemos escrevê-lo precedido de um zeroe um “xis”, por exemplo, 0x3EF.

Tipo boleanoO tipo boleano, boolean em inglês, serve para realizar operações lógicas, geralmente para realizar ações se

o conteúdo de uma variável é verdadeiro ou falso.Se uma variável é verdadeira, então: Executo umas instruções Se não Executo outrasOs dois valores que podem ter as variáveis boleanas são true ou false.

minhaBoleana = trueminhaBoleana = false

O Javascripttrabalha comvariáveis de

diversas classes deinformação, como

textos ounúmeros.

Page 187: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

187Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

170

Tipo de dados cadeia de caracteresO último tipo de dados é o que serve para salvar um texto. Javascript só tem um tipo de dados para salvar

texto e nele, se podem introduzir qualquer número de caracteres. Um texto pode estar composto de números,letras e qualquer outro tipo de caracteres e signos. Os textos se escrevem entre aspas, duplas ou simples.

meuTexto = "Miguel vai pescar"meuTexto = '23%%$ Letras & *--*'

Tudo o que se coloca entre aspas, como nos exemplos anteriores é tratado como uma cadeia de caracteresindependentemente do que coloquemos no interior das aspas. Por exemplo, em uma variável de texto podemossalvar números e nesse caso temos que ter em conta que as variáveis de tipo texto e as numéricas não são amesma coisa e que enquanto as de numéricas nos servem para fazer cálculos matemáticos, as de texto não servem.

Caracteres de escape em cadeias de texto.Existe uma série de caracteres especiais que servem para expressar em uma cadeia de texto determinados

controles como pode ser uma quebra de linha ou um tabulador. Estes são os caracteres de escape e se escrevemcom uma nota especial que começa por uma contra-barra (uma barra inclinada ao contrário da normal '\') e logo secoloca o código do caractere a mostrar.

Um caractere muito comum é a quebra de linha, que se consegue escrevendo \n. Outro caractere muitohabitual é colocar umas aspas, pois se colocamos umas aspas sem seu caractere especial nos fechariam as aspasque colocamos para iniciar a cadeia de caracteres. Temos então que introduzir as aspas com \" ou \' (aspas duplasou simples). Existem outros caracteres de escape, que veremos na tabela abaixo mais resumidos, apesar de quetambém há que destacar como caractere habitual o que se utiliza para escrever uma contra-barra, para nãoconfundi-la com o início de um caractere de escape, que é a dupla contra-barra \\.

Exemplo de caracteres de escape:

\n - Quebra de linha\' - Aspas simples\" - Aspas dupla\t - Tabulador\r - Enter\f - Avance de página\b - Retroceder espaço\\ - Contra-barra

18.12.8 OperadoresOperadores Lógicos

São operadores a serem utilizados em comandos condicionais, tais como: IF , FOR e WHILE. Os comandoscondicionais serão vistos mais a frente.

= = Igual!= Diferente> Maior>= Maior ou Igual< Menor<= Menor ou Igual&& E || Ou

Page 188: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

188Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

171

Operadores MatemáticosSão operadores a serem utilizados em cálculos, referências de indexadores e manuseio de strings. Ao longo

do manual estes operadores serão largamente utilizados, dando, assim, uma noção mais precisa do seu potencial.

+ adição de valor e concatenação de strings- subtração de valores* multiplicação de valores/ divisão de valores% obtem o resto de uma divisão. Ex: 150 % 13 retornará 7+= concatena /adiciona ao string/valor já existente. Ou seja:

x += y é o mesmo que x = x + y da mesma forma podem ser utilizados: -= , *= , /= ou %=Um contador pode ser simplificado utilizando-se : X++ ou X-- o que equivale as expressões:X = X + 1 ou X = X - 1 respectivamente.

Para inverter sinal: X = -X negativo para positivo ou positivo para negativo.

18.12.9 Comandos Condicionais e LaçosSão comandos que condicionam a execução de uma certa tarefa à veracidade ou não de uma determinada

condição, ou enquanto determinada condição for verdadeira. São eles:

Comando IFif (condição)

{ ação para condição satisfeita }else

{ ação para condição não satisfeita }

Exemplo:if (Idade < 18)

{Categoria = "Menor"}else

{Categoria = "Maior"}

Comando FOR for(criação de variável de controle;condição;incremento da variável de controle;)

{ ação }

Exemplo:for (x = 0 ; x <= 10 ; x++)

{alert ("X igual a " + x) }

Comando WHILEExecuta uma ação enquanto determinada condição for verdadeira.

while(condição){ ação }

Exemplo:var contador = 10while (contador > 1)

{ contador-- }

Page 189: 3way curso-formacao-java-web-completo
Page 190: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

190Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

172

O comando switchO comando switch do JavaScript1.2 nada mais é do que um case, assim como no C ou no PHP, ou até

podendo se comparar com um simples case do VB. Caso você trabalhe com C, PHP ou outras linguagens, vocêprovavelmente já sabe o que o comando faz. Mas lembre-se que este comando no JavaScript serve apenas para oJavaScript1.2, ou seja, serve apenas para Netscape e Internet Explorer nas suas versões 4.X.

switch (variavel_de_controle) {opção1 : comandos ;break;opção2 : comandos ;break;default : comandos;

}

Exemplo:

var teste = prompt(“digite um valor de 1 até 5”);

switch(teste) {case ‘1’: alert(‘seu valor foi 1’);break;case ‘2’: alert(‘seu valor foi 2’); break;case ‘3’: alert(‘seu valor foi 3’); break;case ‘4’: alert(‘seu valor foi 4’); break;case ‘5’: alert(‘seu valor foi 5’); break;default: alert(‘seu valor nao foi nenhum valor entre 1 e 5’);

}

Operador TernárioNos comandos FOR e WHILE a diretiva break pode ser utilizada para interromper a condição principal e sair

do loop. Da mesma forma, a diretiva continue interrompe uma ação (se determinada condição ocorrer) mas voltapara o loop.

receptor = ((condição) ? verdadeiro : falso)

Exemplo:NomeSexo = ((VarSexo == "M") ? "Masculino" : "Feminino")

18.12.10 ArraysNas linguagens de programação existem estruturas de dados especiais que

nos servem para salvar informações mais complexas do que simples variáveis. Umaestrutura típica em todas as linguagens é o Array, que é como uma variável ondepodemos introduzir vários valores, ao invés de somente um como ocorre com asvariáveis normais.

Os arrays nos permitem salvar várias variáveis e acessá-las de maneiraindependente, é como ter uma variável com distintos compartimentos ondepodemos introduzir dados distintos. Para isso utilizamos um índice que nos permiteespecificar o compartimento ou posição ao qual estamos nos referindo.

Para navegadores antigos se pode simular o array utilizando sintaxe deprogramação orientada a objetos, mas dada a complexidade desta tarefa, pelomenos no momento em que nos encontramos e as poucas ocasiões que osdeveremos utilizar, vamos ver como utilizar o autêntico array de Javascript.

Os arrays foramintroduzidos em

versões Javascript 1.1ou superiores, ou seja,

somente podemosutilizá-los a partir dos

navegadores 3.0.

Page 191: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

191Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

173

18.12.10.1 Criação e Inicialização de ArraysO primeiro passo para utilizar um array é criá-lo. Para isso utilizamos um objeto Javascript já implementado

no navegador. Esta é a sentença para criar um objeto array:

var meuArray = new Array()

Isto cria um array na página que está se executando. O array se cria sem nenhum conteúdo, ou seja, nãoterá nenhum campo ou compartimento criado.

diasSemana = new Array('Segunda','Terça','Quarta','Quinta','Sexta','Sábado','Domingo')

No exemplo acima criamos um array com os dias da semana e cada dia recebeu um índice que começa pelozero. Também podemos criar o array especificando o número de compartimentos que vai ter.

var meuArray = new Array(10)

Neste caso indicamos que o array vai ter 10 posições, ou seja, 10 campos onde salvar dados. É importanteobservarmos que a palavra Array em código Javascript se escreve com a primeira letra em maiúscula. Como emJavascript as maiúsculas e minúsculas sim que importam, se escrevemos em minúscula não funcionará.

Podemos introduzir no array qualquer dado, tanto se indicamos ou não o número de campos do array. Se ocampo está criado se introduz simplesmente e se o campo não estava criado se cria e logo, se introduz o dado, como qual o resultado final será o mesmo. Esta criação de campos é dinâmica e se produz ao mesmo tempo, que osscripts se executam. Vejamos a seguir como introduzir valores em nossos arrays.

meuArray[0] = 290

meuArray[1] = 97

meuArray[2] = 127

Introduzem-se indicando entre colchetes o índice da posição onde queríamos salvar o dado. Neste casointroduzimos 290 na posição 0, 97 na posição 1 e 127 na 2. Os arrays começam sempre na posição 0, portanto, umarray que tenha por exemplo 10 posições, terá campos do 0 ao 9. Para recolher dados de um array fazemos damesma forma: colocando entre colchetes o índice da posição a qual queremos acessar.

18.12.10.2 Acessando os Elementos do ArrayPara acessar os elementos de um array bastaria saber o tamanho do mesmo e acessá-los em um loop.

Exemplo:

var nomes = new Array(“Pedro”,”João”,”Carlos”,”Edvaldo”,”Paulo”,”Roberto”);

///Acessando os elementosfor(i = 0; i<=nomes.length; i++) ///nomes.length retorna o tamanho do Array{

alert(“No indice de numero ” + i + ” contem o nome: “ + nome[i] );}

18.12.10.3 Métodos Especiaisjoin(sep)

Junta seqüencialmente os elementos de uma array usando o caractere (ou caracteres) dados por sep. Se elenão é indicado, usa a vírgula como default.

Page 192: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

192Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

174

Exemplo:

nivel = new Array("baixo","medio","alto");str_1 = nivel.join(); //resulta "baixo,médio,alto" em str_1str_2 = nivel.join(", "); //resulta "baixo, médio, alto" em str_2str_3 = nivel.join("/"); //resulta "baixo/médio/alto" em str_3

lengthIndica o número de elementos em uma array. Pode ser usado para diminuir o comprimento de um objeto já

definido. Não pode aumentar.Exemplo:

nivel = new Array("baixo","medio","alto","muito alto");alert(nivel.length); //Exibe no alerta o numero 4nivel.length = 3; //reduz o tamanho de 4 para 3

pop()Remove e retorna o último elemento de uma array, reduzindo o seu tamanho.Exemplo:

nivel = new Array("baixo","medio","alto","muito alto");

eliminado = nivel.pop; //a variável eliminado contém "muito alto"

push(valor1, valor2, ...)Adiciona um ou mais elementos (valor1, valor2, etc) ao final de uma array, retornando o seu novo tamanho.Exemplo: a variável novo será 4 e os dois elementos serão adicionados.

nivel = new Array("baixo","medio");

novo = nivel.push("alto","muito alto");

reverse()Inverte a ordem dos elementos. O primeiro se torna o último e o último se torna o primeiro.Exemplo: (nivel[0], nivel[1] e nivel[2] serão respectivamente "alto", "médio" e "baixo").

nivel = new Array("baixo","medio","alto");nivel.reverse();

shiftRemove o primeiro elemento e retorna esse elemento, reduzindo o tamanho da array.Exemplo: (a variável removido terá "muito baixo" e a nivel não terá esse elemento).

nivel = new Array("muito baixo","baixo","medio","alto");removido = nivel.shift();

slice(ini[, fim)Extrai uma parte de um array e retorna uma nova com essa parte. O parâmetro ini é o índice base zero a

partir do qual começa a extração. Os elementos são extraídos até o índice base zero dado por fim, mas nãoincluindo.

Se este não é indicado, a operação se dá até o final da seqüência.A função não altera o objeto original. Os valores são copiados para a nova array.

Page 193: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

193Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

175

Exemplo: (escreve: "baixo,médio,alto").

nivel = new Array("muito baixo","baixo","medio","alto","muito alto");

document.write(nivel.slice(1,4);

sort(func_comp)Ordena os elementos de uma array segundo o critério da função de comparação func_comp. Se esta não é

dada, a ordenação se dá como se fosse um dicionário. No caso de strings de texto, em geral essa operação édesejada. No caso de números, pode não ser, uma vez que, por exemplo, 12 fica antes de 4.

A função de comparação deve ser uma do tipo comparar(a,b) tal que:- se retornar valor < 0, b fica em índice menor que a.- se retornar valor = 0, a e b não mudam de índice.- se retornar valor > 0, b fica em índice maior que a.

Para comparar números, a função pode ser simplesmente:

function comparar(a, b){

return a – b;}

Exemplo:

function comparar(a, b)

{

return a – b;

}

num = new Array("11", "10", "7", "8", "9");

document.write(num.sort()); //escreve 10,11,7,8,9

document.write("<br>"); //avança uma linha

document.write(num.sort(comparar)); //escreve 7,8,9,10,11

splice(iniNdx, quant, [elm1][, ..., elmN])Muda o conteúdo de uma array, adicionando novos elementos e removendo outros.- iniNdx é o índice base zero a partir do qual a operação começa.- quant é um inteiro indicando o número de elementos a remover. Se é zero, nenhum elemento éremovido, mas deve ser indicado pelo menos um novo elemento.- elm1 ... elemN são os novos elementos a adicionar. Se não indicados, a função apenas remove elementos.

Se o número de elementos a adicionar é diferente do número de elementos a remover, o tamanho daarrray é alterado. A função retorna uma array com os elementos removidos.

Exemplos:

num = new Array("10", "20", "30", "40");document.write(num); //escreve 10,20,30,40document.write("<br>"); //avança uma linhade_fora = num.splice(2,0,"25");document.write(num); //escreve 10,20,25,30,40document.write("<br>"); //avança uma linhade_fora = num.splice(2,1,"28");

Page 194: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

194Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

176

document.write(num); //escreve 10,20,28,30,40document.write("<br>"); //avança uma linhadocument.write(de_fora); //escreve 25

toString()Retorna uma string com os elementos dispostos seqüencialmente e separados por vírgula.Exemplo:

num = new Array("10", "20", "30", "40");str = num.toString(); //str contém "10,20,30,40"

unshift(elm1,..., elmN)Adiciona um ou mais elementos no início da array e retorna seu novo tamanho. Os parâmetros (elm1, ...,

elmN) são os novos elementos.Exemplo (escreve: "baixo,médio,alto"):

nivel = new Array("baixo","medio","alto","muito alto");nivel.unshift("muito baixo");document.write(nivel); //escreve "muito baixo,baixo,medio,alto,muito alto"

18.12.11 FunçõesUma função é um set de instruções, que só devem ser executadas quando a função for acionada. A sintaxe

geral é a seguinte:

function NomeFunção(Parâmetros)

{

Ação(ões)

}

Suponha uma função que tenha como objetivo informar se uma pessoa é maior ou menor de idade,recebendo como parâmetro a sua idade.

function Idade (Anos)

{

if(Anos > 17)

{

alert("Maior de Idade")

}else

{

alert("menor de Idade")

}

}

Funções embutidas na própria linguagemA sintaxe geral é a seguinte:- eval - Calcula o conteúdo da string- parseInt - Transforma string em inteiro- parseFloat - Transforma string em número com ponto flutuante- date() - Retorna a data e a hora (veja o capítulo manipulando datas)

Page 195: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

195Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

177

Exemplo:

Result = eval ( " (10 * 20) + 2 - 8")

ex2: Result = eval (string)

No primeiro exemplo Result seria igual a 194. No segundo, depende do conteúdo da string, que tambémpode ser o conteúdo (value) de uma caixa de texto.

Funções tipicamente MatemáticasEssas funções abaixo são chamadas de funções Matemáticas e fazem parte das classes ultilitárias:– Math.abs(n) - retorna o valor absoluto do número (ponto flutuante)– Math.ceil(n) - retorna o próximo valor inteiro maior que o número– Math.floor(n) - retorna o próximo valor inteiro menor que o número– Math.round(n) - retorna o valor inteiro, arredondado, do número– Math.pow(base, expoente) - retorna o cálculo do exponencial– Math.max(n1, n2) - retorna o maior número dos dois fornecidos– Math.min(n1, n2) - retorna o menor número dos dois fornecidos– Math.sqrt(n) - retorna a raiz quadrada do número– Math.SQRT2 - retorna a raiz quadrada de 2 (aproximadamente 1.414)– Math.SQRT_2 - retorna a raiz quadrada de 1/2 (aproximadamente 0.707)– Math.sin(n) - retorna o seno de um número (anglo em radianos)– Math.asin(n) - retorna o arco seno de um número (em radianos)– Math.cos(n) - retorna o cosseno de um número (anglo em radianos)– Math.acos(n) - retorna o arco cosseno de um número (em radianos)– Math.tan(n) - retorna a tangente de um número (anglo em radianos)– Math.atan(n) - retorna o arco tangente de um número (em radianos)– Math.pi - retorna o valor de PI (aproximadamente 3.14159)– Math.log(n) - retorna o logarítmo de um número– Math.E - retorna a base dos logarítmos naturais (aproximadamente 2.718)– Math.LN2 - retorna o valor do logarítmo de 2 (aproximadamente 0.693)– Math.LOG2E - retorna a base do logarítmo de 2 (aproximadamente 1.442)– Math.LN10 - retorna o valor do logarítmo de 10 (aproximadamente 2.302)– Math.LOG10E - retorna a base do logarítmo de 10 (aproximadamente 0.434)

18.12.12 Classes UtilitáriaClásses ultilitárias são as classes elementares do JavaScript.

18.12.12.1 String

O objeto StringÉ criado através de: new String(str). Onde str é uma string qualquer. Notar a diferença entre string literal e

string objeto.Exemplos:

str_1 = "abc" (string literal) estr_2 = new String("abc") (string objeto).

Na prática, quaisquer das funções aqui dadas podem ser usadas com strings literais. A linguagem cria umobjeto temporário e o descarta após a execução.

Page 196: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

196Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

178

A propriedade lengthIndica o comprimento (número de caracteres) da string.Exemplo (a variável len assume valor 7):

str = "Bom dia";len = str.length;

anchor(nome)Cria uma âncora no documento HTML com o atributo NAME igual a nome.Exemplo:

str = "Início da página";document.write(str.anchor("inicio_pagina"));

Produz o mesmo resultado da seguinte linha HTML:

<A name="inicio_pagina">Início da página</A>

big()Faz a string aparecer como se estivesse entre as marcas <BIG> e </BIG> de HTML.Exemplo:

str = "Bom dia";document.write(str.big());

Produz o mesmo resultado da seguinte linha HTML:

<big>Bom dia</big>

blink()Faz a string piscar como se estivesse entre as marcas <BLINK> e </BLINK> de HTML (Netscape somente).Exemplo:

str = "Bom dia";document.write(str.blink());

Produz o mesmo resultado da seguinte linha HTML:

<blink>Bom dia</blink>

Bold()Faz a string aparecer em negrito como se estivesse entre as marcas <B> e </B> de HTML.Exemplo:

str = "Bom dia";document.write(str.bold());

Produz o mesmo resultado da seguinte linha HTML:

<b>Bom dia</b>

Page 197: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

197Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

179

charAt(index)Retorna o caractere da posição especificada por index, um inteiro entre 0 e comprimento da string menos

um (-1).Exemplo (a variável str_2 será "o"):

str_1 = "Bom dia";

str_2 = str_1.charAt(1);

charCodeAt(index)Retorna o valor ASCII do caractere na posição especificada por ndx, um inteiro entre 0 e comprimento da

string menos 1. Se não indicado, o valor 0 é assumido.Exemplo (a variável val será 97, o valor ASCII de "a"):

str = "Bom dia";

val = str.charCodeAt(6);

concat(str2, str3 [, ..., strN])Combina duas ou mais strings, retornando uma nova. str2, ..., strN são as strings a combinar.Exemplo (a variável nova_str contém "Bom dia"):

str = "Bom ";

nova_str = str.concat("dia");

fixed()Faz a string ser exibida com uma fonte de largura fixa, como se estivesse entre as marcas <tt> e </tt> de

HTML.Exemplo:

str = "Bom dia";

document.write(str.fixed());

Produz o mesmo resultado da seguinte linha HTML:

<tt>Bom dia</tt>

fontcolor(cor)Exibe a string na cor especificada, como se estivesse entre as marcas <font color=cor> e </font> de HTML.

O parâmetro cor é uma string literal da cor reconhecida pelo navegador ou na forma RGB hexadecimal. Porexemplo, FF0000 para vermelho.

Exemplo:

str = "Bom dia";

document.write(str.fontcolor("blue"));

Produz o mesmo resultado da seguinte linha HTML:

<font color="blue">Bom dia</font>

Page 198: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

198Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

180

fontsize(sz)Exibe a string no tamanho de fonte especificado, como se estivesse entre as marcas <FONT SIZE=sz> e

</FONT> de HTML. O parâmetro sz é o tamanho da fonte.Exemplo:

str = "Bom dia";

document.write(str.fontsize("3"));

Produz o mesmo resultado da seguinte linha HTML:

<font size="3">Bom dia</font>

fromCharCode(cod1,cod2,...,codN)Retorna uma string (não objeto String) com os caracteres dados pelos valores ASCII cod1, ...,codN. Deve ser

sempre usado na forma String.fromCharCode(...) em vez de um objeto string criado.Exemplo (retorna "abc"):

String.fromCharCode(97,98,99);

Os eventos KeyDown, KeyPress e KeyUp contém os códigos ASCII da tecla usada. Para saber o símbolo datecla, pode-se usar a propriedade which:

String.fromCharCode(KeyDown.which);

indexOf(Str, index)Retorna o índice da primeira ocorrência de Str, começando de index ou de 0 se ele não é dado. Se Str não é

encontrado, retorna -1. É sensível a letras maiúsculas e minúsculas.Exemplos:

"Bom dia".indexOf("Bom") //retorna 0."Bom dia".indexOf("Bon") //retorna -1."Bom dia".indexOf("d") //retorna 4."Bom dia".indexOf("bom") //retorna -1.

lastIndexOf(Str, index)Retorna o índice da última ocorrência de Str ou -1 se não encontrado. A procura é feita na ordem inversa

(direita para esquerda), começando do índice index ou do comprimento da string se ele não é indicado. Caracteressão indexados da esquerda para a direita, a partir de 0. A procura é sensível a letras maiúsculas e minúsculas.

Exemplos:

"Boa noite".lastIndexOf("Boa") retorna 0."Boa noite".lastIndexOf("o") retorna 5."Boa noite".lastIndexOf("b") retorna -1.

link(href)Cria um link de hipertexto HTML para a URL (absoluta ou relativa) dada por hRef.Exemplo:

str = "Página inicial da 3way";url = "http://www.3way.com.br";document.write(str.link(url);

Page 199: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

199Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

181

Produz o mesmo resultado da seguinte linha HTML:

<a href="http://www.3way.com.br">Página inicial da 3way</A>

replace(rExp, nStr)Procura ocorrências da expressão regular em uma string e substitui por nStr. rExp é o nome da expressão

regular, podendo ser uma variável ou literal. nStr pode ser substituída por uma função. O conteúdo do objeto stringoriginal não é alterado. Uma nova string é retornada.

Exemplo (retorna "Boa noite"):

str = "Boa tarde";

re = /'tarde/gi;

str_1 = str.replace(re,"noite");

document.write(str_1);

search(rExp)Procura um dado formato especificado pela expressão regular rExp, que pode ser uma variável ou literal. Se

encontrado, retorna o índice da expressão na string. Caso contrário, retorna -1.Exemplo:

strMail = new String("[email protected]");

re = /^[^@]+@[^@]+.[a-z]{2,}$/i;

if(strMail.search(re) == -1)

document.write("O endereço de email não é válido");

slice(iniNdx, fimNdx)Extrai parte de uma string, retornando uma nova. iniNdx é o índice base zero inicial e fimNdx é o índice

base zero final. Se não especificado, a operação se dá até o final da string. Valor negativo para fimNdx indicadeslocamento a partir do final. Por exemplo, slice(1,-1) extrai do segundo até o penúltimo caracter.

Exemplo (escreve "tarde"):

str = "Boa tarde";

str_1 = str.slice(4);

document.write(str_1);

split(sep, lim)Separa uma string em um conjunto (array) de strings, usando como separador o caractere indicado por sep.

O parâmetro opcional lim é um inteiro que limita o número de separações.Exemplo (no resultado, str_2[0] contém "AA", str_2[1] contém "BB", str_2[2] contém "CC" e str_2[3]

contém "DD"):

str_1 = new String("AA,BB,CC,DD");

str_2 = str.split(",");

substr(ini [, compr])Extrai parte de uma string, começando no índice base zero dado por ini. Se este é negativo, significa índice

a partir do final da string. O parâmetro opcional compr é número de caracteres a extrair a partir do índice dado. Seomitido, a operação se dá até o final da string.

Page 200: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

200Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

182

Exemplo (resulta "dia"):

str = "Bom dia";

document.write(str.substr(4,3));

substring(ndx1, ndx2)Extrai parte de uma string, começando do índice base zero ndx1 e terminando, mas não incluindo, no

índice base zero ndx2.Exemplo (resulta "Bom"):

str = "Bom dia";

document.write(str.substring(0,3));

toLowerCase()Retorna a string original com os caracteres minúsculos. Não altera a original.Exemplo (resulta "bom dia"):

str = "Bom dia";

document.write(str.toLowerCase());

toString()Retorna a string do objeto especificado.Exemplo (resulta "Bom dia"):

str = new String("Bom dia");

document.write(str.toString());

toUpperCase()Retorna a string original com os caracteres maiúsculos. Não altera a original.Exemplo (resulta "BOM DIA"):

str = "Bom dia";

document.write(str.toUpperCase());

18.12.12.2 Date

O objeto Date()Permite trabalhar com datas e horas. Pode ser criado por

uma das formas abaixo:

- new Date()

- new Date(ms)

- new Date(string_de_data)

- new Date(nAno, nMês, nDia [, nHora, nMin,nSeg, nMs] )

A data é dada em milissegundos, apartir de 00:00:00 h GMT de 01 de

janeiro de 1970. Se nenhumparâmetro é fornecido, são

assumidas a data e hora locais, istoé, do computador que executa o

script.

Page 201: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

201Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

183

Parâmetros:– ms: milissegundos desde a data inicial dada acima.– string_de_data: uma seqüência de caracteres em um formato suportado. Exemplo: "Mon, 27 Dec 200412:00:00 GMT".- nAno, nMês, nDia, etc: valores inteiros representando partes da data. Exemplo: Janeiro 0, Fevereiro 1, etc.

Exemplo 1: a variável intervalo armazena o tempo de execução em milissegundos das outras instruções.

tempo_1 = new Date();

// outras instruções

tempo_2 = new Date();

intervalo = tempo_2 – tempo_1

Exemplo 2: este é um exemplo dinâmico, que atualiza o objeto Date() a cada segundo, permitindo umrelógio na tela em vez da simples hora e data do carregamento da página. O script abaixo deve estar entre <head> e</head> da página:

<script language="JavaScript">

function DataHora()

{

var data = new Date();

tempo.innerHTML = data;

setTimeout("DataHora()",1000)

}

</script>

O código seguinte deve estar dentro de <body>: onLoad="DataHora()". E este no corpo da página (entre<body> e </body>): <span id=tempo></span>

getDate()Retorna um número inteiro entre 1 e 31, que representa o dia do mês do objeto Date.Exemplo: a variável dia contém dia do mês da data atual.

data = new Date();

dia = data.getDate();

getDay()Retorna um número inteiro do dia da semana. Domingo 0, segunda 1, terça 2, etc.Exemplo: a variável dia_semana contém o dia da semana da data atual.

data = new Date();

dia_semana = data.getDay();

getFullYear()Retorna o ano do objeto Date em números absolutos, por exemplo 1998.Exemplo: a variável ano contém o ano da data atual.

data = new Date();

ano = data.getFullYear();

Page 202: 3way curso-formacao-java-web-completo
Page 203: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

203Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

184

getHours()Retorna a hora do objeto Date, um número inteiro entre 0 e 23.Exemplo:

data = new Date();

hora = data.getHours();

getMilliseconds()Retorna os milissegundos do objeto Date, um inteiro entre 0 e 999.Exemplo:

data = new Date();

ms = data.getMilliseconds();

getMinutes()Retorna os minutos do objeto Date, um inteiro entre 0 e 59. Exemplo:

data = new Date();

min = data.getMinutes();

getMonth()Retorna o mês do objeto Date, um inteiro entre 0 e 11 (0 janeiro, 1 fevereiro, etc).Exemplo:

data = new Date();

mes = data.getMonth();

getSeconds()Retorna os segundos do objeto Date, um número inteiro entre 0 e 59.Exemplo:

data = new Date();

seg = data.getSeconds();

getTime()Retorna o número de milissegundos da data conforme informado no primeiro tópico. Em geral usado para

especificar a data e hora de um outro objeto Date.Exemplo:

certo_dia = new Date("May 15, 1998");

outro_dia = new Date();

outro_dia.setTime(certo_dia.getTime());

getTimezoneOffset()Retorna a diferença, em minutos, entre a hora local e a hora GMT.Exemplo:

data = new Date();

dif_gmt_horas = data.getTimezoneOffset() / 60;

Page 204: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

204Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

185

setFullYear(nAno [, nMes, nDia])Especifica um ano (em 4 dígitos) para um objeto date existente. nAno é um inteiro de 4 dígitos

representando o ano, nMes um inteiro de 0 a 11 para o mês (0 janeiro, 1 fevereiro, etc) e nDia um inteiro de 1 a 31para o dia do mês. Se é dado um valor para nDia, é obrigatório um valor para nMes.

Se um parâmetro é especificado fora da faixa, a função tenta atualizar os demais de forma coerente.Exemplo: se um valor de 15 é dado para nMes, o ano é aumentado de 1 e o valor 4 é usado para nMes.

Exemplo:

certo_dia = new Date();

certo_dia.setFullYear(1995);

setHours(nHora, nMin, nSeg, nMs)Especifica a hora para um objeto Date. nHora é um inteiro entre 0 e 23. Os demais parâmetros são

opcionais: nMin (inteiro entre 0 e 59), nSeg (inteiro entre 0 e 59) e nMs (inteiro entre 0 e 999 para osmilissegundos). Se nSeg é fornecido, nMin também deve ser dado. Se nMs é especificado, nMin e nSeg tambémdevem ser.

Se um parâmetro é especificado fora da faixa, a função tenta atualizar os demais de forma coerente.Exemplo: se 70 é dado para nMin, a hora é aumentada de 1 e 10 é usado para nMin.

Exemplo:

certo_dia = new Date();

certo_dia.setHours(10);

setMinutes(nMin [, nSeg, nMs])Especifica os minutos para um objeto Date. nMin deve ser um inteiro entre 0 e 59. Os demais parâmetros

são opcionais: nSeg (inteiro entre 0 e 59) e nMs (inteiro entre 0 e 999 para os milissegundos). Se nSeg éespecificado, nMin também deve ser. Se nMs é dado, nMin e nSeg também devem ser.

Se um parâmetro é dado fora da faixa, a função tenta atualizar os demais de forma coerente. Exemplo: senSeg é 80, os minutos são aumentados de 1 e 20 é usado para os segundos.

Exemplo:

certo_dia = new Date();

certo_dia.setMinutes(25);

setMonth(nMes [, nDia])Especifica o mês de um objeto Date. nMes deve ser um inteiro entre 0 e 11 (0 janeiro, 1 fevereiro, etc). nDia

é um parâmetro opcional para o dia do mês (inteiro entre 0 e 31). Se um parâmetro é dado fora da faixa, a funçãotenta atualizar o objeto de forma coerente. Exemplo: se 12 é dado para o mês, o ano é aumentado de 1 e 1 é usadopara o mês.

Exemplo:

certo_dia = new Date();

certo_dia.setMonth(4);

setSeconds(nSeg [, nMs])Especifica os segundos de um objeto Date. nSeg deve ser um inteiro entre 0 e 59. nMs é um parâmetro

opcional para os milissegundos (inteiro entre 0 e 999). Se um parâmetro é dado fora da faixa, a função tentaatualizar o objeto de forma coerente. Exemplo: se 70 é dado para nSeg, os minutos são aumentados de 1 e 10 éusado para os segundos.

Exemplo:

Page 205: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

205Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

186

certo_dia = new Date();

certo_dia.setSeconds(15);

setTime(nMs)Especifica um valor para o objeto Date. nMs é um inteiro correspondente ao número de milissegundos

desde 01 de janeiro de 1970 00:00:00 h.Exemplo:

certo_dia = new Date("May 15, 1998");

outro_dia = new Date();

outro_dia.setTime(certo_dia.getTime());

toLocaleString()Retorna uma seqüência de caracteres (string) de data, com formato definido pelas configurações do

sistema operacional.Exemplo:

<script language="JavaScript">

var d = new Date();

document.write(d.toLocaleString());

</script>

Saída: Qui 17 Abr 2008 15:01:33 BRT

18.12.13 Objeto WindowDele dependem todos os demais objetos da hierarquia. Vamos ver a lista de

suas propriedades e métodos.

Propriedades do objeto windowA seguir podemos ver as propriedades do objeto Window. Existem algumas

muito úteis e outras menos:– closed - Indica a possibilidade de que tenha fechado a janela. (Javascript 1.1)– defaultStatus - Texto que se escreve por padrão na barra de estado donavegador.– document - Objeto que contem na página web que está sendo mostrada.– Frame - Um objeto frame de uma página web. Acessa-se pelo nome dele.– frames array - O vetor que contem todos os frames da página. Acessa-se peloíndice a partir de 0.– history - Objeto histórico de páginas visitadas.– innerHeight - Tamanho em pixels do espaço onde se visualiza a página, navertical. (Javascript 1.2)– innerWidth - Tamanho em pixels do espaço onde se visualiza a página, na horizontal. (Javascript 1.2)– length - Número de frames da janela.– location - A URL do documento que está sendo visualizado. Podemos mudar o valor desta propriedadepara irmos a outra página. Ver também a propriedade location do objeto document.– locationbar - Objeto barra de endereços da janela. (Javascript 1.2)– menubar - Objeto barra de menus da janela. (Javascript 1.2)– name - Nome da janela. Atribuímos quando abrimos uma nova janela.– opener - Faz referência à janela do navegador que abriu a janela onde estamos trabalhando. Será vistacom mais detalhes no tratamento de janelas com Javascript.

Window é o objetoprincipal na

hierarquia e contémas propriedades e

métodos paracontrolar a janela do

navegador.

Page 206: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

206Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

187

– outherHeight - Tamanho em pixels do espaço de toda a janela, na vertical. Isto inclui as barras dedeslocamento, botões, etc. (Javascript 1.2)– outherWidth - Tamanho em pixels do espaço de toda a janela, na horizontal. Isto inclui as barras dedeslocamento. (Javascript 1.2)– parent - Faz referência à janela onde está situado o frame que estamos trabalhando. Veremosdetalhadamente ao estudar o controle de frames com Javascript.– personalbar - Objeto barra pessoal do navegador. (Javascript 1.2)– self - Janela ou frame atual.– scrollbars - Objeto das barras de deslocamento da janela.– status - Texto da barra de estado.– statusbar - Objeto barra de estado do navegador. (Javascript 1.2)– toolbar - Objeto barra de ferramentas. (Javascript 1.2)– top - Faz referência à janela onde está situado o frame que estamos trabalhando. Como a propriedadeparent.– window - Faz referência à janela atual, assim como a propriedade self.

Métodos de window em JavascriptO objeto window de Javascript tem a disposição dos programadores uma longa lista de métodos.

Estudaremos e veremos exemplos. Vamos ver agora os distintos métodos que tem o objeto window. Muitos destesmétodos terão que ser vistos separadamente porque são muito úteis e ainda não o utilizamos, agora vamos listá-lose já veremos alguns exemplos.

– alert(texto) - Apresenta uma janela de alerta onde se pode ler o texto que recebe por parâmetro.– back() - Ir uma página atrás no histórico de páginas visitadas. Funciona como o botão de voltar da barrade ferramentas. (Javascript 1.2)– blur() - Tirar o foco da janela atual. (Javascript 1.1)– captureEvents(eventos) - Captura os eventos que se indiquem por parâmetro (Javascript 1.2).– clearInterval() - Elimina a execução de sentenças associadas a um intervalo indicadas com o métodosetInterval().(Javascript 1.2)– clearTimeout() - Elimina a execução de sentenças associadas a um tempo de espera indicadas com ométodo setTimeout().– close() - Fecha a janela. (Javascript 1.1)– confirm(texto) - Mostra uma janela de confirmação e permite aceitar ou rejeitar.– find() - Mostra uma janelinha de busca. (Javascript 1.2 para Netscape)– focus() - Coloca o foco da aplicação na janela. (Javascript 1.1)– forward() - Ir uma página adiante no histórico de páginas visitadas. Como se clicássemos o botão deadiante do navegador. (Javascript 1.2)– home() - Ir à página de início o explorador que tenha configurado. (Javascript 1.2)– moveBy(pixelsX, pixelsY) - Move a janela do navegador os pixels que se indicam por parâmetro para adireita e para baixo. (Javascript 1.2)– moveTo(pixelsX, pixelsY) - Move a janela do navegador à posição indicada nas coordenadas que recebepor parâmetro. (Javascript 1.2)– open() - Abre uma janela secundária do navegador.– print() - Como se clicássemos o botão de imprimir do navegador. (Javascript 1.2)– prompt(pergunta,inicio_da_resposta) - Mostra uma caixa de diálogo para pedir um dado. Devolve o dadoque se escreveu.– releaseEvents(eventos) - Deixa de capturar eventos do tipo que se indique por parâmetro. (Javascript 1.2)– resizeBy(pixelslargo,pixelsAlto) - Redimensiona o tamanho da janela, acrescentando ao seu tamanhoatual os valores indicados nos parâmetros. O primeiro para a altura e o segundo para a largura. Admitevalores negativos se se deseja reduzir a janela. (Javascript 1.2)– resizeTo(pixelslargo,pixelsAlto) - Redimensiona a janela do navegador para que ocupe o espaço em pixelsque se indica por parâmetro (Javascript 1.2)

Page 207: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

207Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

188

– routeEvent() - Encaminha um evento pela hierarquia de eventos. (Javascript 1.2)– scroll(pixelsX,pixelsY) - Faz um scroll da janela para a coordenada indicada por parâmetro. Este métodoestá desaconselhado, pois agora se debería utilizar scrollTo() (Javascript 1.1)– scrollBy(pixelsX,pixelsY) - Faz um scroll do conteúdo da janela relativo à posição atual. (Javascript 1.2)– scrollTo(pixelsX,pixelsY) - Faz um scroll da janela à posição indicada pelo parâmetro. Este método temque ser utilizado ao invés do scroll. (Javascript 1.2)– setInterval() - Define um script para que seja executado indefinidamente em cada intervalo de tempo.(Javascript 1.2)– setTimeout(sentença,segundos) - Define um script para que seja executado uma vez depois de umtempo de espera determinado.– stop() - Como clicar o botão de stop da janela do navegador. (Javascript 1.2)

18.12.14 Objeto DocumentCom o objeto document controla-se a página web e todos os elementos que

contem. Depende do objeto window, mas também pode depender do objeto frame nocaso de que a página esteja sendo mostrada em um frame.

Propriedades do objeto documentVejamos uma lista das propriedades do objeto document e logo veremos algum

exemplo.– alinkColor - Cor dos links ativos– Anchor - Uma âncora da página. Consegue-se com a etiqueta <Aname="nome_da_ancora">. Acessa-se pelo seu nome.– anchors array - Um array das âncoras do documento.– Applet - Um applet da página. Acessa-se pelo seu nome. (Javascript 1.1)– applets array - Um array com todos os applets da página. (Javascript 1.1)– Area - Uma etiqueta <area>, das que estão vinculadas aos mapas de imagens (Etiqueta ). Acessa-se peloseu nome. (Javascript 1.1)– bgColor - A cor de fundo do documento.– classes - As classes definidas na declaração de estilos CSS. (Javascript 1.2)– cookie - Um cookie.– domain - Nome do domínio do servidor da página.– Embed - Um elemento da página incrustado com a etiqueta <embed>. Acessa-se pelo seu nome.(Javascript 1.1)– embeds array - Todos os elementos da página incrustados com <embed>. (Javascript 1.1)– fgColor - A cor do texto. Para ver as mudanças há que reescrever a página.– From - Um formulário da página. Acessa-se pelo seu nome.– forms array - Um array com todos os formulários da página.– ids - Para acessar a estilos CSS. (Javascript 1.2)– Image - Uma imagem da página web. Acessa-se pelo seu nome. (Javascript 1.1)– images array - Cada uma das imagens da página introduzidas em um array. (Javascript 1.1)– lastModified - A data de última modificação do documento.– linkColor - A cor dos links.– Link - Um link da página. Acessa-se pelo seu nome.– links array - Um array com cada um dos links da página.– location - A URL do documento que se está visualizando. É somente de leitura.– referrer - A página da qual vem o usuário.– tags - Estilos definidos às etiquetas de HTML na página web. (Javascript 1.2)– title - O título da página.

O objeto documenté a página atualque está sendo

visualizadamomento.

Page 208: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

208Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

189

– URL - O mesmo que location, mas é aconselhável utilizar location já que URL não existe em todos osnavegadores.– vlinkColor - A cor dos links visitados.

Métodos do documentVemos uma lista dos eventos disponíveis no objeto document, localizado abaixo do objeto window na

hierarquia de objetos de Javascript.– captureEvents() - Para capturar os eventos que acontecem na página web. Recebe como parâmetro oevento que se deseja capturar.– close() - Fecha o fluxo do documento. (Será visto mais adiante neste manual um artigo sobre o fluxo dodocumento)– contextual() - Oferece uma linha de controle dos estilos da página. No caso de desejarmos especificá-loscom Javascript.– getSelection() - Devolve um string que contem o texto que foi selecionado. Funciona somente emNetscape.– handleEvent() - Invoca o manipulador de eventos do elemento especificado.– open() - Abre o fluxo do documento.– releaseEvents() - Libera os eventos capturados do tipo que se especifique, enviando-os aos objetosseguintes na hierarquia.– routeEvent() - Passa um evento capturado através da hierarquia de eventos habitual.– write() - Escreve dentro da página web. Podemos escrever etiquetas HTML e texto normal.– writeln() - Escreve igual que o método write(), embora coloque uma quebra de linha no final.

18.12.15 Objeto Form - FormulárioNo JavaScript utiliza-se um objeto, denominado form, para referenciar os elementos dos formulários, que

são os tradicionalmente usados em HTML. Vejamos uma descrição do que é o objeto form e qual o conjunto depropriedades e métodos que utiliza.

Propriedades– action - Uma string contendo o valor a atribuir ao atributo action, do elementoHTML <form>, que contém o script CGI a ser executado quando o conteúdo doformulário é submetido.– elements - Um array contendo uma entrada correspondente a cada elementoexistente no formulário (campos de texto, caixas de escolha, etc...).– encoding - Tipo de codificação MIME utilizado no conteúdo enviado para oservidor (correspondente ao atributo enctype, do elemento HTML <form>.– length - Número de elementos contidos no formulário, ou seja, o comprimentodo array elements.– method - Identifica o atributo method.– name - String contendo o nome da form (correspondente ao atributo name).– target - Por fim, este parâmetro que traduz o target do elemento <form> e queé utilizado para conter o nome da Frame e que a form é utilizada.

Métodos– submit()

Submete o formulário para o programa CGI ou server side script correspondente. Os formulários em HTMLsão construídos com base num conjunto de elementos distintos, usados para a entrada dos dados. Os scriptsJavaScript operaram sobre os elementos componentes dos formulários, bem como sobre os seus conteúdos,utilizando, para tal, as propriedades e métodos dos objectos associados.

Exemplo do uso desses objetos para a validação de formulários:

Um documentopode conter váriosforms, razão pelaqual os objetos de

tipo form seagrupam em

arrays de forms.

Page 209: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

209Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

190

<html><head><title> Encomenda de Pizzas </title><script language = "JavaScript">function validar(form){

// Testa se o utilizador escolheu pelo menos 1 Pizzaif(form.pizza.selectedIndex == 0 || form.quantp.selectedIndex == 0 ){

window.alert("Tem que seleccionar pelo menos 1 Pizza!");return(false);

}else{

// Testa se os dados para entrega estão preenchidosvar s = form.nome.value;var s1 = form.morada.value;var s2 = form.telefone.value;if( (s.length < 5) || (s1.length < 6) || (s2.length < 9) ){

window.alert("preencha correctamente o seu Nome, Morada e Telefone");return(false);

}else{

// Testa se os dados de pagamento estão correctosif (form.pag[0].checked != true && form.pag[1].checked != true

&& form.pag[2].checked != true ){

window.alert("Escolha a forma de pagamento!");return(false);

} else{

if(form.pag[0].checked == true && form.nvisa.value.length != 12){

window.alert("Introduza correctamente o seu numero VISA");return(false);

}else{

return(true);// Só neste caso e que é autorizada a encomenda!

}}

}}

}</script></head><body><h2> Ficha de Encomenda de Pizzas </h2><p/><form name = "PizzaExp" method="post" action = "mailto:[email protected]" onSubmit ="return validar(document.PizzaExp)"><table>

<tr><td> Qual a Pizza a encomendar? </td><td>

<select name="pizza"><option> Marguerita </option><option> Capriciosa </option><option> Quatro Estações </option><option> Calzone </option><option> Tropical </option><option> Maritima </option>

</select>

Page 210: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

210Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

191

</td><td> Quantidade: </td><td>

<select name = "quantp"><option> 0 </option><option> 1 </option><option> 2 </option><option> 3 </option><option> 4 </option><option> 5 </option><option> 6 </option>

</select></td>

</tr><tr>

<td> Qual a bebida? </td><td>

<select name="bebida"><option> Coca Cola </option><option> Seven Up </option><option> Água </option><option> Cerveja </option>

</select></td><td> Quantidade: </td><td>

<select name = "quantb"><option> 0 </option><option> 1 </option><option> 2 </option><option> 3 </option><option> 4 </option><option> 5 </option><option> 6 </option>

</select></td>

</tr></table><table>

<tr><td> <input type="checkbox" name= "opcao1" /> Extra Queijo </td><td> <input type="checkbox" name= "opcao2" /> Massa Grossa </td><td> <input type="checkbox" name= "opcao3" /> Pimentos </td><td> <input type="checkbox" name= "opcao4" /> Cogumelos </td>

</tr></table><hr/><table>

<tr><td> <strong> Dados para entrega: </strong> </td>

</tr><tr>

<td> Nome: </td><td> <input type = "text" name="nome" size = "40" > </td><td> Morada: </td><td> <input type = "text" name= "morada" size = "40" > </td>

</tr><tr>

<td> Telefone: </td><td> <input type = "text" name = "telefone" > </td>

</tr></table>

Page 211: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

211Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

192

<hr/><table>

<tr><td> <strong> Forma de pagamento: </strong> </td>

</tr><tr>

<td> <input type = "radio" name = "pag" /> VISA </td><td> <input type = "radio" name = "pag" /> Contra entrega </td><td> <input type = "radio" name = "pag" /> Factura (30 dias,+15% ) </td>

</tr></table><table>

<tr><td> Número do cartão VISA </td><td> <input type = "text" name = "nvisa" /> </td>

</tr></table><hr/>

<input type = "submit" value = "Enviar!" /><input type = "reset" value = "Limpar" />

</form></body></html>

Page 212: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

212Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

193

18.12.16 DiálogosMétodo Alert()

A finalidade deste método é emitir uma caixa de diálogo do windows conforme mostrado no exemplopassado com uma mensagem e um botão de OK. Este método é pertencente ao objeto window do JavaScript,porém seu uso com a sintaxe de ponto é opcional, assim sendo observe a sintaxe de seu funcionamento e oexemplo da próxima figura:

window.alert("Meu Primeiro Script");

ou

alert("Meu Primeiro Script"); ]

Método Confirm()Uma outra alternativa além do método alert() está no método confirm() que exibe uma caixa de diálogo e

os botões de OK e CANCELAR. Caso seja pressionado o botão OK, o método retornará o valor booleano TRUE epressionado o botão CANCELAR, é retornado o valor FALSE.

Com isto, o usuário poderá determinar uma tomada de decisão dentro de seu script. Assim como o métodoalert(), o método confirm é pertencente ao objeto window, sendo seu uso opcional, observe sua sintaxe abaixo eveja o exemplo da caixa de diálogo presente na figura a seguir:

window.confirm("Tem Certeza??");

ou

confirm("Tem Certeza??");

18.12.17 StatusPara adicionar status em sua página na web, nos links, etc..., basta usar o metodo status() do objeto

window. Exemplo:

– Ao carregar a página:

<body onload=”window.status('Site do fulano de tal')”>texto, imagem, links, midia...

<body>

Page 213: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

213Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

194

– No link:

<body><a href=”www.google.com.br”

onmouseover=”window.status(’site do Google')”>G</a><a href=”www.3way.com.br”

onmouseover=”window.status(’site da 3way')”>3Way</a></body>

O método status pode ser usado em qualquer elemento HTML se ele suportar algum evento.

18.12.18 NavigatorNeste objeto ficam armazenadas as informações sobre o browser que está sendo utilizado. Forma geral:

Navigator.propriedade.

Propriedades– appCodeName - Armazena o codnome do browser.– appName - Armazena o nome do browser.– appVersion - Armazena a versão do browser.– userAgent - Armazena o cabeçalho (user-agent) que é enviado para o servidor, no protocolo HTTP, istoserve para que o servidor identifique o software que está sendo usado pelo cliente.

Exemplo:

<script language="javascript">

document.write("Code Name: "+ navigator.appCodeName +"<br>");

document.writeln("Nome: "+ navigator.appName +"<br>");

document.writeln("Versão: "+ navigator.appVersion +"<br>");

document.writeln("Agente: "+ navigator.userAgent +"<br>");

</script>

Saída:

18.12.19 HistoryEste objeto armazena todas as URL das páginas HTML por onde o usuário passou durante a sessão atual do

browser. É uma cópia das informações armazenadas na opção Go da barra de menu do Navigator.Forma geral:

history.propriedadehistory.método

Propriedades– lenght - Informa a quantidade de páginas visitadas.

Métodos– back - Retorna à página anterior, de acordo com a relação de páginas do objeto history. Equivale a clicar obotão (Voltar) do browser.

Ex: history.back()

Page 214: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

214Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

195

– forward - Passa para a próxima página, de acordo com a relação de páginas do objeto history. Equivale aclicar o botão (Próxima Página) do browser.

Ex: history.forward()

– go - Permite que qualquer URL que esteja presente na relação de páginas visitadas do objeto history, sejacarregada.

Ex: history.go(parâmetro)

Existem duas possibilidades para parâmetro:- parâmetro é um número: Ao definir um número, este deve ser inteiro. Se for positivo, a página alvo estáparâmetro páginas à frente. Ao passo que se for negativo, a página alvo está parâmetro páginas para traz.- parâmetro é uma string: Neste caso, o alvo é a URL que mais se assemelhe ao valor da string definida porparâmetro.

18.13 Controle de Documento Via DOMDom em Português significa Modelo de Objetos de Documentos, é a interface

de programação ultilizada para acesso e manipulação de dados em documentos HTMLe XML. Os nós seguem uma hierarquia, tornando, portanto, mais organizado o acesso,a insclusão, a alteração e a excluisão de informações.

Exemplo de nós:

18.13.1 DOM API

– getElementsByTagNameRetorna um array contento a relação dos nodos filhos do elemento especificado.

– childNodesIndica uma lista contendo todos os filhos desse nodo.

– createTextNode(text)Cria um nodo de texto com a string especificada, retornando um objeto do tipo texto (text).

– appendChild( new Child )Adiciona um nodo no final da lista de filhos do nodo especificado.

– createElement(newElementName)Cria um elemento do tipo especificado. A instância retornada implementa a interface do elemento,e, portanto, os atributos podem ser especificados no objeto de retorno. Se o nome informadopossuir algum caractere inválido, será gerada a exceção INVALID_CHARACTER_ERR.

– removeChild(theChild)Remove o nodo especificado na lista de filhos e o retorna.

– getAttribute(nome)Pega o atributo de um determinado elemento.

– setAttribute(nome, valor)Atribui um valor a um determinado atributo do elememeto.

ul

li li li

texto01

texto02

texto03

É um modelo quedisponibiliza os dadoscomo um conjunto de

nós, os quais podem seracessados por meio deum código JavaScript.

Page 215: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

215Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

196

Exemplos:Script que adiciona nodos filhos a uma lista de nomes.

<html><head><script>function InserirNome(){

var nome = document.Form.nome.value; //pega o valor digitado no campo nomevar lista = document.getElementById('listaNomes');//referencia atributo id listavar novoElemento = document.createElement('li');var novoNome = document.createTextNode(nome);lista.appendChild(novoElemento);novoElemento.appendChild(novoNome);

}</script></head><body><form name="Form">

<input type="text" name="nome"><input type="button" value="inserir" onClick="InserirNome()">

</form><ul id="listaNomes">

<li><b>Esta e minha lista</b></li></ul><body></html>

Acessando os elementos de nós usando os métodos.Lista de Nomes

JoãoMariaZezinhoPauloFrancisco

<html><head><script>function MostraFilhos(){

var nomes = document.getElementsByTagName('li');for(i = 1; i < nomes.length; i++ ){

var nome = nomes[i].childNodes;alert(nome[0].nodeValue);

}}</script>

Page 216: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

216Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

197

</head><body><ul id="listaNomes">

<li><b>Esta e minha lista</b></li><li>Jo&atilde;o</li><li>Maria</li><li>Zezinho</li><li>Paulo</li><li>Francisco</li>

</ul><br><a href="javascript:MostraFilhos()">Mostrar Filhos</a><body></html>

18.13.2 Marcar ou desmacar um conjunto de checkboxes<html><head>

<title>Marcar e Desmarcar um conjunto de checkebox</title><script>function selecionarTodos(marcacao, total){

for( i=1; i<=total; i++ ){

document.getElementById('chk_'+i).checked = marcacao;}

}</script></head><body><input type="checkbox" name="marcador"onclick="selecionarTodos(this.checked,5);">Marcar Todos<div id="itens">

<input type="checkbox" id="chk_1"> Item 1<br><input type="checkbox" id="chk_2"> Item 2<br><input type="checkbox" id="chk_3"> Item 3<br><input type="checkbox" id="chk_4"> Item 4<br><input type="checkbox" id="chk_5"> Item 5<br>

</div></body></html>

Page 217: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

217Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

198

O exemplo acima nos mostra um das maneiras de selecionar vários checkbox. Na função selecionarTodospegamos como parâmetro a marcação do checkbox que usamos como marcador e o número de checkbox quedevemos selecionar. Depois criamos um laço e usando o método document.getElementById indentificamos oscheckbox a serem selecionados e atribuimos a eles o valor de seleção passado como parâmetro.

18.13.3 Evitando Duplo Clique do UsuárioO ondblclick é um evento que ocorre em quase todos os elementos do HTML embora seja mais usado na

Tag body. Ele é o evento responsável pelo duplo clique e podemos executar nele qualquer função. Veja umexemplo para evitar o duplo clique:

<body ondblclick=”alert(’Não é permitido duplo clique nesse site’)”></body>

18.13.4 Validando Campos ObrigatóriosNo exemplo abaixo, fizemos uma validação de formulário via Javascript e DOM. Foi atribuída a variável

elementos um array contendo uma entrada correspondente a cada elemento existente no formulário. Percorrendoesse array verificamos qual o tipo de elemento equivalente ao índice do array e foi verificado o atributo obrigatóriono elemento.

<html><head>

<title>Validação via DOM</title><script language="javascript">function valida(form){

var elementos = form.elements;for(var i=0; i< elementos.length; i++){

if (elementos[i].getAttribute("type")=="text"){if (elementos[i].getAttribute("obrigatorio")=="sim") {

if (elementos[i].value=="") {alert("O campo "+elementos[i].getAttribute("name")

+" é obrigatorio.");return false;

}}

}}

return true;}</script>

Page 218: 3way curso-formacao-java-web-completo
Page 219: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

219Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

199

</head><body><form onSubmit="return valida(this);"><input type="text" name="Nome" obrigatorio="sim"><br><input type="text" name="E-mail" obrigatorio="nao"><br><input type="submit" name="submit"></form></body></html>

18.13.5 Validando o tamanho dos camposNa função verificaTamanho(), é passado como parâmetro a indentificação do campo e o tamanho de

caracteres que ele pode suportar. Enquanto o usuário utiliza o campo adicionando informações, usamos o eventoonkeyUp para verificar o tamanho do campo, essa verificação ocorre quando o usuário libera uma tecla do teclado.

<html><head>

<title>Validação via DOM</title><script language="javascript">

function verificaTamanho(campo,n){

var tamanho = campo.getAttribute('tamanho');if( n > tamanho )

alert("Campo "+campo.getAttribute('name')+" deve ter no maximo "+tamanho+" caracteres!");

campo.value = campo.value.substr(0,tamanho);}

</script></head><body><form>

<input type="text" name="Nome" tamanho="30"onblur="verificaTamanho(this,this.value.length)"><br>

<input type="text" name="E-mail"><br><textarea name="Mensagem" tamanho="100"

onkeyup="verificaTamanho(this,this.value.length)"></textarea><br><input type="submit" name="submit">

</form></body></html>

18.13.6 CookiesUm cookie é um grupo de dados trocados entre o navegador e o servidor de páginas, colocado num arquivo

(ficheiro) de texto criado no computador do usuário. A sua função principal é a de manter a persistência de sessõesHTTP. A utilização e implementação de cookies foi um adendo ao HTTP e muito debatida na altura em que surgiu oconceito, introduzido pela Netscape, devido às consequências de guardar informações confidenciais numcomputador - já que por vezes pode não ser devidamente seguro, como o uso costumeiro em terminais públicos.

Um exemplo é aquele cookie que um site cria para que você não precise digitar sua senha novamentequando for ao site outra vez. Em JavaScript, podemos criar um script para manipulá-los utilizandodocument.cookie.

Esta propriedade contém uma String com o valor de todos os cookies que pertencem ao espaço de nomes(domínio/caminho) do documento que possui a propriedade. A propriedade document.cookie é usada tanto paracriar como para ler cookies.

Para definir um novo cookie, basta atribuir um string em um formato válido para o cabeçalho HTTP Set-Cookie à propriedade document.cookie. Como cookies não podem ter espaços, ponto-e-virgula e outros caracteresespeciais, pode-se usar a função escape (String) antes de armazenar o cookie, para garantir que tais caracteresserão preservados em códigos hexadecimais:

Page 220: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

220Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

200

nome="usuario";

valor=escape("João Grandão"); // converte para Jo%E3o%20Grand%E3o

vencimento="Monday, 22-Feb-99 00:00:00 GMT";

document.cookie = nome + "=" + valor + "expires=" + vencimento;

A propriedade document.cookie não é um tipo string convencional. Não é possível apagar os valoresarmazenados simplesmente atribuíndo um novo valor à propriedade.

Novos valores passados à document.cookie criam novos cookies e aumentam a string:

document.cookie = "vidacurta=" + escape("é só por hoje!");

document.cookie = "vidalonga=" + escape("é por duas semanas!") + "expires=" +vencimento;

Os cookies estão todos armazenados na propriedade document.cookie, em um string que separa oscookies pelo “;”. Se o valor de document.cookie for impresso agora:

document.write(document.cookie);

O texto a seguir será mostrado na página, com os três cookies separados por “;”:

usuario=Jo%E3o%20Grand%E3o; vidacurta=%C9%20s%F3%20por%20hoje%21;

vidalonga=%C9%20por%20duas%20semanas%21

As letras acentuadas, espaços e outros caracteres especiais foram substituídos pelo seu códigohexadecimal, após o “%”. Para decodificar o texto, pode-se usar unescape():

document.write(unescape(document.cookie));

Se não for definido um campo expires com uma data no futuro, o cookie só sobreviverá à sessão atual dobrowser. Assim que o browser for fechado, ele se perderá. Por exemplo, se a sessão atual do browser for encerradae o browser for novamente iniciado, carregando a página que imprime document.cookie, teremos apenas doiscookies, e não três como antes. Isto porque o cookie vidacurta foi definido sem o campo expires:

usuario=Jo%E3o%20Grand%E3o; vidalonga=%C9%20por%20duas%20semanas%21

Geralmente queremos definir o tempo de validade de um cookie de acordo com um intervalo relativo detempo e não uma data absoluta. O formato de data gerado pelo método toGMTString() de Date é compatível como formato aceito pelos cookies. Sendo assim, podemos criar, por exemplo, uma função para definir um cookie comvalidade baseada em um número de dias a partir do momento atual:

function setCookie(nome, valor, dias) {diasms = (new Date()).getTime() + 1000 * 3600 * 24 * dias;dias = new Date(diasms);expires = dias.toGMTString();document.cookie = escape(nome) + "=" +escape(valor) + "; expires=" + expires;

}

A função acima pode ser chamada tanto para criar cookies como para matar cookies no mesmo espaço denomes. Para criar um novo cookie, com duração de 12 horas:

Page 221: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

221Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

201

setCookie("cook", "Um, dois, tres", 0.5);

Para matar o cookie criado com a instrução acima, basta criar um homônimo com data de vencimento nopassado. Podemos fazer isto passando um número negativo como tempo de validade em setCookie():

setCookie("cook", "", -365);

Para extrair as informações úteis de um cookie, usamos os métodos de String que realizam operações comcaracteres (indexOf(), substring(), split()). Uma invocação do método split(";") coloca todos os pares nome/valorem células individuais de um vetor.

cookies = document.cookie.split(";");

// cookies[0] = "usuario=Jo%E3o%20Grand%E3o"

// cookies[1] = "vidacurta=%C9%20s%F3%20por%20hoje%21"

// cookies[2] = "vidalonga=%C9%20por%20duas%20semanas%21"

Uma segunda invocação de split(), desta vez sobre cada um dos pares nome/valor obtidos acima,separando-os pelo “=”, cria um vetor bidimensional. O string cookies[i] se transforma em um vetor para receber oretorno de split("="). Criamos então duas novas propriedades: name e value para cada cookie, que contémrespectivamente, o nome e valor, já devidamente decodificados:

for (i = 0; i < cookies.length; i++) {cookies[i] = cookies[i].split("=");cookies[i].name = unescape(cookies[i][0]);cookies[i].value = unescape(cookies[i][1]);

}

18.14 Dom StyleO DOM STYLE representa um estilo individual declaração. O Estilo objeto pode ser acessado a partir do

documento ou a partir dos elementos a que esse estilo é aplicado. Sintaxe para a utilização das propriedades StyleObject:

document.getElementById("id").style.property = "valor"

18.14.1 Categorias do Style Object:

18.14.1.1 Propriedades Background– background: define todas as propriedades de fundo.

Sintaxe:Object.style.background=background-color background-image background-repeat background-

attachment background-position

Exemplo:

document.body.style.background="#FFCC80 url(bgdesert.jpg) repeat-y";

– backgroundAttachment: define se uma imagem de fundo é fixa ou rola com a página.Sintaxe:

Object.style.backgroundAttachment=scroll|fixed

Page 222: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

222Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

202

Exemplo:

document.body.style.backgroundAttachment="fixed";

– backgroundColor: define a cor de fundo de um elemento.Sintaxe:

Object.style.backgroundColor=color-name|color-rgb|color-hex|transparent

Exemplo:

document.body.style.backgroundColor="#FFCC80";

– backgroundImage: define a imagem de fundo de um elemento.Sintaxe:

Object.style.backgroundImage=url(URL)|none

Exemplo:

document.body.style.backgroundImage=”url(foto.jpg)”;

– backgroundPosition: define a posição inicial de uma imagem de fundo.Sintaxe:

Object.style.backgroundPosition=position

Parâmetros:– top left - top center - top right - center left - center center - center right - bottom left - bottomcenter - bottom right: Se você especificar apenas uma palavra-chave, o segundo valor será center.– x% - y%: O valor x indica a posição horizontal e y o valor indica a posição vertical. O cantoesquerdo superior é de 0% 0%. O canto inferior direito é 100% 100%. Se você especificar apenas umvalor, o outro valor será de 50%.– xpos – ypos: O valor x indica a posição horizontal e y o valor indica a posição vertical. O cantosuperior esquerdo, está 0 0. As unidades poderão ser pixels (0px 0px) ou quaisquer outras unidadesCSS. Se você especificar apenas um valor, o outro valor será de 50%. Você pode misturar% eunidades.

Exemplo:

document.body.style.backgroundPosition = “bottom center”;

– backgroundPositionX: define a posição horizontal de uma imagem de fundo.Sintaxe:

Object.style.backgroundPositionX=position

Parâmetros:left, center, right, x% ( 0% esquerdo e 100% direito ), xpos .

Exemplo:

document.body.style.backgroundPositionX = “right”;

Page 223: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

223Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

203

– backgroundPositionY: define a posição vertical de uma imagem de fundo.Sintaxe:

Object.style.backgroundPositionY=position

Parâmetros:top, center, bottom, y% ( 0% topo e 100% canto inferior ), ypos.

Exemplo:

document.body.style.backgroundPositionY = “center”;

– backgroundRepeat: define se/como uma imagem de fundo vai se repetir.Sintaxe:

Object.style.backgroundRepeat=repeat_value

Parâmetros:repeat ( Default ), repeat-x, repeat-y, no-repeat.

Exemplo:

document.body.style.backgroundRepeat = “repeat-x”;

18.14.1.2 PROPRIEDADES de borda e margem– border: Conjuntos de todas as propriedades para as quatro fronteiras em um elemento.

Sintaxe:Object.style.border=borderWidth borderStyle borderColor

Parâmetros:borderWidth ( espessura ) : thin, medium, thick, lenght.borderStyle: none, hidden, dotted, dashed, solid, double, groove, ridge, inset, outset.borderColor: color-name, color-rgb, color-hex, transparent.

Exemplo:

document.getElementById(“id”).style.border = “1px dotted #FF0000”;

– borderBottom, borderLeft, borderTop, borderRight: define as propriedades para a borda inferior, esquerda, dotopo e a borda direita respectivamente.

Sintaxe:Object.style.borderBottom=borderWidth borderStyle borderColorObject.style.borderLeft=borderWidth borderStyle borderColorObject.style.borderTop=borderWidth borderStyle borderColorObject.style.borderRight=borderWidth borderStyle borderColor

Parâmetros: os mesmos da propriedade border.

Exemplo:document.getElementByTagName(’p’).style.borderBottom = “thick solid black”;document.getElementByTagName(’p’).style.borderLeft = “2px outset red”;document.getElementByTagName(’p’).style.borderBottom = “thick insetrgb(187,187,187)”;document.getElementByTagName(’p’).style.borderBottom = “6px solid #FF00FF”;

Page 224: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

224Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

204

– borderLeftColor, borderBottomColor, borderRightColor, borderTopColor: define a cor para a bordacorrespondente.

Sintaxe:Object.style.borderLeftColor = color-name | color-rgb | color-hex

Exemplo:

document.getElementById(“id”).style.borderLeftColor = “#0000FF”;

document.getElementById(“id”).style.borderBottomColor = “red”;

document.getElementById(“id”).style.borderLeftColor = “rgb(128,128,128)”;

document.getElementById(“id”).style.borderLeftColor = “#F0F0F0”;

– borderLeftWidth, borderBottomWidth, borderRightWidth, borderTopWidth: define as espessuras dasrespectivas bordas.

Sintaxe:Object.style.borderLeftWidth = thin | medium | thick | length;

Exemplo:

document.getElementById(“id”).style.borderLeftWidth = “thin”;

document.getElementById(“id”).style.borderBottomWidth = “medium”;

document.getElementById(“id”).style.borderRightWidth = “2px”;

document.getElementById(“id”).style.borderTopWidth = “thick”;

– borderLeftStyle, borderBottomStyle, borderRightStyle, borderTopStyle: define os estilos das bordascorrespondentes.

Sintaxe:Object.style.borderRightStyle= none | hidden | dotted | dashed | solid | double | groove | ridge

| inset | outset

Exemplo:

document.getElementById(“id”).style.borderLeftStyle = “none”;

document.getElementById(“id”).style.borderBottomStyle = “dotted”;

document.getElementById(“id”).style.borderRightStyle = “double”;

document.getElementById(“id”).style.borderTopStyle = “groove”;

– margin: Define as margens de um elemento (pode ter até quatro valores).Se você especificar um valor, tais como: div{margin: 50 pixels} - todas as quatro margens serão 50pixelsSe você especificar dois valores, tais como: div { margin: 10px 50 pixels } - as margens superiores einferiores serão 50 pixels, margens esquerda e direita será 10pxSe você especificar três valores, tais como: div { margin: 10px 20px 50 pixels } - a margem superior será10 pixels, esquerda e direita margem será 20px, margem inferior será 50pxSe você especificar quatro valores, tais como: div { margin: 10px 20px 30px 50 pixels } - a margemsuperior será 50 pixels, margem direita será 10px, será 20px margem inferior, margem esquerda será30px.

Page 225: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

225Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

205

Sintaxe:Object.style.margin= pos | %;

Exemplo:

document.getElementById(’id’).margin = “10px”;

document.getElementByTagName(’div’).margin = “5%”;

– marginLeft, marginBottom, marginRight, marginTop: define, respectivamente, a margem esquerda, inferior,direita e superior do elemento.

Sintaxe:Object.style.marginRight = pos | %;

Exemplo:

document.getElementById(’id’).marginLeft = “25px”;

document.getElementByTagName(’div’).marginBottom = “15%”;

document.body.style.marginRight = “50px”;

document.getElementById(’id’).marginTop = “0px”;

– padding: Define o estofamento, preenchimento de um elemento (pode ter até quatro valores). É o espaço entre afronteira do elemento e o seu conteúdo.

Se você especificar um valor, tais como: div { padding: 50 pixels } - todos os quatro lados terão umpreenchimento de 50 pixels;Se você especificar dois valores, tais como: div { padding: 10px 50 px } - o topo e canto inferior terá opreenchimento de 10 pixels, esquerda e direita será estofado com 50px;Se você especificar três valores, tais como: div { padding: 10px 20px 50 px } - o preenchimento superiorserá de 10 pixels, esquerda e direita será estofado com 20px, e o inferior será de 50px;Se você especificar quatro valores, tais como: div {padding: 10px 20px 30px 50 px } - o estofo superiorserá de 10px, o direitor será de 20px, inferior de 30px e o esquerdo de 50px.

Sintaxe:Object.style.padding = padding;

Exemplo:

document.getElementById(’id’).padding = “2cm”;

– paddingLeft, paddingBottom, paddingRight, paddingTop: define, respectivamente, o preenchimento esquerdo,inferior, direito e superior de um elemento.

Sintaxe:Objetct.style.paddingLeft = lenght | % ( percentagem em relação ao total da algura do documento);

Exemplo:

document.getElementById(’id’).paddingLeft = “2px”;

document.getElementById(’id’).paddingBottom = “5%”;

document.getElementById(’id’).paddingRight = “3cm”;

document.getElementById('id').paddingTop = “10%”;

Page 226: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

226Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

206

18.14.1.3 Propriedades de Layout– cursor: define o tipo de cursor exibido no documento.

Sintaxe:Object.style.cursor=cursortype

Parâmetros:url, default, auto, crosshair, pointer, move, e-resize, ne-resize, nw-resize, n-resize, se-resize, sw-

resize, s-resize, w-resize, text, help, wait.

Exemplo:

document.getElementById(’id’).cursor = “help”;

– display: define como um elemento será exibido.Sintaxe:

Object.style.display=value

Possíveis valores:- none: o elemento não será exibido;- block: elemento será apresentado como um elemento de nível de bloco, com uma quebra de linhaantes e depois do elemento;- inline: o elemento será apresentado como um elemento inline, sem qualquer linha antes ou após doelemento;- list-item: o elemento será apresentado como uma lista;- run-in: o elemento será apresentado ou em nível de bloco ou em elemento inline, depende docontexto;- compact: o mesmo que run-in;- table: o elemento será apresentado como um bloco table (<table>), com uma quebra de linha antese depois da tabela;

Exemplo:

document.getElementById(“id”).style.display = “none”;

– visibility: define se um elemento deve ser visível ou não.Sintaxe:

Objetct.style.visibility = visible | hidden | collapse

Parâmetros:- visible: default – o elemento pode ser visto.- hidden: o elemento não é visível mais afeta o layout.- collapse: Quando usado em uma linha ou coluna, o elemento não será visível. O espaço invisíveldo elemento é utilizado para outros conteúdos.

Exemplo:

document.getElementById('texto').style.visibility = 'hidden';

Page 227: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

227Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

207

18.14.1.4 Propriedades de Texto– color: define a cor do texto.

Sintaxe:Object.style.color = color-hex | color-name | color-rgb

Exemplo:

document.getElementById('texto').style.display = '#00FF00';

document.getElementById('texto').style.display = 'red';

document.getElementById('texto').style.display = 'rgb(0,0,255)';

– font: define todas as propriedades de texto.Sintaxe:

Objetct.style.font = fontStyle, fontVariant, fontWeight, fontSize, fontFamily.

Exemplo:

document.getElementByName('texto').style.font = 'italic bold 12px arial,serif';

– fontFamily: especifica uma lista de font-family ou generic-font para o elemento.Sintaxe:

Object.style.fontFamily = font1, font2,...

Exemplo:

document.getElementById('texto').style.fontFamily = 'arial,sans-serif';

– fontSize: define o tamanho da fonte no elemento.Sintaxe:

Object.style.fontSize = xx-small | x-small | small | medium | large | x-large | xx-large | smaller |larger | length | %

Exemplo:

document.getElementById('txt').style.fontSize = 'small';

– fontStyle: define o estilo da fonte no elemento.Sintaxe:

Object.style.fontStyle = normal | italic | oblique

Exemplo:

document.getElementById('txt').style.fontStyle = 'italic';

– fontWeight: define a audácia da fonte.Sintaxe:

Object.style.fontWeight = value.

Possíveis valores:- normal: caracteres normais;

Page 228: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

228Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

208

- lighter: define lighter caracteres;- bold: define thick caracteres;- bolder: define thicker caracteres;- 100 – 900: define a espessura a partir de números que vão de 100 a 900. 400 é o mesmo que onormal, e 700 é o mesmo que negrito.

Exemplo:

document.getElementById('txt').style.fontWight = '900';

18.14.2 Alterando componentes do formulário baseado na seleção de um elemento da listaPara fazer um formulário acessível e dinâmico, usamos Javascript com a API DOM. Abaixo temos um

exemplo de formulário usando DOM Style para alterar e/ou inserir novos componentes ao formulário.A função mostraCampo() responsável por mostrar o objeto campo passado como parâmetro se um objeto

checkbox também passado por parâmetro estiver selecionado.A função validaFormulario() como o próprio nome dela já diz, é a função responsável pela falidação do

formulário, obedece o mesmo raciocínio apresentado em um de nossos exemplos anteriores.Usando a função retornaCampos() é possível adicionar ao formulário campos do tipo texto para a inserção

de informações, neste caso, inserção do(s) nome(s) do(s) filho(s) do usuário se ele tiver filhos.

<html><head><title>Formul&aacute;rio</title><script language="javascript">

function mostraCampo(marcador,campo){

var dc = document.getElementById(campo);if(marcador)

dc.style.display = 'block';else

dc.style.display = 'none';}

function validaFormulario(formulario){

elemento = formulario.elements;for(i = 0; i<elemento.length; i++){

if(elemento[i].getAttribute('obrigatorio')=='s'){

if(elemento[i].value.length==0){

alert('O campo '+elemento[i].getAttribute('name')+' e obrigatorio!');

return false;break;

}}

}return true;

}

function retornaCampos(total){

dc = document.getElementById('recebe_campos');dc.innerHTML = '';for( i = 1; i<=total; i++)

Page 229: 3way curso-formacao-java-web-completo

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

1

Sumário

1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações 213 Análise de arquiteturas 213.1 Arquitetura Física e Arquitetura Lógica 213.2 Tipos de aplicações na WEB 213.3 Arquitetura MVC para a Web 213.4 Vantagens da arquitetura MVC 224 Ambiente de desenvolvimento 234.1 Tomcat 234.1.1 Instalar Java JSE SDK (JDK) 244.1.2 Qual versão de JDK utilizar 244.1.2.1 JAVA_HOME 244.2 Instalar Tomcat 254.2.1 Qual versão de Tomcat utilizar 254.2.2 Iniciar e parar o Tomcat 254.2.2.1 [Windows] Tomcat como serviço 254.2.2.2 Tomcat como processo 264.3 Testar Tomcat 264.4 Criar contexto de desenvolvimento 264.4.1 Estrutura de diretórios 264.4.2 Criar contexto de aplicação web 274.4.3 Configurar contexto: web.xml 274.4.4 Ativar contexto 294.4.5 Testar contexto 294.5 Bibliotecas Servlet 294.6 Testar seus servlets 304.7 Testar seus JSPs 314.8 Logs 314.9 Variáveis de Ambiente 32

229Todos os direitos reservados a 3Way Networks

Java WEB

Seja um Profissional Aprendendo com Profissionaiswww.3way.com.br

209

{novoElemento = document.createElement('input');quebraLinha = document.createElement('br');novoElemento.setAttribute('type','text');novoElemento.setAttribute('name','nome'+i);novoElemento.setAttribute('obrigatorio','s');novoNome = document.createTextNode('Nome '+i+' ');dc.appendChild(novoNome);dc.appendChild(novoElemento);dc.appendChild(quebraLinha);

}}

</script></head><tr>

<form onsubmit="return validaFormulario(this)"><table width="700px" cellspacing="0" border="0" cellpadding="0"

align="center"><tr>

<td width="35%">Nome</td><td><input type="text" name="nome" id="nome" obrigatorio="s"></td>

</tr><tr>

<td width="35%">Conjuge</td><td><input type="text" name="conjuge" id="conjuge"

obrigatorio="s"></td></tr>

No checkbox abaixo inserimos no evento onclick dele a funçãomostraCampo que envia como parâmetro o estado dele. Se estiverselecionado permitirá o surgimento do campo de telefone.<tr>

<td>Possui telefone? <input type="checkbox" name="verif_tel"value="true" onclick="mostraCampo(this.checked,'num_tel')">Sim</td><TD><input type="text" name="telefone" id="num_tel"

obrigatorio="n" style="display: none;" value="numero"onfocus="this.value=''"onblur="if(this.value.length==0){ this.value = 'numero'; }">

</TD></tr><tr>

<TD valign="top">Ao inserir no campo Total de Filhos o numerocorrespondente ao total de filhos, a função retornaCampos criacampos de texto para o usuário informar o nome dos filhos e essescampos já vem definidos como obrigatório. Total de Filhos<input type="text" size="2" name="total_filhos" maxlength="1"

onkeyup="retornaCampos(this.value)"></TD><TD id="recebe_campos"></TD>

</tr><tr>

<TD colspan="2" align="center"><input type="submit"value="Enviar Formul&aacute;rio"></TD>

</tr></table></form></body>

</html>

Page 230: 3way curso-formacao-java-web-completo

Siga-nos também no Twitter!twitter.com/3waynet