Curso Formação Java Web COMPLETO



Comments



Description

Java WebApostila www.3way.com.br Java JavaWEB WEB Sumário Sumário 1 1 1.1 1.1 1.2 1.2 1.2.1 1.2.1 1.3 1.3 1.4 1.4 1.5 1.5 1.6 1.6 1.7 1.7 1.8 1.8 1.9 1.9 1.9.1 1.9.1 1.9.2 1.9.2 1.9.3 1.9.3 1.9.4 1.9.4 1.9.5 1.9.5 2 2 2.1 2.1 2.2 2.2 2.3 2.3 2.3.1 2.3.1 2.3.2 2.3.2 2.3.3 2.3.3 3 3 3.1 3.1 3.2 3.2 3.3 3.3 3.4 3.4 4 4 4.1 4.1 4.1.1 4.1.1 4.1.2 4.1.2 4.1.2.1 4.1.2.1 4.2 4.2 4.2.1 4.2.1 4.2.2 4.2.2 4.2.2.1 4.2.2.1 4.2.2.2 4.2.2.2 4.3 4.3 4.4 4.4 4.4.1 4.4.1 4.4.2 4.4.2 4.4.3 4.4.3 4.4.4 4.4.4 4.4.5 4.4.5 4.5 4.5 4.6 4.6 4.7 4.7 4.8 4.8 4.9 4.9 JDBC JDBC Banco Bancode deDados DadosRelacional Relacional JDBC JDBC– –Java JavaDatabase DatabaseConnectivity Connectivity java.sql.DriverManager java.sql.DriverManager Fábrica Fábricade deConexões Conexões Criar CriarBanco Bancode deDados Dadose eTabelas Tabelas Classes ClassesJavabeans Javabeans– –Entidades Entidades Inserindo InserindoDados Dados Fechando Fechandoa aConexão Conexão PreparedStatement PreparedStatementou ouStatement Statement Design DesignPatterns Patterns DAO DAO– –Data DataAccess AccessObject Object Pesquisando Pesquisando Recurso Recursoavaçando: avaçando:O OCursor Cursor Alteração Alteração Exclusão Exclusão Introdução Introduçãoa aJava JavaEnterprise EnterpriseEdition Edition Porque PorqueJava JavaEE EEtem temsido sidotão tãoutilizado? utilizado? O Oque queé éJava JavaEnterprise EnterpriseEdition? Edition? A Aplataforma plataformaJava JavaEnterprise EnterpriseEdition Edition APIs APIs Contêiners Contêiners Deployment Deploymentde deaplicações aplicações Análise Análisede dearquiteturas arquiteturas Arquitetura ArquiteturaFísica Físicae eArquitetura ArquiteturaLógica Lógica Tipos Tiposde deaplicações aplicaçõesna naWEB WEB Arquitetura ArquiteturaMVC MVCpara paraa aWeb Web Vantagens Vantagensda daarquitetura arquiteturaMVC MVC Ambiente Ambientede dedesenvolvimento desenvolvimento Tomcat Tomcat Instalar InstalarJava JavaJSE JSESDK SDK(JDK) (JDK) Qual Qualversão versãode deJDK JDKutilizar utilizar JAVA_HOME JAVA_HOME Instalar InstalarTomcat Tomcat Qual Qualversão versãode deTomcat Tomcatutilizar utilizar Iniciar e parar o Tomcat Iniciar e parar o Tomcat [Windows] [Windows]Tomcat Tomcatcomo comoserviço serviço Tomcat Tomcatcomo comoprocesso processo Testar TestarTomcat Tomcat Criar Criarcontexto contextode dedesenvolvimento desenvolvimento Estrutura Estruturade dediretórios diretórios Criar Criarcontexto contextode deaplicação aplicaçãoweb web Configurar Configurarcontexto: contexto:web.xml web.xml Ativar Ativarcontexto contexto Testar Testarcontexto contexto Bibliotecas BibliotecasServlet Servlet Testar seus servlets Testar seus servlets Testar Testarseus seusJSPs JSPs Logs Logs Variáveis Variáveisde deAmbiente Ambiente 9 8 8 9 8 8 9 8 8 9 8 8 10 9 9 11 10 10 11 10 10 12 11 11 14 12 12 14 12 12 15 13 13 15 13 13 16 14 14 17 15 15 19 16 16 16 19 16 17 20 17 17 20 17 18 21 18 18 21 18 19 23 19 19 23 19 21 25 21 21 25 21 21 25 21 21 25 21 21 27 21 22 28 22 23 23 28 23 23 28 24 24 29 24 24 29 24 24 29 25 25 30 25 25 30 25 25 30 25 25 30 26 26 31 26 26 31 26 26 31 26 26 31 27 27 32 27 27 32 29 29 34 29 29 34 29 29 34 30 30 36 31 31 37 31 31 37 32 32 38 Todos os direitos reservados a 3Way Networks Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 1 1 2 Java WEB Java WEB 4.10 Sumário 5 5.1 1 5.2 1.1 5.3 1.2 5.3.1 1.2.1 5.4 1.3 5.5 1.4 6 1.5 6.1 1.6 6.2 1.7 6.3 1.8 6.4 1.9 6.5 1.9.1 7 1.9.2 7.1 1.9.3 7.2 1.9.4 7.3 1.9.5 7.3.1 2 7.4 2.1 7.4.1 2.2 7.5 2.3 7.5.1 2.3.1 7.5.2 2.3.2 7.5.3 2.3.3 7.6 3 7.6.1 3.1 8 3.2 8.1 3.3 8.2 3.4 8.3 4 8.4 4.1 8.5 4.1.1 9 4.1.2 9.1 4.1.2.1 9.1.2 4.2 9.1.2.1 4.2.1 9.1.3 4.2.2 9.2 4.2.2.1 9.2.1 4.2.2.2 9.2.2 4.3 9.2.3 4.4 9.3 4.4.1 10 4.4.2 10.1 4.4.3 10.1.1 4.4.4 10.2 4.4.5 10.3 4.5 10.3.1 4.6 10.3.1.1 4.7 10.3.2 4.8 10.3.3 4.9 Thread Java Servlet Histórico JDBC O que é um Servlet? Banco de Dados Relacional A classe HttpServlet JDBC – Java Database Connectivity Seqüencia de eventos na HttpServlet java.sql.DriverManager O Ciclo de vida do Servlet no Contêiner Fábrica de Conexões Estrutura de Aplicações Web e o Deployment Descriptor Criar Banco de Dados e Tabelas Request e Response Classes Javabeans – Entidades Introdução Inserindo HTTP Get Dados Fechando HTTP Post a Conexão PreparedStatement ou Statement A Interface HttpServletRequest Design Patterns A Interface HttpServletResponse DAO – Data Access Object Criando a Aplicação Web Pesquisando Introdução Recurso avaçando: O Cursor Endereçamento Relativo Alteração Formulários Exclusão Leitura de dados de um formulário Exemplo: Introdução a de Java Enterprise Edition Manipulação Cookies Porque Java EE tem sido tão utilizado? A Classe javax.servlet.http.Cookie O que é Java Enterprise Edition? Navegação A plataforma Java Enterprise Edition Redirecionamento APIs Reencaminhamento Contêiners Redirect versus Forward0 Deployment aplicações Passagem de de dados entre componentes Web Análise de arquiteturas Atributos da request Arquitetura Física Arquitetura Lógica Gerenciamento de e Sessão Tipos de aplicações na WEB Introdução Arquitetura MVC para a Web Obtendo uma sessão Vantagens da arquitetura MVC Atributos da sessão Ambiente de desenvolvimento Invalidando uma sessão Tomcat Gerenciamento de Sessão sem cookies Instalar Java JSE SDK (JDK) ServletContext, Filtros e Listeners Qual versão de JDK utilizar ServletContext JAVA_HOME Parâmetros de inicialização Instalar Tomcat Adicionando parâmetros de inicialização no Deployment Descriptor (web.xml) Qual versão de Tomcat utilizar Utilizando atributos do ServletContext Iniciar e parar o Tomcat Filtros [Windows] Tomcat como serviço Introdução Tomcat um como processo Criando filtro Testar Tomcat Configuração do Deployment Descriptor Criar contexto de desenvolvimento Listeners Estrutura de diretórios JavaServer Pages Criar contexto de aplicação web Introdução Configurar contexto: Ciclo de vida do JSP web.xml Ativar contexto Estrutura de diretórios Testar contexto Elementos utilizados em JSPs Bibliotecas Diretiva JSP Servlet Testar seus servlets Diretiva Page Testar seus JSPs Diretiva include Logs Declarações Variáveis de Ambiente os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 38 32 45 39 45 39 8 46 40 8 47 41 8 48 42 8 48 42 9 50 44 10 53 46 10 53 46 11 55 48 12 55 48 12 56 49 13 58 51 13 60 53 14 53 60 15 53 60 16 54 61 16 55 62 17 56 63 17 57 64 18 59 67 18 60 68 19 61 69 19 62 70 21 62 70 21 62 70 21 63 71 21 63 71 21 64 72 22 65 73 23 66 74 23 66 74 24 67 75 24 67 75 24 67 75 25 67 75 25 68 77 25 68 77 25 68 77 26 69 78 26 70 79 26 71 80 26 74 83 27 74 83 27 74 83 29 75 84 29 75 84 29 76 85 30 76 85 31 77 87 31 78 88 32 2 1 3 Java WEB Java WEB 10.3.4 Sumário 10.3.5 10.3.6 1 10.3.6.1 1.1 10.3.6.2 1.2 10.3.7 1.2.1 10.4 1.3 10.4.1 1.4 10.4.2 1.5 10.4.3 1.6 10.4.4 1.7 10.4.6 1.8 10.4.7 1.9 10.4.8 1.9.1 10.4.9 1.9.2 10.5 1.9.3 10.5.1 1.9.4 10.5.2 1.9.5 10.5.3 2 10.5.4 2.1 10.6 2.2 10.6.1 2.3 10.6.2 2.3.1 10.6.3 2.3.2 10.6.4 2.3.3 10.8.5 3 11 3.1 11.1 3.2 11.2 3.3 11.2.1 3.4 11.2.2 4 11.2.3 4.1 11.2.3.1 4.1.1 11.2.3.2 4.1.2 11.2.4 4.1.2.1 11.2.5 4.2 11.2.6 4.2.1 11.3 4.2.2 12 4.2.2.1 12.1 4.2.2.2 12.2 4.3 12.3 4.4 12.4 4.4.1 12.4.1 4.4.2 12.4.2 4.4.3 12.4.2.1 4.4.4 12.4.2.4 4.4.5 12.5 4.5 12.5.1 4.6 12.5.2 4.7 12.5.3 4.8 13 4.9 Expressões Scriptlets Ações JDBC <jsp:include> Banco de Dados Relacional <jsp:forward> JDBC – Java Database Connectivity Comentários java.sql.DriverManager Objetos implícitos Fábrica de Conexões page Criar Banco de Dados e Tabelas config Classes Javabeans request e response – Entidades Inserindo Objeto out Dados Fechando a Conexão session PreparedStatement ou Statement application Design Patterns pageContext DAO – Data Access Object Exception Pesquisando JavaBeans Recurso avaçando: O Cursor <jsp:useBean> Alteração <jsp:setProperty> Exclusão <jsp:getProperty> Introdução a Javacom Enterprise Edition Usando JavaBeans Ações JSP Porque Java EE tem sido tão utilizado? Componentes Web Reutilizáveis O que é Java Enterprise Edition? Fragmentos JSP A plataforma Diretiva includeJava Enterprise Edition APIs<jsp:include> Ação Contêiners Ação <jsp:param> Deployment de aplicações Ação <jsp:foward> Análise de arquiteturas Expression Language OArquitetura que é EL Física e Arquitetura Lógica Tipos na WEB Sintaxe de de aplicações EL Arquitetura MVC para Literais e Operadores a Web Vantagens da arquitetura MVC Variáveis Ambienteem de desenvolvimento Navegação variáveis Tomcat ponto (.) Operador Instalar Java Operador [ ] JSE SDK (JDK) Qual versão de JDK utilizar Navagação em Arrays e Listas JAVA_HOME Navegação em Mapas Instalar Tomcat Objetos implícitos Qual versão de Tomcat utilizar Habilitando e Desabilitando EL e scriptlets Iniciar e parar o Tomcat JavaServer Pages Standard Tag Library ( JSTL ) O[Windows] que é JSTL Tomcat como serviço Tomcat processo Instalaçãocomo da JSTL Testar Tomcat Como usar JSTL em uma página JSP Criar contexto Biblioteca Core de desenvolvimento Estrutura de diretórios Suporte a variáveis c: set e c:remove Criar contexto de aplicação web Controle de Fluxo Configurar contexto: web.xml Condicional <c:if>,<c:choose> Ativar contexto Iteradores <c:forEach> e <c:forTokens> Testar contexto Biblioteca de Internacionalização Bibliotecas Servlet Locale Testar seus servlets Mensagens Testar seusde JSPs Formatação Números e Datas Logs Tratamento de erros em aplicações Web Variáveis de Ambiente 7888 7989 7989 8 7989 8 8090 8 8090 8 8191 9 8191 10 8292 10 82 92 11 8393 12 83 93 12 83 93 13 8393 13 84 94 14 84 94 15 85 95 16 86 96 16 86 96 17 86 96 17 87 98 18 87 98 18 88 99 19 89 100 19 90 101 21 90 101 21 91 102 21 91 102 21 91 102 21 92 103 22 93 104 23 93 104 23 93 104 24 93 104 24 93 104 24 94 105 25 94 105 25 95 106 25 96 108 25 96 108 26 96 108 26 96 108 26 97 109 26 98 110 27 99 111 27 99 111 29 100 112 29 102 114 29 102 114 30 103 115 31 105 117 31 106 118 32 3 1 4 Todos os direitos reservados a 3Way Networks Seja um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br Java WEB Java WEB 13.1 Sumário 13.1.1 13.1.2 1 13.1.3 1.1 13.2 1.2 13.2.1 1.2.1 13.2.2 1.3 13.2.3 1.4 14 1.5 14.1 1.6 14.2 1.7 14.3 1.8 14.4 1.9 14.4.1 1.9.1 14.4.1.1 1.9.2 14.4.1.2 1.9.3 14.4.1.3 1.9.4 14.4.1.4 1.9.5 14.4.2 2 14.4.3 2.1 15 2.2 15.1 2.3 15.2 2.3.1 15.2.1 2.3.2 15.2.2 2.3.3 15.2.3 3 16 3.1 16.1 3.2 16.2 3.3 16.3 3.4 16.4 4 16.4.1 4.1 16.4.2 4.1.1 16.4.3 4.1.2 16.5 4.1.2.1 16.5.1 4.2 16.5.2 4.2.1 17 4.2.2 17.1 4.2.2.1 17.2 4.2.2.2 17.3 4.3 17.4 4.4 17.5 4.4.1 17.6 4.4.2 17.7 4.4.3 18 4.4.4 18.1 4.4.5 18.2 4.5 18.3 4.6 18.4 4.7 18.5 4.8 18.6 4.9 Configuração de páginas de erro Declarando uma página de erro geral Declarando página de erro para uma exceção mais específica JDBC de erro http Página Banco deerros Dados Relacional Tratando em Servlets JDBC – Java Database Connectivity Criando nossa Exception java.sql.DriverManager Servlet que dispara Exception Fábrica de Conexões Mapeamento no Deployment Descriptor Criarpara Banco de DadosWeb e Tabelas MVC Aplicações Classes Javabeans – Entidades Por que Combinar Servlets e JSP? Inserindo Dados Mal Entendidos Sobre MVC Fechando a Conexão Implementando MVC com RequestDispatcher PreparedStatement ou Statement Framework MVC STRUTS Design Patterns Controller DAO – Data Access Object ActionServlet Pesquisando Action Recurso avaçando: O Cursor ActionForm Alteração Arquivo strutsconfig.xml Exclusão Model (Modelo) Introdução a Java Enterprise Edition View (Visualização) Porque Java Custom Tags EE tem sido tão utilizado? O que é Java Enterprise Edition? Introdução A plataforma Java Enterprise Edition Como funcionam as Custom Tags? APIs A classe Tag Handler Contêiners Arquivo Descritor de Tag Library Deployment O Arquivo JSPde aplicações Análise Tag File de arquiteturas Arquitetura Física e Arquitetura Lógica O que é um Tag File Tipos de aplicações na WEB Utilizando Tag Files em uma página JSP Arquitetura MVC para Tag Files empacotados a Web Vantagens da arquitetura MVC Diretivas Ambiente de desenvolvimento tag Tomcat attribute Instalar Java JSE SDK (JDK) variable Qual versão de JDK utilizar Standard Actions JAVA_HOME <jsp:invoke/> Instalar Tomcat <jsp:doBody/> Qual versão Simple Tag de Tomcat utilizar Iniciar euma parar o Tomcat O que é Simple Tag [Windows] Tomcat como serviço Ciclo de Vida Tomcat como processo Overview das classes envolvidas Testar Tomcat Criando SimpleTags Criar contexto de desenvolvimento Mapeamento de tlds em páginas Jsp Estrutura de diretórios Corpo da Tag Criar contexto de aplicação web Tópicos Avançados: definindo atributos Configurar contexto: web.xml HTML e JavaScript Ativar contexto Browsers Testar contexto HTTP UserAgent Bibliotecas Servlet Useragent String Testar seus servlets O Documento HTML Testar seus JSPs O Modelo de Objetos Logs e XML HTML Variáveis de Ambiente 118 106 118 106 120 107 8 120 107 8 120 107 8 120 107 8 108 121 9 108 121 10 109 122 10 109 122 11 109 122 12 109 122 12 111 124 13 111 124 13 111 124 14 112 125 15 113 126 16 114 127 16 116 129 17 116 129 17 116 129 18 116 129 18 116 129 19 116 129 19 117 130 21 118 132 21 118 132 21 118 132 21 118 132 21 119 133 22 120 134 23 120 134 23 121 135 24 122 136 24 122 136 24 122 136 25 123 137 25 124 138 25 124 138 25 124 138 26 124 138 26 125 139 26 125 139 26 126 140 27 127 141 27 128 142 29 128 142 29 128 142 29 129 143 30 129 143 31 129 145 31 130 145 32 4 1 5 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br Java WEB Java WEB 18.7 O Valor Semântico de um Documento Sumário XML 18.8 18.9 DOCTYPE 1 JDBC 18.10 A linguagem HTML 1.1 Banco de Dados Relacional 18.10.1 Introdução 1.2 JDBC – Java Connectivity 18.10.2 Estrutura do Database documento html 1.2.1 java.sql.DriverManager 18.10.2.1 Características das Tags HTML 1.3 Fábrica de Conexões 18.10.2.2 Atributos 1.4 Criar Banco de Dados e Tabelas 18.10.2.3 Textos 1.5 Classes Javabeans – Entidades 18.10.2.4 Caracteres Especiais 1.6 Inserindo Dados 18.10.3 Listas 1.7 Fechando a Conexão 18.10.3.1 Listas Ordenadas 1.8 PreparedStatement ou Statement 18.10.3.2 Listas Não – Ordenadas 1.9 Design Patterns 18.10.3.3 Exemplo de Lista de Conteudo 1.9.1 DAO – Data Access Object 18.10.4 Hyperlinks 1.9.2 Pesquisando 18.10.4.1 TAG <A> 1.9.3 Recurso 18.10.4.2 Caminho avaçando: Relativo O Cursor 1.9.4 Alteração 18.10.4.3 Caminho Absoluto 1.9.5 Exclusão 18.10.4.4 O Atributo Target 2 Introdução a Java Enterprise Edition 18.10.4.5 Uso com Imagens 2.1 Porque Java EE tem sido tão utilizado? 18.10.5 Tabelas 2.2 OTAG que<TR> é Java Enterprise Edition? 18.10.5.1 A 2.3 A plataforma 18.10.5.2 A TAG <TD> Java Enterprise Edition 2.3.1 APIs 18.10.5.3 A TAG <TH> 2.3.2 Contêiners 18.10.5.4 Estrutura Formal das Tabelas 2.3.3 Deployment de aplicações 18.10.6 Imagens 3 Análise de arquiteturas 18.10.7 Formulários 3.1 Arquitetura Física e Arquitetura Lógica 18.10.7.1 A TAG <FORM> 3.2 Tipos de aplicações na WEB 18.10.7.2 A TAG <INPUT> 3.3 Arquitetura MVC para a Web 18.10.7.3 Campos de Texto 3.4 Vantagens da arquitetura MVC 18.10.7.4 Campos de Senha 4 Ambiente de desenvolvimento 18.10.7.5 Campos de Seleção 4.1 Tomcat de Escolha 18.10.7.6 Campos 4.1.1 Instalar de Java JSEou SDK (JDK) 18.10.7.7 Campos Lista Menu 4.1.2 Qual versão de JDK utilizar 18.10.7.8 Campos com Múltiplas Linhas 4.1.2.1 Botões JAVA_HOME 18.10.7.9 4.2 Instalarde Tomcat 18.10.7.10 Upload Arquivos 4.2.1 Qual versão de Tomcat utilizar 18.10.7.11 Fieldset 4.2.2 Iniciar e parar o Tomcat 18.10.7.12 Label 4.2.2.1 [Windows] 18.10.8 Outras Tags Tomcat como serviço 4.2.2.2 Tomcat como processo 18.10.8.1 Meta informações <meta> 4.3 Testar Tomcat 18.10.8.2 Frames 4.4 Criar contexto de desenvolvimento 18.10.8.3 IFrame 4.4.1 Estrutura Style de diretórios 18.11 Cascading Sheet – CSS 4.4.2 Criar contexto de aplicação web 18.11.1 Introdução 4.4.3 Configurar contexto: web.xml 18.11.2 Usando CSS com HTML 4.4.4 Ativar no contexto 18.11.2.1 Estilos Próprio Elemento 4.4.5 Testar contexto 18.11.2.2 Estilos no Escopo da Página 4.5 Bibliotecas Servlet 18.11.2.3 Estilos Definidos em Arquivos Externos 4.6 Testar seusde servlets 18.11.3 Declaração Estilos 4.7 Testar seus JSPs 18.11.4 Seletores 4.8 Logs 18.11.4.1 Seletores de Classes 4.9 Variáveis de Ambiente 145 130 145 130 146 131 8 146 131 8 146 131 8 147 132 8 132 147 9 132 147 10 133 148 10 134 149 11 136 151 12 136 151 12 136 151 13 137 152 13 138 153 14 138 153 15 138 153 16 138 153 16 138 153 17 138 153 17 139 154 18 140 155 18 140 155 19 141 156 19 142 157 21 142 157 21 144 159 21 144 159 21 144 159 21 144 159 22 145 161 23 145 161 23 145 161 24 145 161 24 145 161 24 146 162 25 146 162 25 146 162 25 146 162 25 147 163 26 147 163 26 147 163 26 148 164 26 148 164 27 148 164 27 148 164 29 149 165 29 149 165 29 150 166 30 151 167 31 152 168 31 152 168 32 5 1 6 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br Java WEB Java WEB 18.11.4.2 Sintaxe Ultilizada para Definição de Seletores Sumário Propriedade de Estilo CSS 18.11.5 18.11.5.1 Configurações Essenciais 1 JDBC de Unidades 18.11.5.2 Tabela 1.1 Banco de Dados Relacional 18.11.5.3 Fontes 1.2 JDBC – Java Database Connectivity 18.11.5.4 Cores 1.2.1 java.sql.DriverManager 18.11.5.5 Bordas 1.3 Fábrica de ( Conexões 18.11.5.6 Box Model Modelo de Caixa ) 1.4 Criar Banco de Dados e TabelasElementos HTML 18.11.5.7 Aplicando Estilos aos Principais 1.5 Classes Javabeans – Entidades 18.11.5.8 Configurações para Barra de Rolatem 1.6 Inserindo Dados 18.11.5.9 Listas 1.7 Fechando a Customizados Conexão 18.11.5.10 Marcadores 1.8 PreparedStatement ou Statement 18.11.5.11 Hyperlinks 1.9 Design Patterns 18.11.5.12 Botões 1.9.1 DAO – Data Object 18.11.5.13 Campos paraAccess Entrada de Textos 1.9.2 Pesquisando 18.11.5.14 Caixas de Seleção 1.9.3 Recurso avaçando: O Cursor 18.11.5.15 Manipulando Cursores 1.9.4 Alteração 18.11.5.16 Tabelas 1.9.5 Exclusão 18.12 JavaScript 2 Introdução a Java Enterprise Edition 18.12.1 Dentro de um Documento HTML 2.1 Porque Java EE tem sido tão utilizado? 18.12.2 Em um Arquivo Externo 2.2 O que é Java 18.12.3 Tratadores deEnterprise Eventos Edition? 2.3 A plataforma Java Enterprise Edition 18.12.4 Sintaxe da Linguagem 2.3.1 APIs 18.12.5 Declaração de Variáveis 2.3.2 Contêiners 18.12.6 Palavras Reservadas 2.3.3 Deployment de aplicações 18.12.7 Tipos de Dados 3 Análise de arquiteturas 18.12.8 Operadores 3.1 Arquitetura Física e Arquitetura 18.12.9 Comandos Condicionais e Laços Lógica 3.2 Tipos de aplicações na WEB 18.12.10 Arrays 3.3 Arquitetura MVC parade a Web 18.12.10.1 Criação e Inicialização Arrays 3.4 Vantagens da arquitetura MVC 18.12.10.2 Acessando os Elementos do Array 4 Ambiente de desenvolvimento 18.12.10.3 Métodos Especiais 4.1 Tomcat 18.12.11 Funções 4.1.1 InstalarUtilitária Java JSE SDK (JDK) 18.12.12 Classes 4.1.2 Qual versão de JDK utilizar 18.12.12.1 String 4.1.2.1 Date JAVA_HOME 18.12.12.2 4.2 Instalar Tomcat 18.12.13 Objeto Window 4.2.1 Qual versão de Tomcat utilizar 18.12.14 Objeto Document 4.2.2 Iniciar e parar o Tomcat 18.12.15 Objeto Form Formulário 4.2.2.1 [Windows] Tomcat como serviço 18.12.16 Diálogos 4.2.2.2 Tomcat como processo 18.12.17 Status 4.3 Testar Tomcat 18.12.18 Navigator 4.4 Criar contexto de desenvolvimento 18.12.19 History 4.4.1 Estrutura de diretórios Via DOM 18.13 Controle de Documento 4.4.2 Criar API contexto de aplicação web 18.13.1 DOM 4.4.3 Configurar contexto:um web.xml 18.13.2 Marcar ou desmacar conjunto de Checkboxes 4.4.4 Ativar contexto 18.13.3 Evitando Duplo Clique do Usuário 4.4.5 Testar contexto 18.13.4 Validando Campos Obrigatórios 4.5 Bibliotecas 18.13.5 Validando o Servlet Tamanho dos Campos 4.6 Testar seus servlets 18.13.6 Cookies 4.7 Testar seus JSPs 18.14 Dom Style 4.8 Logs 18.14.1 Categorias do Style Object: 4.9 Variáveis de Ambiente 168 152 168 152 168 152 8 168 152 8 170 154 8 172 156 8 158 174 9 159 175 10 160 176 10 161 178 11 161 178 12 162 179 12 163 180 13 164 181 13 164 181 14 164 181 15 164 181 16 166 183 16 167 184 17 167 184 17 167 184 18 167 184 18 167 184 19 168 185 19 168 185 21 169 186 21 170 187 21 171 188 21 172 190 21 173 191 22 173 191 23 173 191 23 176 194 24 177 195 24 177 195 24 182 200 25 186 205 25 188 207 25 189 208 25 193 212 26 193 212 26 194 213 26 194 213 26 195 214 27 195 214 27 197 216 29 198 217 29 198 217 29 199 219 30 199 219 31 201 221 31 201 221 32 6 1 7 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br Java WEB Java WEB 18.14.1.1 Sumário 18.14.1.2 18.14.1.3 1 18.14.1.4 1.1 18.14.2 1.2 1.2.1 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2 2.1 2.2 2.3 2.3.1 2.3.2 2.3.3 3 3.1 3.2 3.3 3.4 4 4.1 4.1.1 4.1.2 4.1.2.1 4.2 4.2.1 4.2.2 4.2.2.1 4.2.2.2 4.3 4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 4.5 4.6 4.7 4.8 4.9 Propriedades Background Propriedades de Borda e Margem Propriedades de Layout JDBC Propriedades de Texto Banco de Dados Relacional Alterando componentes do formulário baseado na seleção de um elemento da lista JDBC – Java Database Connectivity java.sql.DriverManager Fábrica de Conexões Criar Banco de Dados e Tabelas Classes Javabeans – Entidades Inserindo Dados Fechando a Conexão PreparedStatement ou Statement Design Patterns DAO – Data Access Object Pesquisando Recurso avaçando: O Cursor Alteração Exclusão Introdução a Java Enterprise Edition Porque Java EE tem sido tão utilizado? O que é Java Enterprise Edition? A plataforma Java Enterprise Edition APIs Contêiners Deployment de aplicações Análise de arquiteturas Arquitetura Física e Arquitetura Lógica Tipos de aplicações na WEB Arquitetura MVC para a Web Vantagens da arquitetura MVC Ambiente de desenvolvimento Tomcat Instalar Java JSE SDK (JDK) Qual versão de JDK utilizar JAVA_HOME Instalar Tomcat Qual versão de Tomcat utilizar Iniciar e parar o Tomcat [Windows] Tomcat como serviço Tomcat como processo Testar Tomcat Criar contexto de desenvolvimento Estrutura de diretórios Criar contexto de aplicação web Configurar contexto: web.xml Ativar contexto Testar contexto Bibliotecas Servlet Testar seus servlets Testar seus JSPs Logs Variáveis de Ambiente os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 201 221 203 223 206 226 8 207 227 8 208 228 8 8 9 10 10 11 12 12 13 13 14 15 16 16 17 17 18 18 19 19 21 21 21 21 21 22 23 23 24 24 24 25 25 25 25 26 26 26 26 27 27 29 29 29 30 31 31 32 7 1 8 Java Java WEB WEB Sumário 1. JDBC 8 O banco de dados é onde guardamos os dados que pertencem ao 1.1 Banco de Dados Relacional 8 O processo de armazenagem nosso A– maioria dos bancos de dados comerciais hoje em dia são 1.2 sistema. JDBC Java Database Connectivity 8 relacionais e derivam de uma estrutura diferente daquela orientada a objetos. e captura de dados em um8 1.2.1 java.sql.DriverManager Assim como o Conexões nome já diz, um banco de dados relacional armazena banco é chamado de 9 1.3 Fábrica de dados uma série de de Dados informações relacionadas. Grupos relacionados são 1.4 como Criar Banco e Tabelas 10 persistência. expressos na forma de tabelas. Cada tabela contém colunas que definem as 1.5 Classes Javabeans – Entidades 10 propriedades de cada grupo de dados armazenados. 1.6 Inserindo Dados 11 As tabelas definidas num banco de dados são geralmente montadas 1.7 Fechando a Conexão 12 com constraints lógicas que servem para preservar a consistência dos dados. 1.8 PreparedStatement ou Statement 12 Uma constraint é uma restrição de um tipo de dado: cada coluna é definida 1.9 Design Patterns 13 para ser de um tipo de dados específico. O sistema automaticamente rejeita a 1.9.1 DAO – Data Access Object 13 inserção de novos dados que não sejam compatíveis com o tipo de dado 1.9.2 Pesquisando 14 definido pela estrutura da tabela. 1.9.3 Recurso avaçando: O Cursor 15 A biblioteca padrão de persistência em banco de dados em Java é a 1.9.4 Alteração 16 JDBC mas já existem diversos projetos do tipo ORM (Object Relational 1.9.5 Exclusão 16 Mapping) que solucionam muitos problemas que a estrutura da api do JDBC (e 2 Introdução a Java Enterprise Edition 17 ODBC) gerou. 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 1.2. – plataforma Java Database Connectivity 2.3 JDBC A Java Enterprise Edition 18 Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que faz o 2.3.1 Java APIs 19 envio de instruções SQL para qualquer banco de dados relacional. Por meio desta os desenvolvedores podem 2.3.2 Contêiners 19 acessar de dados de não importando quem seja seu fabricante; os desenvolvedores de um JDBC provêem a 2.3.3 bases Deployment aplicações 21 implementação para as interfaces definidas nesta API, fornecendo o mesmo grupo de funcionalidades 21 ao 3 Análise de arquiteturas desenvolvedor do sistema. 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 As seguintes classes API JDBC: 3.3 Arquitetura MVCestão para na a Web 21 3.4 Vantagens da arquitetura MVC 22 - java.sql.Connection – Representa a conexão com o banco de dados. Encapsula os detalhes de como a 4 Ambiente de desenvolvimento 23 comunicação 4.1 Tomcat com o servidor é realizada. 23 java.sql.DriverManager – Gerencia os drivers JDBC utilizados pela aplicação. Em conjunto com24 o 4.1.1 Instalar Java JSE SDK (JDK) e a autenticação, pode fornecer objetos de conexão. 4.1.2 endereço Qual versão de JDK utilizar 24 java.sql.Statement – Fornece meios ao desenvolvedor para que se possa executar comandos SQL. 4.1.2.1 JAVA_HOME 24 - java.sql.ResultSet 4.2 Instalar Tomcat – Representa o resultado de um comando SQL. Estes objetos normalmente são 25 por métodos. 4.2.1 retornados Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 1.2.1. java.sql.DriverManager 4.2.2.1 [Windows] Tomcat como serviço 25 classe, o desenvolvedor pode retornar um objeto de conexão que pode ser usado para 4.2.2.2 Utilizando Tomcatesta como processo 26 executar tarefas relativas ao banco de dados. Dois passos são necessários para tal: 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 o driver JDBC deve estar registrado com DriverManager. Isto pode ser feito utilizando o método 4.4.1 - Primeiro, Estrutura de diretórios 26 Class.forName que carrega a classe do driver para a memória. 4.4.2 Criar contexto de aplicação web 27 utilizando o método getConnection(), mediante informação de uma URL, assim como a senha e 4.4.3 - Segundo, Configurar contexto: web.xml 27 usuário autenticado no banco de dados. A URL deve seguir a sintaxe requisitada pela 4.4.4 o nome Ativardo contexto 29 implementação do banco de dados. 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 Abaixo vemos um exemplo de como se obtém uma conexão com um banco de dados JavaDB (Derby) 4.6 Testar seus servlets 30. Novamente, a URL e o driver específicos para a implementação são utilizados. Para outros bancos de dados, 4.7 Testar seus JSPs 31 verifique a documentação fornecida. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks 1.1. Banco de Dados Relacional 1 JDBC Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 8 1 9 Java JavaWEB WEB import java.sql.*; Sumário 1 JDBC 8 static String url = "jdbc:derby://localhost:1527/3way"; 1.1 Banco de String Dados Relacional 8 static usuario = "3way"; 1.2 JDBC – Java Database Connectivity 8 static String senha = "123"; public static void main(String[] args) { 1.2.1 java.sql.DriverManager 8 try { 1.3 Fábrica de Conexões 9 Class. forName ("org.apache.derby.jdbc.ClientDriver"); 1.4 Criar Banco de Dados e Tabelas 10 Connection con = DriverManager.getConnection(url,usuario,senha); 1.5 Classes Javabeans – Entidades 10 System.out .println("Conectado!"); 1.6 Inserindo Dados 11 con.close(); 1.7 Fechando a Conexão 12 }catch (ClassNotFoundException e) { 1.8 PreparedStatement ou Statement 12 e.printStackTrace(); 1.9 Design Patterns 13 }catch(SQLException e) 1.9.1 DAO – Data Access Object 13 { 1.9.2 Pesquisando 14 e.printStackTrace(); 1.9.3 Recurso 15 } avaçando: O Cursor } 1.9.4 Alteração 16 } 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 Teoricamente basta alterar as três Strings que escrevemos para mudar de um banco para outro. Porém não 2.1 Porque Java EE tem sido tão utilizado? 17 é tudo tão simples assim. Depende de qual padrão SQL o banco suporta. Isso só causa dor de cabeça e existem 2.2 O que é Java Enterprise Edition? 18 certos que resolvem isso facilmente, 2.3 arcabouços A plataforma Java Enterprise Edition como é o caso do Hibernate (www.hibernate.org) e do JPA. 18 2.3.1 APIs 19 2.3.2 Contêiners 19 1.3 Fábrica de Conexões 2.3.3 Em Deployment aplicações 21 determinadode momento de nossa aplicação, gostaríamos de ter o controle sobre a construção dos 3 Análise de arquiteturas 21 objetos da nossa classe. Muita coisa pode ser feita através do construtor, como saber quantos objetos foram 3.1 Arquitetura e Arquitetura Lógica 21 instanciados ou fazer o Física log sobre essas instanciações. As vezes também queremos controlar um processo muito 3.2 de aplicações na WEB 21 repetitivo e Tipos trabalhoso, como abrir uma conexão com o banco de dados. Tomemos como exemplo a classe a seguir 3.3 Arquitetura MVC para a Web 21 que seria responsável por abrir uma conexão com o banco: 3.4 Vantagens da arquitetura MVC 22 import java.sql.*; 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 class FabricaConexao { 4.1.1 public Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 static String url = "jdbc:derby://localhost:1527/3way"; 4.1.2.1 JAVA_HOME 24 static String usuario = "3way"; 4.2 Instalar Tomcat 25 static String senha = "123"; 4.2.1 Qual versão de Tomcat utilizar 25 public static Connection getConexao() throws SQLException{ 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 try{ 4.2.2.2 Tomcat como processo 26 Class.forName("org.apache.derby.jdbc.ClientDriver"); 4.3 Testar Tomcat 26 return DriverManager.getConnection(url,usuario,senha); }catch (ClassNotFoundException e) 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de{diretórios 26 throw new SQLException(e.getMessage()); 4.4.2 Criar contexto de aplicação web 27 } 4.4.3 Configurar contexto: web.xml 27 } 4.4.4 } Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 Poderíamos colocar um aviso na nossa aplicação, notificando todos os programadores ao adquirir uma 4.6 Testar seus servlets 30 conexão: 4.7 Testar seus JSPs 31 4.8 Logs 31 Connection con = FabricaConexao.getConexao(); 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks public class JDBCExemplo { Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 9 1 10 Java JavaWEB WEB Podemos perceber que o método getConexao() é uma fábrica de conexões, isto é, ele fabrica conexões para Sumário nós, não importando de onde elas vieram. Portanto, nada mais natural do que chamar a classe de FabricaConexao 1o método JDBC 8 e de getConexao(). 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 1.4 Criar Banco de Dados e Tabelas 1.2.1 Devemos java.sql.DriverManager criar um banco de dados agenda. Para criá-lo você deve editar a url de conexão do banco para: 8 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 static String url = "jdbc:derby://localhost:1527/agenda;create=true"; 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 A seguinte tabela contatos será usada nos exemplos desse capítulo: 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 CREATE TABLE contatos ( 1.9 Design 13 ID Patterns BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY, 1.9.1 DAO – Data Access Object 13 NOME VARCHAR(255), 1.9.2 Pesquisando 14 EMAIL VARCHAR(255), 1.9.3 Recurso avaçando: O Cursor 15 ENDERECO VARCHAR (255), 1.9.4 Alteração 16 PRIMARY KEY(id) 1.9.5 ); Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 1.5 Classes Javabeans – Entidades 2.2 O que é Java Enterprise Edition? 18 No banco de dados relacional, é comum representar um contato (entidade) em uma tabela de contatos. 2.3 A plataforma Java Enterprise Edition 18 Agora iremos utilizar: 2.3.1 APIs 19 uma classe com métodos do tipo get e set para cada um de seus parâmetros, que representa algum 2.3.2 Contêiners 19 2.3.3 objeto. Deployment de aplicações 21 - uma classe com construtor sem argumentos que representa uma coleção de objetos. 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 A seguir, vê um exemplo de uma classe javabean que seria equivalente 3.2 Tiposvocê de aplicações na WEB 21 ao nosso modelo de entidade do banco de dados: 3.3 Arquitetura MVC para a Web 21 JavabBeans são 3.4 Vantagens da arquitetura MVC 22 public class Contato { classes que possuem o 4 Ambiente de desenvolvimento 23 4.1 Tomcat construtor sem 23 private int id; 4.1.1 Instalar Java JSE SDK (JDK) argumentos e 24 private nome; 4.1.2 Qual versão deString JDK utilizar 24 métodos de acesso do 4.1.2.1 JAVA_HOME 24 private String endereco; tipo get e set. 25 4.2 Instalar Tomcat 4.2.1 Qual versão deString Tomcat utilizar 25 private email; 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 public int getId() { return id; 4.2.2.2 Tomcat como processo 26 } 4.3 Testar Tomcat 26 public void setId(int id) { 4.4 Criar contexto de desenvolvimento 26 this.id = id; 4.4.1 Estrutura de diretórios 26 } 4.4.2 Criar contexto de aplicação web 27 public String getNome() { return web.xml nome; 4.4.3 Configurar contexto: 27 } 4.4.4 Ativar contexto 29 public void setNome(String nome) { 4.4.5 Testar contexto 29 this.nome = nome; 4.5 Bibliotecas Servlet 29 } 4.6 Testar seus servlets 30 public String getEndereco() { return endereco; 4.7 Testar seus JSPs 31 4.8 Logs} 31 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 10 1 11 Java JavaWEB WEB Sumário 1 8 1.1 8 1.2 8 1.2.1 8 1.3 9 1.4 10 } 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 1.6 Dados 1.7 Inserindo Fechando a Conexão 12 Para inserir dados em uma tabela de um banco de dados entidade relacional basta usar a cláusula INSERT 1.8 PreparedStatement ou Statement 12. Precisamos especificar quais os campos que desejamos atualizar e os valores. 1.9 Design Patterns 13 o Data código SQL: Object 1.9.1 Primeiro DAO – Access 13 1.9.2 Pesquisando 14 String sql = "insert into contatos (nome,email,endereco) " 1.9.3 Recurso avaçando: O Cursor 15 + "values ('"+ nome +"','" + email + "','" + endereco +"')"; 1.9.4 Alteração 16 1.9.5 Exclusão 16 O exemplo acima possui dois pontos negativos que são importantíssimos. O primeiro é que o programador 2 Introdução a Java Enterprise Edition 17 que não escreveu o código original não consegue bater o olho e entender o que está escrito. O que o código acima 2.1 Porque Java EE tem sido tão utilizado? 17 faz? Lendo rapidamente fica difícil. Mais difícil ainda é saber se faltou uma vírgula, um fecha parênteses talvez? 2.2 O que é Java Enterprise Edition? 18 Outro problema é o clássico SQLEdition Injection. O que acontece quando o contato a ser adicionado possui 18 no 2.3 A plataforma Java Enterprise nome uma aspas simples? O código sql se quebra todo e pára de funcionar ou o usuário final não é capaz de alterar 2.3.1 APIs 19 seu código SQL para executar aquilo que ele desejam, tudo isso porque escolhemos aquela linha de código e não 2.3.2 Contêiners 19 fizemos de caracteres especiais. 2.3.3 o escape Deployment de aplicações 21 Por Análise esses dois motivos não iremos usar código SQL como mostrado anteriormente... vamos imaginar algo 3 de arquiteturas 21 mais genérico e um pouco mais interessante: 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 String sql = "insert into contatos (nome,email,endereco) values (?,?,?)"; 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 Perceba que não colocamos os pontos de interrogação de brincadeira, e sim porque realmente não 4 Ambiente de desenvolvimento 23 sabemos o que desejamos inserir. Estamos interessados em executar aquele código, mas não sabemos ainda quais 4.1 Tomcat 23 são os parâmetros iremos utilizar 4.1.1 Instalarque Java JSE SDK (JDK) nesse código SQL que será executado, chamado de statement. 24 são de executadas em um banco de dados através da interface PreparedStatement. Para receber 4.1.2 As cláusulas Qual versão JDK utilizar 24 um PreparedStatement relativo à conexão, basta chamar o método prepareStatement , passando como argumento 4.1.2.1 JAVA_HOME 24 o comando SQL com os valores vindos de variáveis preenchidos com uma interrogação. 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 PreparedStatement stmt = con.prepareStatement( 4.2.2 Iniciar e parar o Tomcat 25 "insert into contatos(nome,email,endereco) values (?,?,?)"); 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 Logo em seguida, chamamos o método setString do PreparedStatement para preencher os valores, 4.3 Testar Tomcat 26 passando a posição (começando em 1) da interrogação no SQL e o valor que deve ser colocado. 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 //preenche os valores 4.4.2 stmt.setString(1, Criar contexto de aplicação 27 "3Way web Networks"); 4.4.3 stmt.setString(2, Configurar contexto:"[email protected]"); web.xml 27 stmt.setString(3, "Av. 4ª Radial, 1952 Milão Shopping Center"); 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Servlet ao método execute que executa o comando SQL. 29 Por Bibliotecas fim, uma chamada 4.6 Testar seus servlets 30 stmt.execute(); 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks public void setEndereco(String endereco) { this.endereco = endereco; } JDBC public String getEmail() { Banco de Dados Relacional return email; JDBC } – Java Database Connectivity public void setEmail(String email) { java.sql.DriverManager this.email = email; Fábrica de Conexões } Criar Banco de Dados e Tabelas Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 11 1 12 Java WEB Sumário 1 1.1 1.2 1.2.1 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2 2.1 2.2 2.3 2.3.1 2.3.2 2.3.3 3 3.1 3.2 3.3 3.4 4 4.1 4.1.1 4.1.2 4.1.2.1 4.2 4.2.1 4.2.2 4.2.2.1 4.2.2.2 4.3 4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 4.5 4.6 4.7 4.8 4.9 JDBC Banco de Dados Relacional JDBC – Java Database Connectivity java.sql.DriverManager Fábrica de Conexões Criar Banco de Dados e Tabelas Classes Javabeans – Entidades Inserindo Dados Fechando a Conexão PreparedStatement ou Statement Design Patterns DAO – Data Access Object Pesquisando Recurso avaçando: O Cursor Alteração Exclusão Introdução a Java Enterprise Edition Porque Java EE tem sido tão utilizado? O que é Java Enterprise Edition? A plataforma Java Enterprise Edition APIs Contêiners Deployment de aplicações Análise de arquiteturas Arquitetura Física e Arquitetura Lógica Tipos de aplicações na WEB Arquitetura MVC para a Web Vantagens da arquitetura MVC Ambiente de desenvolvimento Tomcat Instalar Java JSE SDK (JDK) Qual versão de JDK utilizar JAVA_HOME Instalar Tomcat Qual versão de Tomcat utilizar Iniciar e parar o Tomcat [Windows] Tomcat como serviço Tomcat como processo Testar Tomcat Criar contexto de desenvolvimento Estrutura de diretórios Criar contexto de aplicação web Configurar contexto: web.xml Ativar contexto Testar contexto Bibliotecas Servlet Testar seus servlets Testar seus JSPs Logs Variáveis de Ambiente 8 8 8 8 9 10 10 11 12 12 13 13 14 15 16 16 17 17 18 18 19 19 21 21 21 21 21 22 23 23 24 24 24 25 25 25 25 26 26 26 26 27 27 29 29 29 30 31 31 32 1 13 Todos os direitos reservados a 3Way Networks Seja um Profissional Aprendendo com Profissionais www.3way.com.br Java JavaWEB WEB Agora imagine todo esse processo sendo escrito toda vez que desejar inserir algo no banco? Ainda não Sumário consegue visualizar o quão destrutivo isso pode ser? Veja o exemplo abaixo, que abre uma conexão e insere um 1 JDBC 8 contato no banco: 1.1 Banco de Dados Relacional 8 public class JDBCInserir { 1.2 JDBC – Java Database Connectivity 8 public static void main(String[] args) throws SQLException { 1.2.1 java.sql.DriverManager 8 try { 1.3 Fábrica de Conexões 9 Connection con = ConnectionFactory.getConnection(); 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – // Entidades 10 cria um preparedStatement 1.6 Inserindo Dados 11 PreparedStatement stmt = (PreparedStatement) con.prepareStatement("insert into contatos " 1.7 Fechando a Conexão 12 + " (nome,email,endereco) values (?,?,?)"); 1.8 PreparedStatement ou Statement 12 //preenche os valores 1.9 Design Patterns 13 stmt.setString(1, "3Way Networks"); 1.9.1 DAO – Data Access Object 13 stmt.setString(2, "[email protected]"); 1.9.2 Pesquisando 14 stmt.setString(3, "Av. 4ª Radial, 1952 Shopping Milão"); 1.9.3 Recurso avaçando: O Cursor 15 //executa 1.9.4 Alteração 16 stmt.execute(); 1.9.5 Exclusão 16 stmt.close(); 2 Introdução a Java Enterprise Edition 17 System.out.println("Gravado!"); 2.1 Porque Java EE tem con.close(); sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 }catch (SQLException e) { 2.3 A plataforma Java Enterprise Edition 18 e.printStackTrace(); 2.3.1 APIs 19 }finally{ 2.3.2 Contêiners 19 if (con != null){ 2.3.3 Deployment de aplicações 21 con.close(); 3 Análise de arquiteturas stmt.close(); 21 } 3.1 Arquitetura Física e Arquitetura Lógica 21 } 3.2 Tipos de aplicações na WEB 21 } 3.3 Arquitetura MVC para a Web 21 } 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 1.7 Fechando a Conexão 4.1 Tomcat 23 praticado é SDK o uso de alguma API de ORM como o Hibernate ou JPA, porém aqueles que ainda 4.1.1 O mais Instalar Java JSE (JDK) 24 insistem uso de JDBC devem prestar atenção no momento de fechar a conexão. O exemplo dado acima fecha a 4.1.2 no Qual versão de JDK utilizar 24 conexão algum erro ocorra no momento de inserir algum dado no banco de 4.1.2.1 caso JAVA_HOME 24 dados. O comum é fechar a conexão em um bloco finally. 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 Usando Statements, você 1.8 PreparedStatement ou Statement 4.2.2 Iniciar e parar o Tomcat terá que fazer muitas 25 de usar o PreparedStatement , você pode usar uma interface 4.2.2.1 Ao invés [Windows] Tomcat como serviço 25 concatenações, já com 26 mais simples chamada Statement , que simplesmente executa uma cláusula SQL 4.2.2.2 Tomcat como processo PreparedStatements, isso no método execute: 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento fica mais limpo e fácil. 26 = con.createStatement(); 4.4.1 Statement Estrutura stmt de diretórios 26 stmt.execute( 4.4.2 Criar contexto de aplicação web 27 "insert into contato (nome, email, endereco) values" 4.4.3 Configurar contexto: web.xml 27 +"('Nome','Email','Endereco')"); 4.4.4 stmt.close(); Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 É melhor usar a classe PreparedStatement que é mais rápida que 4.6 Testar servlets 30 Statement e deixaseus o código muito mais limpo. Geralmente, seus comandos SQL 4.7 Testar seus JSPs 31 conterão valores vindos de variáveis do programa Java. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 12 1 14 Java JavaWEB WEB Orientação à objetos resolve as grandes dores de cabeças que tínhamos na programação procedural, 1 JDBC 8 restringindo e centralizando responsabilidades. Mas algumas coisas não podemos simplesmente resolver com 1.1 Banco depois Dados Relacional 8 orientação à objetos não existe palavra chave para uma funcionalidade tão específica. Alguns desses pequenos 1.2 JDBC – Java Database Connectivity 8 problemas aparecem com tamanha freqüência que as pessoas desenvolvem uma solução padrão para o mesmo. 1.2.1 java.sql.DriverManager 8 Com isso, ao nos defrontarmos com um desses problemas clássicos, podemos rapidamente implementar essa 1.3 Fábrica de uma Conexões 9 solução genérica com ou outra modificação. Essa solução padrão tem o nome de Design Pattern (padrão de 1.4 Criar Banco de Dados e Tabelas 10 projeto). 1.5 Classes Entidades 10 O livro maisJavabeans conhecido–de Design Patterns foi escrito em 1995 e tem trechos 1.6 Inserindo Dados . Mas o que realmente importa são os conceitos e os A melhor maneira 11 de código em C++ e Smalltalk 1.7 Fechando a Conexão 12 diagramas que fazem desse livro independente de qualquer linguagem. Além de para aprender o que é 1.8 PreparedStatement ou Statement 12 tudo, o livro é de leitura agradável: Design Patterns, Erich Gamma et al. um Design Pattern é 1.9 Design Patterns 13 vendo como surgiu a 1.9.1 DAO – Data Access Object 13 1.9.1 DAO – Data Access Object 1.9.2 Pesquisando necessidade do 14 Já foi possível sentir que colocar código SQL dentro de suas classes de lógica 1.9.3 Recurso avaçando: O Cursor 15 é algo nem um pouco elegante e muito menos viável quando você precisa manter o mesmo. 1.9.4 Alteração 16 seu código. 1.9.5 Exclusão 16 A idéia a seguir é remover o código de acesso ao banco de dados de suas 2 Introdução a Java Enterprise Edition 17 classes de lógica e colocá-lo em uma classe responsável pelo acesso ao mesmo. 2.1 Porque Java EE tem sido tão utilizado? 17 Assim o código de acesso ao banco de dados fica em um lugar só, 2.2 O que é Java Enterprise Edition? 18 conseqüentemente, mais fácil dar manutenção ao mesmo. 2.3 A plataforma Java Enterprise Edition 18 Que tal seria se pudéssemos chamar um método adiciona que adiciona um 2.3.1 APIs 19 Contato ao banco? 2.3.2 Contêiners 19 Em outras palavras quero que o código a seguir funcione: 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 // adiciona o os dados no banco 3.1 Arquitetura e Arquitetura Lógica 21 Misterio bd Física = new Misterio(); 3.2 Tipos de aplicações na WEB 21 bd.adiciona(“meu nome”, “meu email”, “meu endereço”); 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 Mas... Java é orientado a Strings? Vamos tentar novamente: em outras palavras quero que o código a seguir 4 Ambiente de desenvolvimento 23 funcione: 4.1 Tomcat 23 4.1.1 // Instalar Javaum JSE contato SDK (JDK) no banco 24 adiciona bd = Misterio(); 4.1.2 Misterio Qual versão denew JDK utilizar 24 // método muito mais elegante 4.1.2.1 JAVA_HOME 24 bd.adiciona(contato); 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 Tentaremos chegar ao código anterior: seria muito melhor e mais elegante poder chamar um único método 4.2.2 Iniciar e parar o Tomcat 25 responsável pela inclusão, certo? 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 public class TestaInsere { 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 public static void main(String[] args) { 4.4.1 Estrutura de diretórios 26 try { 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 //pronto para gravar 4.4.4 Ativar contexto 29 Contato contato = new Contato(); 4.4.5 Testar contexto 29 contato.setNome("3Way"); 4.5 Bibliotecas Servlet contato.setEmail("[email protected]"); 29 contato.setEndereco("Av. 4ª Radial, Goiânia-GO"); 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 //grave nessa conexão!!! 4.8 Logs 31 ContatoDAO dao = new ContatoDAO(); 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks Sumário 1.9 Design Patterns Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 13 1 15 Java JavaWEB WEB Sumário //método elegante dao.adiciona(contato); 1 JDBC 8 System.out.println("Gravado!"); 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java } Database 8 catch Connectivity (SQLException e) { e.printStackTrace(); 1.2.1 java.sql.DriverManager 8 } 1.3 Fábrica de Conexões 9 }Banco de Dados e Tabelas 1.4 Criar 10 } 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 O código anterior já mostra o poder que iremos alcançar, através de uma única classe seremos capazes de 1.7 Fechando a Conexão 12 acessar o banco de dados e, mais ainda, somente através dessa classe será possível acessar os dados. Esta idéia 1.8 PreparedStatement ou Statement 12 inocente a primeira vista, é capaz de isolar todo o acesso a banco em classes bem simples, cuja instância é um 1.9 Design Patterns 13 objeto responsável por acessar os dados. Da responsabilidade deste objeto surgiu o nome de Data Access Object 1.9.1 DAO – Data Access Object 13 ou simplesmente DAO, um dos mais famosos padrões de desenvolvimento. 1.9.2 Pesquisando 14 O que falta para o código acima funcionar é uma classe chamada ContatoDAO com um método chamado 1.9.3 Recurso avaçando: O Cursor 15 adiciona. Vamos criar uma classe que se conecta ao banco de dados ao ser construída uma instância da mesma: 1.9.4 Alteração 16 1.9.5 import Exclusão 16 java.sql.Connection; 2 Introdução a Java Enterprise Edition 17 import java.sql.SQLException; 2.1 Porque Java EE tem sido tão utilizado? 17 import conexao.FabricaConexao; 2.2 O que é Java Enterprise Edition? 18 public class ContatoDAO 2.3 A plataforma Java Enterprise{Edition 18 2.3.1 APIsprivate Connection conexao; 19 public ContatoDAO() throws SQLException { 2.3.2 Contêiners this.conexao = FabricaConexao.getConexao(); 19 2.3.3 Deployment de aplicações 21 } 3 21 } Análise de arquiteturas 3.1 Arquitetura Física e Arquitetura Lógica 21 Agora que todo ContatoDAO possui uma conexão com o banco podemos focar no método adiciona, que 3.2 Tipos de aplicações na WEB 21 recebe como argumento e é responsável por adicionar o mesmo através de código sql. 3.3 um Contato Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 public void adiciona(Contato contato) throws SQLException { 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 PreparedStatement stmt = (PreparedStatement) 4.1.1 Instalar Java JSE SDK (JDK) 24 this.conexao.prepareStatement( 4.1.2 Qual versão"insert de JDK utilizar 24 into contatos(nome,email,endereco) values (?, ?, ?)"); 4.1.2.1 JAVA_HOME 24 stmt.setString(1,contato.getNome()); stmt.setString(2,contato.getEmail()); 4.2 Instalar Tomcat 25 stmt.setString(3,contato.getEndereco()); 4.2.1 Qual versão de Tomcat utilizar 25 stmt.execute(); 4.2.2 Iniciar e parar o Tomcat 25 stmt.close(); 4.2.2.1 } [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Pesquisando Testar Tomcat 26 1.9.2 4.4 Criar contexto de desenvolvimento 26 Para pesquisar também utilizamos a interface PreparedStatement, de forma que o método executeQuery 4.4.1 Estrutura de diretórios 26 retorna todos os contatos no exemplo a seguir. O objeto retornado é do tipo ResultSet que permite navegar por 4.4.2 Criar contexto de aplicação 27 seus registros através do método next()web . Esse método irá retornar false quando chegar ao fim da pesquisa, portanto 4.4.3 Configurar contexto: web.xml 27 ele é normalmente utilizado para fazer um loop nos registros como no exemplo a seguir: 4.4.4 Ativar contexto 29 pega contexto a conexão e o Statement 4.4.5 // Testar 29 Connection = ConnectionFactory.getConnection(); 4.5 Bibliotecascon Servlet 29 PreparedStatement stmt = con.prepareStatement("select * from contatos"); 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 // executa um select 4.8 Logs 31 ResultSet rs = stmt.executeQuery(); 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 14 1 16 Java Java WEB WEB // itera no ResultSet Sumário 1 8 1.1 8 1.2 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de o Conexões 9, Para retornar valor de uma coluna no banco de dados basta chamar um dos métodos get do ResultSet 1.4 os quais, Criar de Dados e Tabelas 10 dentre o Banco mais comum: getString() . 1.5 Classes Javabeans – Entidades 10 // pega a conexão e o Statement 1.6 Inserindo Dados 11 Connection = ConnectionFactory.getConnection(); 1.7 Fechando acon Conexão 12 PreparedStatement stmt = con.prepareStatement("select * from contatos"); 1.8 PreparedStatement ou Statement 12 1.9 Patterns 13 // Design executa um select 1.9.1 ResultSet DAO – Data Object 13 rsAccess = stmt.executeQuery(); 1.9.2 Pesquisando 14 // itera no ResultSet 1.9.3 Recurso avaçando: O Cursor 15 while (rs.next()) { 1.9.4 Alteração 16 System.out.println(rs.getString("nome") + " :: " + rs.getString("email")); 1.9.5 } Exclusão 16 2 Introdução a Java Enterprise Edition 17 stmt.close(); con.close(); 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 1.9.3 avaçando: O Cursor 2.3.1 Recurso APIs 19 Assim como o cursor do banco de dados, só é possível mover para o próximo registro. Para permitir um 2.3.2 Contêiners 19 processo de leitura parade trás é necessário especificar na abertura do ResultSet que tal cursor deve ser utilizado. 2.3.3 Deployment aplicações 21 Mas, podemos aplicar as idéias de DAO e criar um método getLista() no nosso ContatoDAO: 3 novamente, Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 PreparedStatement stmt = this.conexao.prepareStatement( 3.2 Tipos de aplicações na WEB 21 "select * from contatos"); 3.3 Arquitetura MVC para a Web 21 ResultSet rs = stmt.executeQuery(); 3.4 Vantagens da arquitetura MVC 22 List<Contato> contatos = new ArrayList<Contato>(); 4 Ambiente de desenvolvimento 23 while (rs.next()) { 4.1 Tomcat 23 Contato contato = new Contato(); 4.1.1 Instalar Java JSE SDK (JDK) 24 contato.setNome(rs.getString(“nome”)); 4.1.2 Qual versão de JDK utilizar 24 contato.setEmail(rs.getString(“email”)); 4.1.2.1 JAVA_HOME 24 contato.setEndereco(rs.getString(“endereco”)); 4.2 Instalar Tomcat 25 contatos.add(contato); 4.2.1 } Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 rs.close(); [Windows] Tomcat como serviço 25 stmt.close(); 4.2.2.2 return Tomcat como processo 26 contatos; 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 Crie o método getLista na classe ContatoDAO. 4.4.1 Estrutura de diretórios 26 4.4.2 public Criar contexto de aplicação web 27 List<Contato> getLista() throws SQLException { 4.4.3 Configurar contexto: web.xml 27 PreparedStatement stmt = (PreparedStatement) this .conexao.prepareStatement 4.4.4 Ativar contexto 29 ("select 4.4.5 Testar contexto * from contatos"); 29 ResultSet rs = stmt.executeQuery(); 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets contatos = new ArrayList<Contato>(); 30 List<Contato> 4.7 Testar seus JSPs 31 while (rs.next()) { Contato contato = new Contato(); 4.8 Logs 31 contato.setNome(rs.getString("nome")); 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks while (rs.next()) { } JDBC rs.close(); Banco de Dados Relacional stmt.close(); JDBC – Java Database Connectivity con.close(); Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 15 1 17 Java WEB Sumário 1 1.1 1.2 1.2.1 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2 2.1 2.2 2.3 2.3.1 2.3.2 2.3.3 3 3.1 3.2 3.3 3.4 4 4.1 4.1.1 4.1.2 4.1.2.1 4.2 4.2.1 4.2.2 4.2.2.1 4.2.2.2 4.3 4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 4.5 4.6 4.7 4.8 4.9 JDBC Banco de Dados Relacional JDBC – Java Database Connectivity java.sql.DriverManager Fábrica de Conexões Criar Banco de Dados e Tabelas Classes Javabeans – Entidades Inserindo Dados Fechando a Conexão PreparedStatement ou Statement Design Patterns DAO – Data Access Object Pesquisando Recurso avaçando: O Cursor Alteração Exclusão Introdução a Java Enterprise Edition Porque Java EE tem sido tão utilizado? O que é Java Enterprise Edition? A plataforma Java Enterprise Edition APIs Contêiners Deployment de aplicações Análise de arquiteturas Arquitetura Física e Arquitetura Lógica Tipos de aplicações na WEB Arquitetura MVC para a Web Vantagens da arquitetura MVC Ambiente de desenvolvimento Tomcat Instalar Java JSE SDK (JDK) Qual versão de JDK utilizar JAVA_HOME Instalar Tomcat Qual versão de Tomcat utilizar Iniciar e parar o Tomcat [Windows] Tomcat como serviço Tomcat como processo Testar Tomcat Criar contexto de desenvolvimento Estrutura de diretórios Criar contexto de aplicação web Configurar contexto: web.xml Ativar contexto Testar contexto Bibliotecas Servlet Testar seus servlets Testar seus JSPs Logs Variáveis de Ambiente 8 8 8 8 9 10 10 11 12 12 13 13 14 15 16 16 17 17 18 18 19 19 21 21 21 21 21 22 23 23 24 24 24 25 25 25 25 26 26 26 26 27 27 29 29 29 30 31 31 32 1 18 Todos os direitos reservados a 3Way Networks Seja um Profissional Aprendendo com Profissionais www.3way.com.br Java JavaWEB WEB Sumário 1 JDBC 8 } 1.1 Banco de Dados Relacional 8 rs.close(); 1.2 JDBC – Java Database Connectivity 8 stmt.close(); return contatos; 1.2.1 java.sql.DriverManager 8 } 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 Vamos usarJavabeans o método–getLista() 1.5 Classes Entidadesagora para listar todos os contatos do nosso banco de dados. Crie uma 10 classe chamada TestaListaDAO com um método main : Crie um ContatoDAO: 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 ContatoDAO dao = new ContatoDAO(); 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 Liste os contatos com o DAO: 1.9.1 DAO – Data Access Object 13 1.9.2 List<Contato> Pesquisando contatos = dao.getLista(); 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Itere Alteração 16 nessa lista e imprima as informações dos contatos: 1.9.5 Exclusão 16 2 a Java Enterprise Edition 17 forIntrodução (Contato contato : contatos) { System.out.println("Nome: 2.1 Porque Java EE tem sido tão utilizado? " + contato.getNome()); 17 System.out.println("Email: " + contato.getEmail()); 2.2 O que é Java Enterprise Edition? 18 System.out.println("Endereço: " + contato.getEndereco() + "\n"); 2.3 A plataforma Java Enterprise Edition 18 } 2.3.1 APIs 19 2.3.2 Contêiners 19 1.9.4 Alteração 2.3.3 Deployment de aplicações 21 Agora que você já sabe usar o PreparedStatement para executar qualquer tipo de código SQL e ResultSet 3 Análise de arquiteturas 21 para receber os dados retornados da sua pesquisa fica simples, porém maçante, escrever o código de diferentes 3.1 Arquitetura Física e Arquitetura Lógica 21 métodos de uma classe típica de Dao. 3.2 Tipos de aplicações na WEB 21 Veja primeiro o método altera, que recebe um contato cujos valores devem ser alterados: 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens arquitetura MVC contato) throws SQLException { 22 public void da altera(Contato 4 Ambiente de desenvolvimento 23 PreparedStatement stmt = (PreparedStatement) connection.prepareStatement( 4.1 Tomcat 23 contatos set nome=?, email=?, endereco=? where id=?"); 4.1.1 Instalar Java"update JSE SDK (JDK) 24 stmt.setString(1, 4.1.2 Qual versão de JDK utilizar contato.getNome()); 24 stmt.setString(2, contato.getEmail()); 4.1.2.1 JAVA_HOME 24 stmt.setString(3, contato.getEndereco()); 4.2 Instalar Tomcat 25 stmt.setLong(4, contato.getId()); 4.2.1 Qual versão de Tomcat utilizar 25 stmt.execute(); stmt.close(); 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 } [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 1.9.5 Exclusão 4.3 Testar Tomcat 26 NãoCriar existe nada dede novo nas linhas acima. Uma execução de query! Simples, não? 4.4 contexto desenvolvimento 26 o código para remoção: começa com uma query baseada em um contato, mas usa somente o id dele 4.4.1 Agora Estrutura de diretórios 26 para executar a query do tipo delete : 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 public void remove(Contato contato) throws SQLException { 4.4.4 Ativar contexto 29 PreparedStatement stmt = (PreparedStatement) 4.4.5 Testar contexto 29 Connection.prepareStatement("delete from contatos where id=?"); 4.5 Bibliotecas Servlet 29 stmt.setLong(1, contato.getId()); stmt.execute(); 4.6 Testar seus servlets 30 stmt.close(); 4.7 Testar seus JSPs 31 } 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks contato.setEmail(rs.getString("email")); contato.setEndereco(rs.getString("endereco")); contatos.add(contato); Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 16 1 19 Java JavaWEB WEB Sumário 2 Introdução a Java Enterprise Edition 1 JDBC 2.1 Porque Java EE tem sido tão utilizado? 1.1 Banco de Dados Relacional Além de – ter uma vantagem numérica, pois não elimina parte do 1.2 JDBC Java Database Connectivity mercado que usa um sistema operacional específico, também aumenta a 1.2.1 java.sql.DriverManager integrabilidade da aplicação, ou seja, permite que às empresas integrem os 1.3 Fábrica de Conexões sistemas que estão rodando em diferentes 1.4 Criar Banco de Dados e Tabelas plataformas, como por exemplo o sistema Web, os sistemas que nos MainFrames, os sistemas que são 1.5 Classes Javabeans – estão Entidades executados na máquina do usuário. 1.6 Inserindo Dados EstaFechando é uma agrande vantagem para grandes corporações que 1.7 Conexão 1.8 PreparedStatement ou de Statement enfrentam a batalha da integração sistemas. 1.9 Design Patterns Outro fator fundamental no sucesso da plataforma é a participação 1.9.1 DAO – Data Access Object de grandes empresas na especificação das APIs no Java Community Process, 1.9.2 Pesquisando como Oracle, IBM, Apple , que O atuam não só na especificação, mas também 1.9.3 Recurso avaçando: Cursor no desenvolvimento de produtos como Contêiners, IDEs, frameworks, que 1.9.4 Alteração agregam ainda mais confiabilidade a tecnologia. 1.9.5 assim Exclusão 2 Introdução a Java Enterprise Edition Certamente a existência de diversos Contêiners Open-Source e/ou 2.1 Porque Java EE tem sido tão utilizado? Gratuitos, também colabora com o alto índice de adoção da tecnologia. 2.2 O que é Java Enterprise Edition? Além destes fatores, elencamos aqui alguns pontos que podem ser 2.3 A plataforma Java Enterprise Edition atingidos com Java EE, considerados fundamentais para a arquitetura dos 2.3.1 APIs sistemas desenvolvidos 2.3.2 Contêiners atualmente: 12 13 13 14 15 16 16 17 17 18 18 19 19 2.3.3 Deployment de aplicações 21 Escalabilidade 3 Análise de arquiteturas 21 Trata-se de umFísica dos e ades da engenharia e 3.1 Arquitetura Arquitetura Lógica de software que pertence à nova economia globalizada21 3.2 Tipos de aplicações na WEB 21 conectada. Uma campanha de marketing pode fazer com que uma pequena empresa cresça de forma abrupta do 3.3para a noite. Arquitetura MVC para asua Web 21 dia É necessário que a solução seja capaz de acompanhar o crescimento do negócio. 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 Disponibilidade 4.1 Tomcat 23 Com uma linguagem e plataforma confiáveis, podemos contar com sistemas que rodam simultaneamente 4.1.1 Instalar Java JSE SDK (JDK) 24 em mais de Qual um servidor para prevenção 4.1.2 versão de JDK utilizar de falhas. Sistemas conhecidos como cluster de servidores permitem que 24 aplicativos fiquem distribuídos e à prova de falha no data-center hospedeiro. 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 Performance 4.2.2 Quando Iniciar parar o é Tomcat 25 oe assunto computação distribuída, Java tem uma performance muito boa em comparação a 4.2.2.1 [Windows] Tomcat como serviço 25 outras tecnologias. Podemos dizer, por exemplo, que Fortran é mais rápido que Java para resolver um algoritmo 4.2.2.2 isoladamente, Tomcat como processo 26 complexo mas Java, quando distribuído entre servidores, não possui concorrente. 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 Baixo de manutenção 4.4.1 custo Estrutura de diretórios 26 Código bem escrito, objetos bem definidos e documentados, herança, polimorfismo, interfaces da 4.4.2 Criar contexto de aplicação web 27 orientação a objeto e outros aspectos técnicos tornam um software simples de ser mantido no decorrer do tempo, 4.4.3 Configurar contexto: web.xml 27 quando bem planejado e escrito em Java. Sabemos que os aplicativos tendem a ter um ciclo de vida cada vez mais 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 duradouro na empresa, por isto o custo de manutenção do software se torna cada vez mais importante. 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks Java EE é multi-plataforma, 8 ou seja, é uma solução que 8 pode ser utilizada 8 computadores com sistema 8 operacional Unix, com Linux,9 10 com Windows, com Apple e 10 também pode ser utilizada11 12 com MainFrames. Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 17 1 20 Java JavaWEB WEB Sumário 2.2 O que é Java Enterprise Edition? JavaJDBC Enterprise Edition é uma plataforma de desenvolvimento de componentes para aplicações em multi1 8 camada, que disponibiliza uma série de serviços de infra-estrutura de alto nível , evitando o desenvolvimento de 1.1 Banco de Dados Relacional 8 código os desenvolvedores do negócio em si. 1.2 complexo JDBC e – aproximando Java Database Connectivity 8 1.2.1 Algumas java.sql.DriverManager das especificações de componentes mais importantes da plataforma Java Enterprise Edition são: 8 1.3 Fábrica de Conexões 9 - JavaServer Pages (JSP): utilizadas para criar páginas Web; 1.4 Criar Banco de Dados e Tabelas 10 - Servlets: geralmente utilizado para construir a camada de controle da aplicação, viabilizando a integração 1.5 Classes Javabeans – Entidades 10 entre as páginas JSP e a camada de negócios; 1.6 Inserindo Dados 11 - Enterprise JavaBeans : utilizados para criar componentes distribuídos, representando dados ou regras 12 de 1.7 Fechando a Conexão 1.8 PreparedStatement ou Statement 12 negócio. 1.9 Design Patterns 13 1.9.1 Nenhum DAO – Data Access Object 13 destes componentes foi idealizado para ser executado diretamente pela máquina virtual, todos 1.9.2 Pesquisando eles devem ser executados e controlados por um Contêiner específico como podemos observar na figura abaixo: 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar Figura 2.1 – Java EE servidores e contêiners 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25  Web Contêiner: hospeda Servlets, ); 4.2.1 Qual versão de Tomcat utilizar JSPs (Java Server Pages) e arquivos estáticos (HTMLs, JavaScript, XML 25 qualquer classe Java como, por exemplo, APIs de envio de e-mail ou acesso a banco de dados. 4.2.2 utiliza Iniciar e parar o Tomcat 25  EJB Contêiner: hospeda Enterprise JavaBeans (EJB) que, por sua vez, também pode utilizar uma série 25 de 4.2.2.1 [Windows] Tomcat como serviço APIs Java, tais como envio de e-mail e acesso a banco de dados. 4.2.2.2 Tomcat como processo 26  Database: Representamos aqui um banco de dados, mas poderíamos, a partir de uma arquitetura Java EE , 4.3 Testar Tomcat 26 acessar arquivos, sistemas legados, ERPs, fila de mensagens e qualquer outra fonte de dados. 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 2.3 A plataforma Java Enterprise Edition 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 Item Descrição 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 Blueprints Design Padrões de codificação e modelagem desenvolvidos por técnicos altamente 4.7 Testar seus 31 Guidelines for Java EE JSPs capacitados, reunindo em documentos e exemplos de código, as melhores práticas de 4.8 Logs 31 desenvolvimento de aplicação Java EE. 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br 18 1 21 Java WEB Sumário 1 1.1 1.2 1.2.1 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2 2.1 2.2 2.3 2.3.1 2.3.2 2.3.3 3 3.1 3.2 3.3 3.4 4 4.1 4.1.1 4.1.2 4.1.2.1 4.2 4.2.1 4.2.2 4.2.2.1 4.2.2.2 4.3 4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 4.5 4.6 4.7 4.8 4.9 JDBC Banco de Dados Relacional JDBC – Java Database Connectivity java.sql.DriverManager Fábrica de Conexões Criar Banco de Dados e Tabelas Classes Javabeans – Entidades Inserindo Dados Fechando a Conexão PreparedStatement ou Statement Design Patterns DAO – Data Access Object Pesquisando Recurso avaçando: O Cursor Alteração Exclusão Introdução a Java Enterprise Edition Porque Java EE tem sido tão utilizado? O que é Java Enterprise Edition? A plataforma Java Enterprise Edition APIs Contêiners Deployment de aplicações Análise de arquiteturas Arquitetura Física e Arquitetura Lógica Tipos de aplicações na WEB Arquitetura MVC para a Web Vantagens da arquitetura MVC Ambiente de desenvolvimento Tomcat Instalar Java JSE SDK (JDK) Qual versão de JDK utilizar JAVA_HOME Instalar Tomcat Qual versão de Tomcat utilizar Iniciar e parar o Tomcat [Windows] Tomcat como serviço Tomcat como processo Testar Tomcat Criar contexto de desenvolvimento Estrutura de diretórios Criar contexto de aplicação web Configurar contexto: web.xml Ativar contexto Testar contexto Bibliotecas Servlet Testar seus servlets Testar seus JSPs Logs Variáveis de Ambiente 8 8 8 8 9 10 10 11 12 12 13 13 14 15 16 16 17 17 18 18 19 19 21 21 21 21 21 22 23 23 24 24 24 25 25 25 25 26 26 26 26 27 27 29 29 29 30 31 31 32 1 22 Todos os direitos reservados a 3Way Networks Seja um Profissional Aprendendo com Profissionais www.3way.com.br Java JavaWEB WEB Processo formal de teste de compatibilidade de Application Server Java EE, garantindo a padronização entre os servidores de diferentes fabricantes. 1 JDBC 8 Reference Implementation A plataforma inclui um servidor chamado de R.I. (Reference Implementation) 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 implementado com 100% das funcionalidades especificadas. Pode ser utilizado para 1.2.1 java.sql.DriverManager 8 validar aplicações Java EE, sendo 100% gratuito e com código fonte disponível. 1.3 Fábrica de Conexões 9 APIs Enterprise JavaBeans, Java Servlets API, Java Server Pages, XML e Messaging. 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 2.3.1 APIs 1.7 Fechando a Conexão 12 O conjunto de APIs Java EE é definido, em sua maioria, por interfaces que podem ser empregadas pelos 1.8 PreparedStatement ou Statement 12 desenvolvedores das aplicações corporativas. Tais APIs possuem vínculos com o núcleo (kernel) do servidor que 1.9 Design Patterns 13 executa voltadas para o Object gerenciamento de recursos e infra-estrutura. 1.9.1 tarefas DAO – Data Access 13 1.9.2 Podemos Pesquisando 14 dizer que, ao desenvolvermos aplicações Java EE através do uso de APIs disponibilizadas no Java 1.9.3 Recurso(Reference avaçando: O Cursor 15 Enterprise Edition Implementation), elas podem ser executadas nos servidores de aplicações que 1.9.4 Alteração 16 tenham implementado as especificações técnicas dos servidores JAVA EE. 1.9.5 Exclusão 16 Contamos com as seguintes APIs na plataforma Java EE: 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 API Descrição 2.3 A plataforma Java Enterprise Edition 18 JDBC Extension Extensão da API JDBC. 2.3.1 APIs 19 Enterprise JavaBeans (EJB) Componentes gerenciados pelo EJB Contêiner , que oferece serviços de 2.3.2 Contêiners 19 transação, multi-threading, persistência automática, entre outros para 21 os 2.3.3 Deployment de aplicações 3 Análise de arquiteturas componentes. 21 3.1 Servlets Arquitetura Física e Arquitetura Lógica frequentemente utilizados para integração entre as páginas 21 Java Componentes 3.2 Tipos de aplicações na WEB 21 Web e a camada de negócio. 3.3 Arquitetura MVC para a Web 21 JavaServer Pages (JSP) API utilizada principalmente para construção de páginas dinâmicas . 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 Java Message Service (JMS) API para tratamento de mensagens assíncronas. 4.1 Tomcat 23 Java API (JTA) 4.1.1Transaction Instalar Java JSE SDK (JDK)API para controle manual de transações. 24 4.1.2 Qual versão de JDK utilizar 24 JavaMail Utilizada para envio e recebimento de e-mails. 4.1.2.1 JAVA_HOME 24 Java API for XML Processing ( JAXP) Processamento de XML. 4.2 Instalar Tomcat 25 4.2.1 Naming Qual versão Tomcat utilizar 25 Java and de Directory API que oferece acesso a Catálogo de Objetos. 4.2.2 Iniciar e parar o Tomcat 25 Interface ( JNDI) 4.2.2.1 [Windows] Tomcat como serviço 25 Java Connector Architecture API que padroniza os conectores para integração de aplicações. 4.2.2.2 Tomcat como processo 26 APIs para construção e utilização de Web Services . Java API for XML Web Services (JAX4.3 Testar Tomcat 26 WS) 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 2.3.2 Contêiners 4.4.4 Contêiners Ativar contexto 29 são servidores de objetos, também chamados de servidores de aplicação que oferecem 4.4.5 Testar contexto 29 serviços e infra-estrutura para a execução de componentes. O conceito de Contêiner é independente da plataforma 4.5 Bibliotecas Servlet 29 Java EE, utilizado em outras linguagens e plataformas. 4.6 Testar seus servlets 30 Existem outros tipos de Contêiner utilizados em Java, considera-se a seguinte divisão de perfil 31 de 4.7 Testar seus JSPs Contêiners Java 4.8 Logse Java EE: 31 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks Sumário Compatibility Test Suite Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 19 1 23 Java JavaWEB WEB Sumário Tipo Descrição / Exemplo 1 JDBCResponsável pelo ciclo de vida da aplicação, gerenciamento de eventos, bibliotecas, entre outros. 8 Exemplos: 1.1 Banco de Dados Relacional 8 Applet ContêinerConnectivity - para painéis gráficos desenvolvidos com AWT/Swing controlados por browser; 8 1.2 JDBC – Java Database Client-side 1.2.1 java.sql.DriverManager 8 Application client Contêiner aplicações standalone (AWT/Swing), podendo, opcionalmente, ser 1.3 Fábrica de Conexões 9 por Java Web Start. 1.4 Criardistribuídas Banco de Dados e Tabelas 10 1.5 Classes Javabeans Entidades gerencia, além do ciclo de vida de componentes, recursos e meios de 10 Um Contêiner–server-side, 1.6 Inserindo Dados 11 acesso. Configuramos no Contêiner os recursos que desejamos disponibilizar para que nossas 1.7 Fechando a Conexão aplicações os acessem através de APIs de serviços, como no caso de um pooling de Conexões12 a 1.8 PreparedStatement ou Statement 12 Banco de Dados. 1.9 Design Patterns 13 Server-side 1.9.1 DAO – Data Access Object 13 Exemplos: 1.9.2 Pesquisando 14 Web Contêiner - para objetos dirigidos por HTTP (Servlets e JSP); 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 EJB Contêiner - para objetos de negócio server-side. 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 Além da definição dassido interfaces na API, Java Enterprise Edition 2.1 Porque Java EE tem tão utilizado? 17 também especifica como o Contêiner deve ser, quais recursos ele deve 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 obrigatoriamente implementar, quais serviços ele deve oferecer. Permitindo Aplicações desenvolvidas de 2.3.1 APIs 19 assim que diversas empresas implementem seus próprios Contêiners. acordo com a especificação 2.3.2 Contêiners 19 Veja a seguir uma pequena amostra de empresas e organizações que podem ser instaladas em 21 2.3.3 Deployment de aplicações desenvolvem Contêiners Java EE: 3 Análise de arquiteturas qualquer Contêiner. 21 Sun (GlassFish) 3.1 Arquitetura Física e Arquitetura Lógica 21 - IBM (WebSphere) 3.2 Tipos de aplicações na WEB 21 - Oracle (OAS) MVC para a Web 3.3 Arquitetura 21 - BEA Systems (WebLogic) 3.4 Vantagens da arquitetura MVC 22 - Red Hat (JBoss) 4 Ambiente de desenvolvimento 23 Apache (Geronimo) 4.1 Tomcat 23 4.1.1 - Adobe Instalar Java JSE SDK (JDK) 24 (Jrun) 4.1.2 - Borland Qual versão de JDK utilizar 24 (AppSever) 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 A lista completa de empresas licenciadas em Java EE e o teste de 4.2.1 Qual versão de Tomcat utilizar 25 compatibilidade associado pode ser encontrada em http://java.sun.com/j2ee/licensees.html. 4.2.2 Iniciar e parar o Tomcat 25 Como já vimos, a plataforma Java EE está fortemente baseada em Contêiners, como o foco do nosso curso é 4.2.2.1 [Windows] Tomcat como serviço 25 o desenvolvimento aplicações Java para Web, nosso alvo são os Web Contêiners. Alguns dos serviços oferecidos 4.2.2.2 Tomcat de como processo 26 pelos Web Contêiners são: 4.3 Testar Tomcat 26 - Gerenciamento dos utilizados pelos componentes, como pool de conexões; 4.4 Criar contexto de recursos desenvolvimento 26 do ciclo de vida dos componentes (Servlets, JSPs e Custom Tags); 4.4.1 - Gerenciamento Estrutura de diretórios 26 4.4.2 - Gerenciamento Criar contexto de aplicação 27 de sessões de web usuários; 4.4.3 - Controle Configurar contexto: web.xml 27 de acesso. 4.4.4 Ativar contexto 29 4.4.5 As duas Testar contexto APIs suportadas por um Contêiner Web são: Java Servlets e Java Server Pages.29 principais A 4.5 Bibliotecas Servlet 29 implementação de referência de Contêiner Web é o Tomcat. Observe que há alguns servidores que se denominam 4.6 Testar seus servlets 30 compatíveis com o JAVA EE, mas que não passaram pelo teste de compatibilidade. Em caso de dúvidas, pode-se 4.7 Testar seus JSPs 31 encontrar uma lista dos Contêiners JAVA EE na seguinte URL: http://java.sun.com/j2ee/compatibility.html 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 20 1 24 Java Java WEB WEB Normalmente a estrutura de diretórios utilizada em desenvolvimento não é a mesma estrutura utilizada 1 JDBC 8 dentro do servidor. Além disto, nos diretórios de desenvolvimento temos os arquivos fonte, enquanto no servidor 1.1 Banco de Dados Relacional 8 temos apenas os arquivos compilados. 1.2 JDBC – Java Database Connectivity 8 de mover os arquivos estáticos da estrutura de desenvolvimento para o Contêiner Web, assim 1.2.1 O trabalho java.sql.DriverManager 8 como, o da compilação das classes Java, é conhecido como deployment e existem duas opções para a realização 1.3 Fábrica de Conexões 9 desta um empacotamento WAR para o nosso aplicativo, ou então, copiar diretamente10 os 1.4 operação. Criar Podemos Banco de gerar Dados e Tabelas arquivos para dentro do Contêiner, seguindo uma estrutura de diretórios conforme será apresentada mais adiante 1.5 Classes Javabeans – Entidades 10 (deployment aberto ou expandido). 1.6 Inserindo Dados 11 EsteFechando trabalho pode ser feito: 1.7 a Conexão 12 - Manualmente: copiando arquivos e organizando dentro do Contêiner na estrutura necessária; 1.8 PreparedStatement ouos Statement 12 1.9 Design Patterns 13 - Através de ferramentas oferecidas pelo próprio Contêiner; 1.9.1 - Por DAO – Datade Access Object 13 ambiente desenvolvimento (IDE); 1.9.2 - Por Pesquisando 14 ferramentas específicas como Ant e Maven. 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 1.9.5 Exclusão 16 3 Análise de arquiteturas 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 3.1 Arquitetura Física e Arquitetura Lógica 2.2 O que é Java Enterprise Edition? 18 Os servidores podem todosEdition fisicamente na mesma máquina, apesar de existir a divisão conceitual 18 de 2.3 A plataforma Java estar Enterprise 2.3.1 APIs 19 responsabilidades e processamento, ou podem estar separados fisicamente, cada um em uma máquina separada. 2.3.2 vezes Contêiners 19 Muitas não é necessário separar os servidores fisicamente, mas a divisão conceitual garante a escalabilidade 2.3.3 Deployment de aplicações e a flexibilidade da arquitetura, permitindo e facilitando a separação física dos servidores no momento em que 21 for 3 Análise de arquiteturas 21 necessário. 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 Figura 3.1 – Aplicações em Camadas 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 3.2 Tipos de aplicações na WEB 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 Podemos enquadrar as aplicações na Web em um dos seguintes tipos: 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks Sumário 2.3.3 Deployment de aplicações Seja Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais www.3way.com.br www.3way.com.br 21 1 25 Java WEB Sumário 1 1.1 1.2 1.2.1 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2 2.1 2.2 2.3 2.3.1 2.3.2 2.3.3 3 3.1 3.2 3.3 3.4 4 4.1 4.1.1 4.1.2 4.1.2.1 4.2 4.2.1 4.2.2 4.2.2.1 4.2.2.2 4.3 4.4 4.4.1 4.4.2 4.4.3 4.4.4 4.4.5 4.5 4.6 4.7 4.8 4.9 JDBC Banco de Dados Relacional JDBC – Java Database Connectivity java.sql.DriverManager Fábrica de Conexões Criar Banco de Dados e Tabelas Classes Javabeans – Entidades Inserindo Dados Fechando a Conexão PreparedStatement ou Statement Design Patterns DAO – Data Access Object Pesquisando Recurso avaçando: O Cursor Alteração Exclusão Introdução a Java Enterprise Edition Porque Java EE tem sido tão utilizado? O que é Java Enterprise Edition? A plataforma Java Enterprise Edition APIs Contêiners Deployment de aplicações Análise de arquiteturas Arquitetura Física e Arquitetura Lógica Tipos de aplicações na WEB Arquitetura MVC para a Web Vantagens da arquitetura MVC Ambiente de desenvolvimento Tomcat Instalar Java JSE SDK (JDK) Qual versão de JDK utilizar JAVA_HOME Instalar Tomcat Qual versão de Tomcat utilizar Iniciar e parar o Tomcat [Windows] Tomcat como serviço Tomcat como processo Testar Tomcat Criar contexto de desenvolvimento Estrutura de diretórios Criar contexto de aplicação web Configurar contexto: web.xml Ativar contexto Testar contexto Bibliotecas Servlet Testar seus servlets Testar seus JSPs Logs Variáveis de Ambiente 8 8 8 8 9 10 10 11 12 12 13 13 14 15 16 16 17 17 18 18 19 19 21 21 21 21 21 22 23 23 24 24 24 25 25 25 25 26 26 26 26 27 27 29 29 29 30 31 31 32 1 26 Todos os direitos reservados a 3Way Networks Seja um Profissional Aprendendo com Profissionais www.3way.com.br JavaWEB WEB Java Sumário - Business-to-consumer (B2C) – entre empresa e consumidor. Exemplo: uma pessoa compra um livro na Internet. 1 JDBC 8 Business-to-business (B2B) – Troca de informações e serviços entre empresas. Exemplo: o sistema de 1.1 Banco de Dados Relacional 8 estoque de JDBC uma –empresa de automóveis detecta que um item de estoque precisa ser reposto e faz o pedido 1.2 Java Database Connectivity 8 diretamente ao sistema de produção do fornecedor de autopeças. Neste tipo de aplicação a linguagem XML possui 1.2.1 java.sql.DriverManager 8 1.3 papel muito Fábrica de Conexões 9 um importante, uma vez que existe a necessidade de uma padronização das tags para comunicação de 1.4 Criar Banco de Dados e Tabelas 10 conteúdo. 1.5 Classes Javabeans – Entidades 10 - User-to-data – acesso a bases de informação. Exemplo: um usuário consulta uma base de informação. 1.6 Inserindo Dados 11 - User-to-user –Conexão chat e troca de informações entre usuários (Messenger, ICQ). 1.7 Fechando a 12 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 1.9.1 DAO – Data Access 13 3.3 Arquitetura MVC paraObject a Web 1.9.2 Pesquisando 14 Para exemplificar a Figura 3.2 contém um diagrama de blocos que mostra a participação de Servlets, JSP e 1.9.3 Recurso avaçando: O Cursor 15 JavaBeans em uma arquitetura. A idéia é isolar cada aspecto do modelo MVC com a tecnologia mais adequada. A 1.9.4 Alteração 16 página ótima para fazer o papel da visão, uma vez que possui facilidades para a inserção de componentes 1.9.5 JSP é Exclusão 16 visuais e para a apresentação de informação. No entanto, é um pouco estranho usar uma página JSP para receber e 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 tratar uma requisição. Esta tarefa, que se enquadra no aspecto de controle do modelo MVC é mais adequada a um 2.2 Ovez queque é Java Enterprise Edition? 18 Servlet, uma neste momento componentes de apresentação são indesejáveis. Finalmente, é desejável que 2.3 A plataforma Java Enterprise Edition 18 a modelagem do negócio fique isolada dos aspectos de interação. A proposta é que a modelagem do negócio fique 2.3.1 APIs 19 contida em classes de JavaBeans. Em aplicações mais sofisticadas a modelagem do negócio deve ser implementada 2.3.2 Contêiners 19 por classes de Enterprisede JavaBeans (EJB), no entanto esta forma de implementação foge ao escopo deste material. 2.3.3 Deployment aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Figura 3.2 - Arquitetura de uma aplicação para Comércio Eletrônico. Todos os direitos reservados a 3Way Networks Sejaum umProfissional ProfissionalAprendendo Aprendendocom comProfissionais Profissionais Seja www.3way.com.br www.3way.com.br 1 27 22 Java WEB Java WEB Sumário Servlets – Atuam como controladores, recebendo as requisições dos usuários. Após a realização das análises necessária sobre a requisição, instância o JavaBean e o armazena no escopo adequado (ou não caso o 1 JDBC 8 bean já tenha sido criado no escopo) e encaminha a requisição para a página JSP. 1.1 Banco de Dados Relacional 8 JavaBeans – Atuam comoConnectivity o modelo da solução, independente da requisição e da forma de apresentação. 1.2 JDBC – Java Database 8 Comunicam-se com a camada intermediária que encapsula a lógica do problema. 1.2.1 java.sql.DriverManager 8 1.3 de na Conexões 9 JSP Fábrica – Atuam camada de apresentação utilizando os JavaBeans para obtenção dos dados a serem 1.4 Criar Banco de Dados e Tabelas 10 exibidos, isolando-se assim de como os dados são obtidos. O objetivo é minimizar a quantidade de código colocado 1.5 10 na página. Classes Javabeans – Entidades 1.6 Inserindo Dados 11 Camada Intermediária (Middleware) – Incorporam a lógica de acesso aos dados. Permitem isolar os outros 1.7 Fechando a Conexão 12 módulos dePreparedStatement problemas como estratégias de acesso aos dados e desempenho. O uso de EJB (Enterprise JavaBeans) 1.8 ou Statement 12 é recomendado para a implementação do Middleware , uma vez que os EJBs possuem capacidades para gerência de 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object na adoção de um servidor de aplicação habilitado para EJB. 13 transações e persistência. Isto implica 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 3.4 Vantagens da arquitetura MVC 1.9.5 Exclusão 16 1. Facilidade de a distribuição lógica das funções entre os módulos do sistema isola o impacto 2 Introdução amanutenção: Java Enterprise Edition 17 das 2.1 modificações. Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2. Escalabilidade: Modificações necessárias para acompanhar o aumento da demanda de serviços 2.3 A plataforma Java Enterprise Edition 18 (database pooling, clustering, etc) ficam concentradas na camada intermediária. 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 4 de desenvolvimento 3 Ambiente Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 4.1 3.2 Tomcat Tipos de aplicações na WEB 21 A partir do Java EE 5.0 , com 3.3 O Tomcat Arquitetura MVC para a Web 21 é um servidor de aplicações Java para web. É software livre e 3.4código aberto, Vantagens da arquitetura 22 as versões de especificações de surgido dentro do MVC conceituado projeto Apache Jakarta e 4 Ambiente de desenvolvimento Servlet 2.5 e JSP 2.1, a 23 que teve apoio e endosso oficial da Sun Microsystems como Implementação 4.1 Tomcat 23 de Referência (RI) para tecnologias implementação de referência 4.1.1 Instalar Javaas JSE SDK (JDK) Java Servlet e JavaServer Pages (JSP). 24 o Tomcat seu próprio projeto de desenvolvimento (RI) destas tecnologias passou 4.1.2 Atualmente, Qual versão de JDKtem utilizar 24 independente, dentro da Apache Software Foundation. O Tomcat é robusto e 4.1.2.1 JAVA_HOME 24 a ser o servidor de aplicações 4.2 Tomcat eficiente oInstalar suficiente para ser utilizado mesmo em um ambiente de Java EE 5.0 completo (Web 25 e 4.2.1 Qual versão de Tomcat utilizar 25 produção. EJB) Sun Java System 25 4.2.2 Iniciar e parar o Tomcat Tecnicamente, parte da plataforma corporativa Java Enterprise Edition Application Server Platform 4.2.2.1 [Windows] Tomcat como serviço 25 (Java EE, anteriormente 4.2.2.2 Tomcat comodenominada processo J2EE) abrange as tecnologias Servlet e 26 Edition 9, baseado no projeto JSP, incluindo tecnologias de apoio relacionadas como Realms e segurança, 4.3 Testar Tomcat 26 de software livre GlassFish. JNDI JDBC DataSources. O Tomcat tem a capacidade de atuar 4.4 Resources Criar e contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 também como servidor web/HTTP autônomo, ou pode funcionar integrado a 4.4.2 Criar contexto de como aplicação web http ou Microsoft IIS, ou ainda 27 um servidor web dedicado, Apache 4.4.3 Configurar contexto: web.xml 27 como parte integrante de um servidor de aplicações mais amplo, como JBoss 4.4.4 Ativar contexto 29 AS, provendo os recursos de Java Servlet e JSP. 4.4.5 Testar contexto 29 porém não implementa um contêiner EJB. Para aplicações 4.5 O Tomcat Bibliotecas Servlet 29 Java Enterprise Edition (Java EE) que utilizam Enterprise JavaBeans (EJB) , 4.6 Testar seus servlets 30 4.7 deve procurar Testar seus 31 você umJSPs servidor de aplicações Java EE completo, como JBoss 4.8 Logs 31 AS (software livre), GlassFish (software livre), Apache Geronimo (software 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 23 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 28 www.3way.com.br Java WEB Java WEB livre), IBM WebSphere (comercial), BEA WebLogic (comercial), Oracle AS (comercial) ou o Java EE SDK que inclui Sumário Sun 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 e 1 JDBC Tomcat é um 8 testado com base em instalações do Tomcat 4.1, 5.0, 5.5 e 6.0 em Windows, Unix e 1.1 Banco de Dados Relacional 8 Contêiner Web. 8 Linux. aqui propostas são para criar um ambiente de desenvolvimento 1.2 As configurações JDBC – Java Database Connectivity 1.2.1 java.sql.DriverManager 8 bem simples e independente de qualquer ambiente integrado de desenvolvimento (IDE), 1.3 Fábrica de Conexões 9 suficiente para um primeiro contato com o Tomcat e as tecnologias Java para web. 1.4 Alternativas? Criar Banco de Dados e Tabelas 10 Se você quer considerar alternativas ao Tomcat, uma boa opção é o 1.5 Classes Javabeans – Entidades 10 projeto Jetty, servidor web e contêiner Servlet Java, também software livre. Jetty 6 1.6 Inserindo Dados 11 suporta as mais recentes especificações Servlet 2.5 e JSP 2.1 da plataforma Java EE 5.0. 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 4.1.1. Instalar Java JSE SDK (JDK) 1.9 Design Patterns 13 O Tomcat é inteiramente escrito em Java e, portanto, necessita 13 de 1.9.1 DAO – Data Access Object 1.9.2 Pesquisando 14 uma Java Virtual Machine (JVM) — Máquina Virtual Java — para ser Recurso avaçando: O Cursor 15 executado. Assim, é necessário ter a plataforma Java Platform Standard É1.9.3 possível haver várias versões 1.9.4 Alteração 16 Edition (Java SE) previamente instalada. de JDK/JRE instaladas no 1.9.5 Exclusão 16 Tomcat 4.1 e 5.0 necessitavam do JDK, para compilar as páginas JSP. em locais 2 computador Introdução a Java Enterprise Edition 17 O Tomcat 5.5 em diante traz embutido e usa o complilador Java Eclipse JDT distintos, convivendo sem 2.1 Porque Java EE tem sido tão utilizado? 17 para compilar JSP. Assim, o Tomcat a partir da versão 5.5 necessita apenas do 2.2problema. O que é Java Enterprise Edition? 18 Neste caso, é JRE, mas o JDK ainda é útil para o desenvolvedor. Para seu ambiente 18 de 2.3 A plataforma Java Enterprise Edition importante ficar atento a qual 2.3.1 APIs 19 desenvolvimento Java com Tomcat, onde você deve criar aplicações Java em versão será selecionada para 2.3.2 Contêiners 19 geral, utilize o JDK completo. do Tomcat.de aplicações 2.3.3 usoDeployment 21 3 Análise de arquiteturas 21 4.1.2 Qual versão de JDK utilizar 3.1 Arquitetura Física e Arquitetura Lógica 21 A versão mais atual da plataforma Java SE é a 6, lançada em 3.2 Tipos de aplicações na WEB 21 dezembro de 2006. As duas versões anteriores, Java SE 5 (desde setembro 3.3 Arquitetura MVC para a Web 21 2004) e J2SE 1.4.2 (desde junho 2003), ainda são consideradas ativas. Já22 o 3.4 Vantagens da arquitetura MVC 4 Ambiente de desenvolvimento 23 J2SE 1.3.1 encerrou seu ciclo de vida e não deve ser usado para nenhum 4.1 Tomcat 23 propósito. 4.1.1 Instalar Java JSE SDK (JDK) 24 O Tomcat 6.0 requer Java SE 5.0 ou superior. O Tomcat 5.5 suporta também J2SE 1.4.x, mas é necessário 4.1.2 Qual versão de JDK utilizar 24 instalar um pacote adicional de compatibilidade. 4.1.2.1 JAVA_HOME 24 Se você está iniciando um novo ambiente de desenvolvimento, a 4.2 Instalar Tomcat 25 princípio utilizarutilizar a versão mais recente, JDK 6, que inclui todas 4.2.1 o mais Qualadequado versão deé Tomcat 25 A variável de ambiente 4.2.2 Iniciar e parar oatuais Tomcat 25 as melhorias e facilidades para a tecnologia Java padrão. O Java SE 6 é padrão JAVA_HOME deve 4.2.2.1 [Windows] Tomcat como serviço 25 plenamente compatível com as versões anteriores, exceto raras exceções. 4.2.2.2 Tomcat como processo ser definida (e mantida26 Havendo impossibilidade de usar o Java SE 6, o Java SE 5 também funciona muito 4.3 Testar Tomcat atualizada) indicando o26 bem com Tomcat. 4.4 Criar contexto de desenvolvimento 26 local de instalação do J2SE o Java SE SDK (JDK) e informações sobre a instalação em seu 4.4.1 Para obter Estrutura de diretórios 26 sistema operacional, acesse o link: http://java.sun.com/javase/downloads/ preferencial. Esta variável 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 4.4.4 Ativar contexto 4.1.2.1 4.4.5 JAVA_HOME Testar contexto 4.5 Completando Bibliotecas a Servlet instalação do SDK, defina a variável de ambiente 4.6 Testar seus servlets JAVA_HOME apontando para seu local de instalação. Isto é muito importante se 4.7 Testar houver mais de seus uma JSPs instalação de J2SE no computador, mas a variável 4.8 Logs JAVA_HOME deve ser definida mesmo se houver apenas uma versão instalada. 4.9 Variáveis de Ambiente os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 27 é consultada pelo Tomcat e vários outros sistemas29 29 baseados em Java para29 determinar a JVM 30 31 preferencial. 31 32 24 1 29 Java WEB Java WEB Sumário 4.2.1 Qual versão de Tomcat utilizar O Tomcat 1 JDBC tem evoluído paralelamente à evolução da Plataforma Java EE e suas especificações para web, 8 1.1 Banco deServlet Dados Relacional 8 especialmente Java e JavaServer Pages (JSP). O quadro a seguir relaciona as versões de Tomcat com as 1.2 JDBC – Java Database Connectivity 8 respectivas versões de tecnologias suportadas. 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 Tomcat Servlet JSP Java EE 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans 10 6.0 2.5– Entidades 2.1 Java EE 5.0 1.6 Inserindo Dados 11 5.5 2.4 2.0 J2EE 1.4 1.7 Fechando a Conexão 12 1.8 PreparedStatement 12 4.1 2.3 ou Statement 1.2 J2EE 1.3 1.9 Design Patterns 13 1.9.1 Como DAO – Data Access Object 13 você está iniciando o aprendizado e desenvolvimento Java 1.9.2 Pesquisando 14 para web, é recomendado utilizar a versão mais atualizada Tomcat 6.0, 1.9.3 Recurso avaçando: O Cursor 15 que é compatível com as especificações e tecnologias mais recentes e é o O separador de diretórios mais 16 1.9.4 Alteração foco principal de desenvolvimento do projeto Tomcat. A maior parte dos 1.9.5 Exclusão usado aqui é a barra normal (/) 16 recursos atuais é compatível versões anteriores. 2 Introdução a Javacom Enterprise Edition do Unix e Linux; usuários do 17 2.1 Porque Java EE tem sido tão utilizado? 17 Para obter o Tomcat e informações sobre instalação e Windows devem substituir pela 2.2 O que é Java Enterprise Edition? 18 documentação, acesse o site Apache Tomcat, na Apache Software barra-invertida (\) quando 18 2.3 A http://tomcat.apache.org/ plataforma Java Enterprise Edition Foundation: 2.3.1 O diretório APIs principal (local de instalação) do Tomcat é referenciado apropriado. Note que a barra 19 2.3.2 Contêiners 19 posteriormente neste material como CATALINA_HOME. Na de Unix é aceita como 2.3.3 Deployment de Tomcat, aplicações 21 documentação e scripts do esse diretório é também referenciado separador de diretório mesmo 21 3 Análise de arquiteturas assim, pois Catalina é o nome-código do projeto Tomcat e seu contêiner em Windows nos arquivos de 21 3.1 Arquitetura Física e Arquitetura Lógica servlet. 3.2 Tipos de aplicações na WEB configuração do Tomcat e 21 3.3 Arquitetura MVC para a Web 4.2.2 Iniciar e parar o Tomcat pelos programas java e javac. 21 3.4 Vantagens da arquitetura 22 Você pode executar o TomcatMVC instalando como serviço (Windows 4 Ambiente de desenvolvimento 23 NT/2000 ou superior), com inicialização automática ou manual; ou 4.1 Tomcat 23 executá-lo como processo isolado (qualquer sistema operacional), pelo 4.1.1 Instalar Java JSE SDK (JDK) 24 atalhos no grupo de programa (Windows) ou por scripts shell (.bat/.sh). 4.1.2 Qual versão de JDK utilizar 24 Veja a seguir a seção correspondente à forma de inicialização desejada. 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 4.2.1 Qual versão de Tomcat utilizar 25 Para iniciar e parar o Tomcat (5 em diante) como serviço, o 4.2.2 Iniciar e parar o Tomcat 25 recomendo é usar o Tomcat Monitor, que consiste na ferramenta Apache Service Manager (Procrun) fornecida com 4.2.2.1 [Windows] Tomcat como serviço 25 o Tomcat: 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 1. Inicie o Tomcat Monitor utilizando o atalho em: Iniciar > Programas > Apache Tomcat > Monitor 4.4 Criar contexto de desenvolvimento 26 Tomcat. Deve surgir um pequeno ícone (ver imagem) na área de notificação da barra de tarefas do 4.4.1 Estrutura de diretórios 26 Windows (ao lado do relógio). Este ícone indica o estado atual do serviço Tomcat (quadrado vermelho = 4.4.2 Criar contexto de aplicação web 27 parado, triângulo verde = iniciado). 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 ícone com o botão direito do mouse; no menu de contexto que se abre, escolha Start service 4.4.5 2. Clique Testar no contexto 29 ou Bibliotecas Stop service . 4.5 Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 25 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 30 www.3way.com.br 4.2 Instalar Tomcat Java WEB Java WEB 4.2.2.2 Tomcat como processo Sumário Para iniciar e parar o Tomcat como processo pelo prompt de comandos (console ou shell) do sistema operacional: 1 JDBC 8 1. defina as variáveis de ambiente JAVA_HOME e CATALINA_HOME , para apontar o diretório principal da 1.1 Banco de Dados Relacional 8 instalação Java SDK e do Tomcat, respectivamente. O recomendado é criar o script [Windows] 1.2 JDBC – Javado Database Connectivity 8 setenv.bat ou [Unix] setenv.sh dentro de CATALINA_HOME/bin, com estas configurações; 1.2.1 java.sql.DriverManager 8 2. vá para o diretório bin do Tomcat: 1.3 Fábrica de Conexões 9 - [Windows] cdDados %CATALINA_HOME%\bin 1.4 Criar Banco de e Tabelas 10 - [Unix]Javabeans cd $CATALINA_HOME/bin 1.5 Classes – Entidades 10 3. execute o script desejado: 1.6 Inserindo Dados 11 - Iniciar: [Windows] 1.7 Fechando a Conexãostartup.bat ou catalina start 12 1.8 PreparedStatement 12 [Unix] startup.shou Statement ou catalina.sh start 1.9 Design 13 - Parar:Patterns [Windows] shutdown.bat ou catalina stop 1.9.1 DAO – Data Access Object ou catalina.sh stop 13 [Unix] shutdown.sh 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 4.3. Testar Tomcat 1.9.5 Exclusão 16 ParaIntrodução testar se o a Tomcat está rodando após iniciado, abra o browser e digite o endereço: 2 Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 http://localhost:8080/ 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 home-page padrão do Tomcat, o link Tomcat Documentation dá acesso a toda a documentação 2.3.1 Na APIs 19 necessária, instalada localmente, inclusive a API Servlet/JSP da Sun, inclusa com o Tomcat. 2.3.2 Contêiners 19 inclui de um contexto chamado Tomcat Manager, que provê uma interface web amigável para 2.3.3 O Tomcat Deployment aplicações 21 gerenciar asAnálise aplicações (contextos) — listar, parar, iniciar, recarregar, instalar (deploy), remover (undeploy) — e 3 de arquiteturas 21 ver informações e estado do servidor e de suas conexões/threads. O instalador Windows solicita o login de usuário 3.1 Arquitetura Física e Arquitetura Lógica 21 (padrão é admin) a aplicações senha parana acesso 3.2 Tipos e de WEB a este recurso. 21 ParaArquitetura acessar o Tomcat Manager , siga o link respectivo no quadro Administration da home-page padrão 21 do 3.3 MVC para a Web servidor, ou acesse diretamente o endereço: 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 http://localhost:8080/manager/html 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.4. Criar contexto de desenvolvimento 4.2 Instalar Tomcat 25 Para executar seus servlets e JSPs, você precisa colocá-los dentro de um contexto de aplicação web 4.2.1 Qual versão de Tomcat utilizar 25 (ServletContext). Cada contexto é uma unidade de aplicação web Java (servlet/JSP) que possui suas próprias 4.2.2 Iniciar e parar o Tomcat 25 configurações. Para organizar o desenvolvimento, é interessante criar um contexto novo e ativar sua opção 4.2.2.1 [Windows] Tomcat como serviço 25 reloadable (recarga automática das classes modificadas). 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4.1. diretórios 4.4 Estrutura Criarde contexto de desenvolvimento 26 um diretório que será a sua estrutura de desenvolvimento web Java. Uma organização simples sugerida 4.4.1 CrieEstrutura de diretórios 26 é4.4.2 a seguinte: Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 dev/ 4.4.4 Ativar contexto 29 + src/ (os fontes .java ficam aqui, organizados em pacotes/diretórios) 4.4.5 Testar contexto 29 +webContent/ 4.5 Bibliotecas Servlet (arquivos do módulo web) 29 + WEB-INF/ (diretório obrigatório) 4.6 Testar seus servlets 30 4.7 Testar seus JSPs + classes/ (os .class gerados devem ser direcionados para cá) 31 + lib/ (pacotes jar de bibliotecas utilizadas devem ficar aqui) 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 26 Seja um Profissional Aprendendo com Profissionais www.3way.com.br 1 31 www.3way.com.br Java WEB Java WEB + 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 Sumário 1 JDBC 8 1.1 Banco que de Dados Relacional 8 Supondo seu diretório "dev" seja em C:\dir\dev\ (Windows), assim, o módulo web ficaria em 1.2 JDBC 8 C:\dir\dev\web . – Java Database Connectivity 1.2.1 java.sql.DriverManager 8 1.3 Criar Fábrica de Conexões 9 4.4.2. contexto de aplicação web 1.4 Criar Banco de Dados e Tabelas 10 A tarefa aqui consiste em criar no Tomcat um novo contexto de aplicação web, para seu ambiente de 1.5 Classes Existem Javabeans – Entidades três meios de se criar um contexto no Tomcat, cuja configuração 10 desenvolvimento. basicamente 1.6 Inserindo Dados 11 corresponde a um código XML com um elemento Context: 1.7 Fechando a Conexão 12 - Usar um dos mecanismos de Deployment Automático de Aplicação do Host no Tomcat. Este é o meio 1.8 PreparedStatement ou Statement mais recomendado, pois permite configuração automática do contexto na inicialização e atualização dinâmica 12 da 1.9 Design Patterns 13 aplicação web durante a execução do Tomcat. Usaremos este meio na forma mais simples e direta, criando um 1.9.1 XML DAO – Datacom Access Object 13 arquivo separado as configurações do contexto. 1.9.2 - Editar Pesquisando 14 o arquivo de configuração principal do servidor Tomcat. Consiste em criar um elemento Context 1.9.3 Recurso avaçando: O Cursor , dentro de um elemento Host. Este meio, ainda muito usado até o Tomcat 15 diretamente no arquivo conf/server.xml 1.9.4 Alteração 16 4, não é mais recomendado a partir do Tomcat 5, em prol do Deployment Automático. A criação de um contexto 1.9.5 Exclusão pelo arquivo server.xml tem várias desvantagens: não é dinâmica pois atualizações neste arquivo só podem ser 16 re2 Introdução a Java Enterprise Edition lidas reiniciando o Tomcat, cria o risco de invalidar toda a configuração do servidor se for cometido um erro 17 na 2.1 Porque Java EE tem e sido tão utilizado? 17 sintaxe de uma tag de contexto mistura configurações de servidor com configurações de contexto. 2.2 O que é Javade Enterprise Edition? 18 - Pela aplicação Administração do Tomcat com interface web, quando instalada. 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 Existem ainda outras formas de criação e configuração automática de um contexto de aplicação web, como 2.3.2 Contêiners 19 o uso de um pacote Web Application Archive (WAR) e o arquivo META-INF/context.xml dentro do WAR. 2.3.3 Deployment de aplicações 21 Criaremos um arquivo XML, para o novo contexto chamado "dev". O arquivo deve ficar em: 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 Tomcat 5: 3.2 Tipos de aplicações na WEB 21 CATALINA_HOME/conf/Catalina/localhost/dev.xml 3.3 Arquitetura MVC para a Web 21 Catalina é o mecanismo e localhost (máquina local) é o hostname padrão. 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 Crie o arquivo dev.xml na localização já descrita, com o conteúdo do quadro 4.1 Tomcat 23 abaixo. é a definição do Context, precedida pela tag de identificação de O principal atributo 24 4.1.1 O conteúdo Instalar Java JSE SDK (JDK) arquivo 4.1.2 XML: Qual versão de JDK utilizar 24 definido é o docBase do 4.1.2.1 JAVA_HOME elemento Context, 24 <?xml version="1.0" encoding="iso-8859-1"?> 4.2 Instalar Tomcat 25 <Context path="/dev" docBase="C:/dir/dev/web" especificando o 25 4.2.1 Qual versão de Tomcat utilizar reloadable="true" crossContext="true" debug="3"> caminho completo para 4.2.2 </Context> Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço o diretório base dos 25 4.2.2.2 Tomcat como processo 4.4.3. Configurar contexto: web.xml arquivos desta 26 4.3 Testar Tomcat 26 O arquivo WEB-INF/web.xml é o descritor do contexto de aplicação web, aplicação web. 26 4.4 Criar contexto de desenvolvimento segundo a especificação Java Servlet/J2EE. As informações nele contidas são as 4.4.1 Estrutura de diretórios 26 configurações específicas da aplicação que o container irá executar quando a 4.4.2 Criar contexto de aplicação web 27 aplicação for publicada. 4.4.3 Nosso Configurar contexto: web.xml 27 contexto de desenvolvimento terá apenas as seguintes 4.4.4 Ativar contexto 29 configurações: 4.4.5 - informações Testar contexto 29 textuais de título (elemento display-name, nome da 4.5 Bibliotecas Servlet 29 aplicação para exibição no Gerenciador) e comentário de descrição (description) do 4.6 Testar seus servlets e documentação; 30 contexto, úteis para identificação 4.7 Testar seus JSPs 31 - uma definição de servlet associada à classe do invocador genérico 4.8 Logs 31 InvokerServlet do Tomcat, usada para executar os servlets que você criar; 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 27 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 32 www.3way.com.br Java WEB Java WEB - um mapeamento (elemento servlet-mapping) genérico associando o padrão de endereço URI /servlet/* à Sumário do invoker criada, indicando que qualquer nome dentro do caminho /servlet/ neste contexto deve ser definição reconhecido como servlet e portanto repassado ao invoker do Tomcat para execução. 1 JDBC 8 1.1 de Dados Relacional 8 CrieBanco o arquivo web.xml (deployment descritor) para o novo contexto de aplicação web criado, dentro do 1.2 JDBC – Java Database Connectivity diretório dev/web/WEB-INF/. Um conteúdo mínimo para ele são as configurações apresentadas listado a seguir. 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 <?xml version= "1.0" encoding="ISO-8859-1"?> 1.4 Criar Banco de Dados e Tabelas 10 <web-app xmlns= "http://java.sun.com/xml/ns/javaee" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" 1.5 Classes Javabeans – Entidades 10 xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee 1.6 Inserindo Dados 11 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 1.7 Fechando a Conexão 12 version="2.5"> 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 <display-name>Desenvolvimento</display-name> <description> 1.9.1 DAO – Data Access Object 13 Descritor do contexto de desenvolvimento. 1.9.2 Pesquisando 14 </description> 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 <servlet> 1.9.5 Exclusão <servlet-name>dev-invoker</servlet-name> 16 2 Introdução a Java Enterprise Edition 17 <servlet-class> 2.1 Porque Java EE tem org.apache.catalina.servlets.InvokerServlet sido tão utilizado? 17 </servlet-class> 2.2 O que é Java Enterprise Edition? 18 <init-param> 2.3 A plataforma Java Enterprise Edition 18 <param-name>debug</param-name> 2.3.1 APIs 19 <param-value>0</param-value> 2.3.2 Contêiners </init-param> 19 <load-on-startup>2</load-on-startup> 2.3.3 Deployment de aplicações 21 </servlet> 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 <servlet-mapping> 3.2 Tipos de aplicações na WEB 21 <servlet-name>dev-invoker</servlet-name> 3.3 Arquitetura <url-pattern>/servlet/*</url-pattern> MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 </servlet-mapping> 4 Ambiente de desenvolvimento 23 </web-app> 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 se versão pode observar no XML anterior, ele se refere ao descritor de aplicação web da especificação 4.1.2 Como Qual de JDK utilizar 24 Servlet 2.5 (integrante do Java EE 5 ). Para utilizar apenas recursos de uma versão anterior de descritor de aplicação 4.1.2.1 JAVA_HOME 24 web, o cabeçalho de 4.2 substitua Instalar Tomcat do XML e a definição da tag raiz web-app pelo da respectiva versão. Eis a alteração 25 cabeçalho para Servlet 4.2.1 Qual versão2.4 de: Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 version= "1.0" encoding= 4.2.2.1 <?xml [Windows] Tomcat como serviço "ISO-8859-1"?> 25 <web-app xmlns="http://java.sun.com/xml/ns/j2ee" 4.2.2.2 xmlns:xsi= Tomcat como processo 26 "http://www.w3.org/2001/XMLSchema-instance" 4.3 Testar Tomcat 26 xsi:schemaLocation= "http://java.sun.com/xml/ns/j2ee 4.4 Criar contexto de desenvolvimento 26 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" "2.4" > 4.4.1 version= Estrutura de diretórios 26 ... 4.4.2 Criar contexto de aplicação web 27 </web-app> 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 seguir contexto o cabeçalho para a especificação Servlet 2.3. Note que a estrutura do XML na versão 2.329 é 4.4.5 E a Testar definida por um DTD definido na tag DOCTYPE , enquanto as versões mais recentes usam XML Schema (XSD) 4.5 Bibliotecas Servlet 29, definido por atributos na própria tag web-app . 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 28 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 33 www.3way.com.br Java WEB Java WEB <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> Sumário Você pode usar algum dos muitos 1 Validadores JDBC de XML existentes 8 1.1 Banco de Dados Relacional 8 como auxílo, como por exemplo o 1.2serviço JDBC – Java Database Connectivity 8 <web-app> on-line de Validação de 1.2.1 java.sql.DriverManager 8 ... XML do STG, que verifica um XML </web-app> 1.3 Fábrica de Conexões 9 em arquivo, URI na web ou o e texto 1.4 Criar Banco de Dados Tabelas 10 4.4.4. Ativar contexto 1.5 copiado Classes Javabeans – Entidades 10 diretamente em um Para garantir a ativação do novo contexto criado, reinicie o 1.6 Inserindo Dados 11 formulário. Tomcat (stop/start). Logo após a inicialização do Tomcat, o arquivo 12 de 1.7 Fechando a Conexão log de saída padrão do servidor Tomcat, criado em logs com o nome 1.8 PreparedStatement ou Statement 12 stdout.log, deve iniciar com um conteúdo similar ao trecho 1.9 Design Patterns 13 apresentado a seguir. Observe a mensagem (em destaque no quadro) 1.9.1 DAO – Data Access Object 13 que indica que o contexto configurado pelo arquivo dev.xml 14 foi 1.9.2 Pesquisando processado. 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 12/09/2004 12:09:00 org.apache.coyote.http11.Http11Protocol init 1.9.5 Exclusão 16 INFO: Initializing Coyote 2 Introdução a Java Enterprise Edition HTTP/1.1 on port 8080 17 12/09/2004 12:09:01 load 2.1 Porque Java EE tem sido tão org.apache.catalina.startup.Catalina utilizado? 17 INFO: Initialization processed in 2234 ms 2.2 O(...) que é Java Enterprise Edition? 18 2.3 A12/09/2004 plataforma Java Enterprise Edition 12:09:06 org.apache.catalina.core.StandardHostDeployer install 18 2.3.1 APIs 19 INFO: Processing Context configuration file URL file: 2.3.2 Contêiners 19 .../Tomcat6.0/conf/Catalina/localhost/dev.xml 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 O Tomcat 5 em diante gera por padrão muito menos mensagens em log para os contextos do que o Tomcat 3.1 Física enão Arquitetura Lógicamensagem no arquivo de log específico do contexto dev. Por isso, 21 4 , de forma Arquitetura que a inicialização gera nenhuma 3.2 estranhe Tipos de aplicações na WEB 21 não se você não encontrar inicialmente nenhum arquivo localhost_dev_log.*.txt na pasta logs. 3.3 Arquitetura MVC para a Web 21 3.4 Testar Vantagens 22 4.4.5. contexto da arquitetura MVC 4 Ambiente de desenvolvimento 23 Para testar o novo contexto, acesse o endereço: 4.1 Tomcat 23 http://localhost:8080/dev/ 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Se você Qual versão de JDK utilizar 24 criou um index.html no diretório de desenvolvimento (dev/web/), 4.1.2.1 JAVA_HOME 24 você deve ver esta página. Senão, verá apenas uma listagem do diretório gerada 4.2 Instalar Tomcat 25 Se o Tomcat retornar a pelo Tomcat. 4.2.1 O problema Qual versão de Tomcat utilizar 25 mais comum é haver algum erro de sintaxe no elemento Context página de erro 404 4.2.2 e parar o Tomcat 25 no arquivo Iniciar XML que define o contexto. Verifique os logs do Tomcat, conforme a Não Encontrado, houve 4.2.2.1 [Windows] Tomcat como serviço 25 seção 12 adiante, à procura de erros. Você pode também usar algum dos muitos 4.2.2.2 Tomcat como processo 26 algum problema de Validadores de XML existentes como auxílo, como por exemplo o serviço on-line de 4.3 Testar Tomcat forma que o contexto 26 Validação de XML do STG, que verifica um XML em arquivo, URI na web ou o texto 4.4 Criar contexto de desenvolvimento 26 copiado diretamente em um formulário. não foi ativado. 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.5 Bibliotecas Servlet 4.4.4 Ativar contexto 29 compilar servlets, você precisa essencialmente importar os pacotes 4.4.5 Para Testar contexto 29 javax.servlet e javax.servlet.http 4.5 Bibliotecas Servlet . As bibliotecas com estes pacotes também estão 29 inclusas como JAR no Tomcat e devem ser adicionadas ao CLASSPATH do 4.6 Testar seus servlets 30 compilador javac: seus JSPs 4.7 Testar 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 29 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 34 www.3way.com.br Siga-nos também no Twitter! twitter.com/3waynet Java WEB Java WEB Tomcat 5: Sumário CATALINA_HOME/common/lib/servlet-api.jar CATALINA_HOME/common/lib/jsp-api.jar 1 JDBC 8 1.1 Banco de Dados Relacional 8 onde CATALINA_HOME é o diretório principal de instalação do Tomcat. 1.2 JDBC – Java Database Connectivity As bibliotecas de 8 Se você tem o J2EE SDK da Sun instalado, pode alternativamente usar o 1.2.1 java.sql.DriverManager 8 j2ee.jar incluso com ele, que contém todas as APIs do Java EE inclusive Servlet/JSP. Servlet não estão no 1.3 Fábrica de Conexões 9 Mas o mais simples é usar o(s) jar(s) do Tomcat. Isso garante total compatibilidade JDK e sim no Tomcat, 10 1.4 Criar Banco de Dados e Tabelas entre a versão das APIs Servlet/JSP usadas no desenvolvimento e no seu Tomcat. 1.5 Classes Javabeans – Entidades então para criar seus 10 Além disso, se o código Java de uma classe servlet sua importar pacotes ou 1.6 Inserindo Dados Servlets é necessário a11 classes de uma biblioteca de terceiros (que não seja parte das APIs J2SE e 1.7 Fechando a Conexão 12 Servlet/JSP), o JAR com as classes compiladas desta biblioteca deve estar no importação dos JARs 12 1.8 PreparedStatement ou Statement diretório WEB-INF\lib\ para que o Tomcat encontre. existentes dentro do 13 1.9 Design Patterns 1.9.1 DAO – Data Access Object container (Tomcat). 13 4.6. Testar seus servlets 1.9.2 Pesquisando 14 1.9.3 O pacote Recurso avaçando: O Cursordeste material (veja a Introdução) inclui o 15 ZIP com os arquivos 1.9.4 de um Alteração 16 fonte servlet bem simples AloMundoServ.java, que pode ser usado como 1.9.5 teste, Exclusão 16 primeiro conforme abaixo: 2 Introdução a Java Enterprise Edition 17 import java.io.*; 2.1 Porque Java EE tem sido tão utilizado? 17 import javax.servlet.*; 2.2 O que é Java Enterprise Edition? 18 import javax.servlet.http.*; 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 public class AloMundoServ extends HttpServlet { 2.3.2 public Contêiners 19 void doGet(HttpServletRequest request, HttpServletResponse response) IOException, ServletException { 2.3.3 Deploymentthrows de aplicações 21 String alo = "Alô Mundo!"; 3 Análise de arquiteturas 21 PrintWriter out = response.getWriter(); 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 out.println("<html>"); 3.3 Arquitetura MVC para a Web 21 out.println("<body><h1>" + alo + "</h1></body>"); 3.4 Vantagens da arquitetura MVC 22 out.println("</html>"); } // doGet de desenvolvimento 4 Ambiente 23 4.1 Tomcat 23 } // class AloMundoServ 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Se o arquivo estiver em dev/src/, você pode abrir uma janela de comandos (prompt) neste local, certificar4.1.2.1 JAVA_HOME 24 se que o CLASSPATH está devidamente configurado ao executar o compilador javac, direcione o destino para 4.2 Instalar Tomcat 25 ../web/WEB-INF/classes/ : Tomcat utilizar 4.2.1 Qual versão de 25 4.2.2 Iniciar e parar o Tomcat 25 -d ../../web/WEB-INF/classes AloMundoServ.java 4.2.2.1 javac [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 Depois que um servlet for compilado e o .class resultante colocado em dev/web/WEB-INF/classes/ , com as 4.3 Testar Tomcat 26 configurações de mapeamento servlet genérico que fizemos no contexto, você acessa seu servlet com o URI 4.4 Criar contexto de desenvolvimento 26 /dev/servlet/NomeDaClasseServlet 4.4.1 Estrutura de diretórios (sem o .class). Para o exemplo compilado AloMundoServ.class, acesse o servlet 26 com o seguinte URL: 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 http://localhost:8080/dev/servlet/AloMundoServ 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 Podem ser criados, no web.xml, outros mapeamentos específicos para um ou mais servlets. Para isso, você 4.5 Bibliotecas Servlet 29 deve conhecer a sintaxe dos elementos <servlet> e <servlet-mapping> . 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 30 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 36 www.3way.com.br Java WEB Java WEB Sumário É recomendado não Os JSPs colocados em dev/web/ (exemplo: arquivo alomundo.jsp) são utilizar espaços nem 8 acessados assim: 1 JDBC caracteres acentuados 8 1.1 Banco de Dados Relacional http://localhost:8080/dev/alomundo.jsp 1.2 JDBC – Java Database Connectivity nos nomes de sub- 8 1.2.1 java.sql.DriverManager diretório. Além disso, 8 1.3 Fábrica de Conexões 9 Podem ser criados sub-diretórios dentro do diretório principal do contexto, procure usar apenas 10 1.4 organizar Criar de JSP Dados e Tabelas para os Banco arquivos e arquivos estáticos (HTML, imagens etc.). Estes subletras minúsculas, o 10 1.5 Classes Javabeans – Entidades diretórios se refletirão diretamente no URL (endereço) de uma página JSP neles 1.6 Inserindo Dados contida. Uma página JSP em dev/web/subdir/pagina.jsp neste contexto terá URL: que é o mais comum 11 1.7 Fechando a Conexão em endereços web. 12 1.8 PreparedStatement ou Statement 12 http://localhost:8080/dev/subdir/pagina.jsp 1.9 Design Patterns 13 1.9.1 No Tomcat DAO – Data Access Object 13 5 ou inferior, se a configuração não estiver apontando para a 1.9.2 Pesquisando 14 localização correta do JDK (Java SDK) mas sim para a do JRE (Java Runtime), a 1.9.3 deRecurso O Cursor 15 tentativa exibiçãoavaçando: de um novo JSP pode resultar no seguinte erro: 1.9.4 Alteração 16 1.9.5 Exclusão 16 HTTP Status 500 - Exception report 2 Introdução a Java Enterprise Edition 17 exception org.apache.jasper.JasperException: Unable to compile class for JSP 2.1 Porque Java EE tem sido tão utilizado? 17 No Java compiler was found to compile the generated source for the JSP. 2.2 O que é Java Enterprise Edition? 18 This usually be Java solved by copying 2.3 can A plataforma Enterprise Edition manually $JAVA_HOME/lib/tools.jar from the JDK 18 to the common/lib directory of the Tomcat server, followed by a Tomcat restart. 2.3.1 APIs 19 2.3.2 If using Contêiners an alternate Java compiler, please check its installation and access path. 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 O JRE não inclui as ferramentas de compilação Java, necessárias para a compilação dinâmica de páginas JSP 3.1 ou modificadas. Arquitetura Daí Física Arquitetura Lógica re-configure ou re-instale o Tomcat informando o caminho 21 novas oe erro. Para solucionar, 3.2 Tipos de aplicações na WEB correto do Java SDK (JDK), ou então recorra à alternativa sugerida na mensagem de erro: copie manualmente21 o 3.3 Arquitetura MVC para Web common/lib do Tomcat e re-inicie o Tomcat (shutdown/start). 21 arquivo lib/tools.jar do JDK para oa diretório 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Logs Tomcat 23 4.8. 4.1.1 Instalar Java JSE SDK (JDK) 24 ver versão logs de erro e depuração, leia os txt's gerados em CATALINA_HOME\logs\. Quando 4.1.2 ParaQual deacesso, JDK utilizar 24 existirem muitos arquivos de log no Tomcat de desenvolvimento e você quiser limpar o diretório para facilitar o 4.1.2.1 JAVA_HOME 24 rastreamento dos logs, siga os passos abaixo: 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 Parar ( stop ) o Tomcat. 4.2.2 Iniciar e parar o Tomcat 25 todos os arquivos log existentes em CATALINA_HOME\logs\, ou movê-los para uma área 25 de 4.2.2.1 - Remover [Windows] Tomcat como de serviço 4.2.2.2 backup. Tomcat como processo 26 Iniciar ( start ) novamente o Tomcat. 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 as mensagens 4.4.1 Inspecionar Estrutura de diretórios de saída informativas e de erro do Tomcat é importante para depurar e fazer 26 diagnóstico do servidor, problemas na inicialização do Tomcat, acompanhar o processamento dos 4.4.2 Criar contexto identificar de aplicação web 27 arquivos configuração (server.xml, web.xml) e da inicialização e finalização do Tomcat, bem como visualizar 4.4.3 deConfigurar contexto: web.xml 27 quaisquer exceções Java levantadas . 4.4.4 Ativar contexto 29 padrão, as mensagens informativas (saída padrão) e de erro do servidor Tomcat são direcionadas para 4.4.5 Por Testar contexto 29 os arquivos stdout.log stderr.log respectivamente, localizados em CATALINA_HOME\logs\. 4.5 Bibliotecase Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 31 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 37 www.3way.com.br 4.7. Testar seus JSPs Java WEB Java WEB 4.9. Variáveis de Ambiente Sumário É ú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: 1 JDBC 8 1.1 Banco de Dados Relacional 8 JAVA_HOME: de instalação do Kit de Desenvolvimento Java J2SE (JDK). 1.2 JDBC – JavaLocal Database Connectivity 8 1.2.1 CATALINA_HOME java.sql.DriverManager 8 : Local de instalação do Tomcat. 1.3 Fábrica de Conexões (pacotes e diretórios) de localizações de classes Java; o classpath deve incluir o(s) 9 CLASSPATH : Caminhos 1.4 Criar de Dados e e JSP Tabelas 10 jar(s) dos Banco pacotes Servlet do Tomcat. 1.5 Classes Javabeans – Entidades 10 PATH : Caminhos (diretórios) de localizações de executáveis no sistema operacional, deve incluir o diretório 1.6 Inserindo Dados do Java SDK. 11 bin das ferramentas 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 Windows (Painel de Controle ou arquivo autoexec.bat), ou criar um script setenv.bat: 1.9 Patterns 13 setDesign JAVA_HOME=C:\Arquivos de programas\Java\jdk1.6.0_05 1.9.1 setDAO – Data Access Object 13 CATALINA_HOME=C:\Arquiv~1\Apache~1\Tomcat 6.0 1.9.2 setPesquisando 14 CLASSPATH=%CATALINA_HOME%\common\lib\servlet-api.jar;.;%CLASSPATH% 1.9.3 Recurso avaçando: O Cursor 15 set CLASSPATH=%CATALINA_HOME%\common\lib\jsp-api.jar;%CLASSPATH% 1.9.4 Alteração 16 set PATH=%JAVA_HOME%\bin;%PATH% 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 Unix/Linux (user/system profile), ou criar um script setenv.sh: 2.1 Porque Java EE tem sido tão utilizado? 17 JAVA_HOME=/opt/j2se 2.2 O que é Java Enterprise Edition? 18 CATALINA_HOME=/opt/tomcat 2.3 A plataforma Java Enterprise Edition 18 2.3.1 CLASSPATH=$CATALINA_HOME/common/lib/servlet-api.jar:.:$CLASSPATH APIs 19 CLASSPATH=$CATALINA_HOME/common/lib/jsp-api.jar:$CLASSPATH 2.3.2 Contêiners 19 2.3.3 PATH=$JAVA_HOME/bin:$PATH Deployment de aplicações 21 3 Análise de arquiteturas 21 Thread é a execução de # Sintaxe Bourne shell e (sh), Korn shell (ksh), Bash e similares: 3.1 Arquitetura Física Arquitetura Lógica 21 export CLASSPATH PATH 3.2 Tipos JAVA_HOME de aplicaçõesCATALINA_HOME na WEB um trecho de código21 3.3 Arquitetura MVC para a Web 21 em paralelo a outros, 3.4 Vantagens da arquitetura MVC 22 ou seja, executados ao 4.10 Thread 4 Ambiente de desenvolvimento 23 mesmo tempo. 4.1 Tomcat 23 Para entender o funcionamento de uma thread é necessário analisar, 4.1.1 Instalar Java JSE SDK (JDK) 24 inicialmente, um processo. A maioria dos sistemas de hoje são baseados em 4.1.2 Qual versão de JDK utilizar 24 computadores com apenas um processador que executam várias tarefas 4.1.2.1 JAVA_HOME 24 simultâneas. Ou seja, vários processos que compartilham do uso da CPU tomando 4.2 Instalar Tomcat 25 4.2.1 fatias Qual versão de Tomcat utilizar 25 certas de tempo para execução. A esta capacidade é denominado o termo 4.2.2 Iniciar e parar o Tomcat 25 multiprocessamento. 4.2.2.1 Teoricamente [Windows]existe Tomcat como serviço 25 uma grande proteção para que um processo não afete a 4.2.2.2 Tomcat como processo 26 execução de outro, modificando-o, por exemplo, a área de dados do outro processo, a menos que haja um 4.3 Testar Tomcat 26 mecanismo de comunicação os processos (IPC – Inter Process Communication). Este alto grau de isolamento 4.4 Criar contexto deentre desenvolvimento 26 reduz (General Protection Fault), pois o sistema se torna mais robusto. Em contrapartida, o 4.4.1 os desagradáveis Estrutura deGPFs diretórios 26 início processo é bastante custoso, 4.4.2 de cada Criar contexto de aplicação webem termos de uso de memória e desempenho, e o mecanismo de troca 27 4.4.3 Configurar web.xml 27 de mensagens entre oscontexto: processos é mais complexo e mais lento, se comparado a um único programa acessando a 4.4.4 base Ativar contexto 29 própria de dados. 4.4.5 Uma Testar contexto 29 solução encontrada foi o uso de threads, também conhecidas por linhas de execução. A thread pode 4.5 Bibliotecas Servlet 29 ser vista como um subprocesso de um processo, que permite compartilhar a sua área de dados com o programa ou 4.6 Testar seus servlets 30 outras O início de execução de uma thread é muito mais rápido do que um processo, e o acesso a sua área 4.7 threads. Testar seus JSPs 31 de dados funciona 4.8 Logs como um único programa. 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 32 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 38 www.3way.com.br Java WEB Java WEB Existem basicamente duas abordagens para a implementação das threads na JVM: utilização de Sumário mecanismos nativos de operação do S.O. e a implementação completa da operação thread na JVM. A diferença básica é que as threads com mecanismos nativos do S.O. são mais rápidas. Em contrapartida a implementada pela 1 JDBC 8 JVM tem independência completa de plataforma. Basicamente, em ambos os casos, a operação das mesmas é 1.1 Banco de Dados Relacional 8 obtida através de uma fatia de tempo fornecida pelo S.O. ou pela JVM. Isto cria um paralelismo virtual, como pode 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 ser observado na figura abaixo, que representa a execução de três threads. 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 A execução de uma thread pode passar por quatro estados: novo, executável, bloqueado e encerrado. 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 33 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 39 www.3way.com.br Java WEB Java WEB A thread está no estado de novo, quando é criada. Ou seja, quando é alocada área de memória para ela Sumário através do operador new. Ao ser criada, a thread passa a ser registrada dentro da JVM, para que a mesma posso ser executada. 1 JDBC 8 A thread está no estado de executável, quando for ativada. O processo de ativação é originado pelo 1.1 Banco de Dados Relacional 8 método start() . É–importante frisar que uma thread executável não está necessariamente sendo executada, pois 1.2 JDBC Java Database Connectivity 8 1.2.1 determina java.sql.DriverManager 8 quem o tempo de sua execução é a JVM ou o S.O.. 1.3 Fábrica está de Conexões 9 A thread no estado de bloqueado, quando for desativada. Para 1.4 Criar Banco de Dados e Tabelas 10 desativar uma thread é necessário que ocorra uma das quatro operações a seguir: Uma thread encerrada 1.5 Classes Javabeans – Entidades 10 1. Foi chamado o método sleep(long tempo) da thread; 1.6 Inserindo Dados 11 ou destruída não vou 2. Foi chamado método suspend() da thread (método deprecado) 1.7 Fechando ao Conexão 12 ser reativada, deve-se 3. APreparedStatement trhead chamou o método wait(); 1.8 ou Statement 12 cria-la novamente. 4. A thread chamou uma operação de I/O que bloqueia a CPU; 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 1.9.2 Para Pesquisando 14 a thread sair do estado de bloqueado e voltar para o estado de 1.9.3 Recurso O Cursor deve ocorrer, em oposição as ações acima: 15 executável, uma dasavaçando: seguintes operações 1.9.4 Alteração 16 - Retornar após o tempo especificado, caso a thread estiver adormecida; 1.9.5 Exclusão 16 - Retornar através do método resume() 2 Introdução a Java Enterprise Edition , caso a thread tiver sido suspensa 17 (método deprecado); 2.1 Porque Java EE tem sido tão utilizado? 17 Retornar com o método notify() ou notifyAll() , caso a thread estiver em 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 espera; 2.3.1 - Retornar APIs após a conclusão da operação de I/O. 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 A thread está no estado de encerrado, quando encerrar a sua execução. Isto pode acorrer pelo término do 3 Análise de arquiteturas 21 método run() , ou pela chamada explícita do método stop() . 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 Começando a trabalhar com threads 3.4 Vantagens arquitetura 22 Para entender da o uso de umaMVC thread, está apresentado a seguir, um programa que fica indefinidamente 4 Ambiente de desenvolvimento 23 imprimindo um contador na saída padrão(SemThread.java). 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 public class SemThread { 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 public static void main(String[] args) { int i = 0; 4.2 Instalar Tomcat 25 while (true ) 4.2.1 Qual versão de Tomcat utilizar 25 System.out.println(“Número: ”+ i++); 4.2.2 Iniciar e parar o Tomcat 25 } 4.2.2.1 } [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 Aparentemente este programa ocupa completamente a CPU, e é o que realmente ocorre em S.O.s 4.4 Criar contexto de desenvolvimento 26 corporativos. Porém em S.O. preemptivos, o próprio S.O. se encarrega de gerenciar a ocupação da CPU, o que 4.4.1 Estrutura de diretórios 26 permite rodar outros processos, mesmo que um processo não retorne o controle para o S.O.. 4.4.2 Criar contexto de aplicação web 27 implementar o programa A 4.4.3 Como Configurar contexto: web.xml SemThread, permitindo que outros processos compartilhem a CPU?27 solução 4.4.4 é utilizar Ativar threads, contextocomo pode ser observado na classe SimplesThread. Existem duas abordagens para uma 29 classe thread: 4.4.5 ser uma Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 1. Implementar a interface Runnable; 4.7 Testar seus JSPs 31 2. Ser derivada da classe Thread; 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 34 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 40 www.3way.com.br Java WEB Java WEB Neste exemplo a classe Escrita é derivada da classe Thread. No método run() da classe Escrita está contido Sumário o código necessário para implementar adequadamente o programa acima. 1 JDBC 8 class Escrita extends Thread { 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 private int i; 1.2.1 java.sql.DriverManager 8 public void run() { 1.3 Fábrica de Conexões 9 while (true ) 1.4 Criar Banco de Dados e Tabelas 10 System.out.println(“Número :”+ i++); 1.5 Classes Javabeans – Entidades 10 } 1.6 11 } Inserindo Dados 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 public class SimplesThread1 { 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 public static void main(String[] args) { Escrita e = new Escrita(); //Cria o contexto de execução 1.9.2 Pesquisando 14 e.start(); //Ativa a thread 1.9.3 Recurso avaçando: O Cursor 15 } 1.9.4 } Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 No exemplo SimplesThread2 a classe Escrita implementa a interface Runnable. Qualquer classe que 2.1 Porque Java EE tem sido tão utilizado? 17 implementar a interface Runnable deve ter a descrição do método run() . 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 class 2.3.1 Escrita APIs implements Runnable { 19 2.3.2 Contêiners 19 private int i; 2.3.3 Deployment de aplicações 21 public void run() { 3 Análise de arquiteturas 21 while(true) 3.1 Arquitetura Física e Arquitetura Lógica 21 System.o ut.println(“Número: ”+ i++); 3.2 } Tipos de aplicações na WEB Uma thread só é 21 }3.3 Arquitetura MVC para a Web 21 iniciada quando o 3.4 Vantagens da arquitetura MVC 22 public class SimplesThread2 { método start() for 23 4 Ambiente de desenvolvimento invocado. 4.1publicTomcat 23 static void main(String[] args) { 4.1.1 Instalar Java JSE SDK (JDK) Mesmo que o objeto 24 e = new Escrita();//Cria o contexto de execução 4.1.2 Escrita Qual versão de JDK utilizar 24 tenha sido criado com o Thread t = new Thread(e); //Cria a linha de execução 4.1.2.1 JAVA_HOME 24 t.start(); //Ativa a thread construtor new, não 25 4.2} Instalar Tomcat significa que ela esteja25 Qual versão de Tomcat utilizar }4.2.1 4.2.2 Iniciar e parar o Tomcat 25 em execução. 4.2.2.1 A classe [Windows] Tomcat como serviço 25 SimplesThread2 cria o contexto de execução da thread no 4.2.2.2 Tomcat como processo 26 momento que cria uma instância de um objeto Runnable, que é o objeto Escrita. 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 Escrita e = new Escrita(); //Poderia ser Runnable e = new Escrita(); 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 criar uma linha de execução, basta criar a thread, fornecendo o 4.4.3 ParaConfigurar contexto: web.xml 27 contexto (o local onde há o método run da thread). 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 Thread t = new Thread(e); 4.6 Testar seus servlets 30 O início da seus thread propriamente dito ocorrerá com o método start(). 4.7 Testar JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 35 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 41 www.3way.com.br Java WEB Java WEB Métodos para trabalhar com Threads Sumário A 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; 1 JDBC 8 void run() – Deve conter o código que se deseja executar, quando a thread estiver ativa; 1.1 Banco de Dados Relacional 8 - void start() – Inicia a thread. Ou seja, efetiva a chamada do método run(); 1.2 JDBC – Java Database Connectivity 8 1.2.1 - void java.sql.DriverManager 8 stop() – encerra a thread; 1.3 Fábrica desleep(long Conexões tempo) – deixa thread corrente inativa por no mínimo tempo milisegundos 9 - static void e 1.4 Criar Banco de Dados e Tabelas 10 promove outra thread. Note que este método é de classe e, conseqüentemente, uma thread não pode 1.5 Classes Javabeans – Entidades 10 fazer outra thread dormir por um tempo; 1.6 Inserindo Dados 11 - static void yield() – Deixa a thread em execução temporariamente inativa e, quando possível, promove 1.7 Fechando a Conexão 12 outra thread de mesma ou prioridade ou maior; 1.8 PreparedStatement Statement 12 void suspend() – Coloca a thread no final da fila de sua prioridade e a deixa inativa (método deprecado); 1.9 Design Patterns 13 1.9.1 - void DAO – Data Access Object 13 resume() – Habilita novamente a execução da thread. Este método deve ser executado por outra 1.9.2 thread, Pesquisando 14 já que a thread suspensa não está sendo executada (método deprecado); 1.9.3 - void Recurso avaçando: O Cursor 15 interrupt() – envia o pedido de interrupção de execução de uma thread; 1.9.4 Alteração 16 - static boolena interrupted() – Verifica se a thread atual está interrompida; 1.9.5 Exclusão 16 - void join() – Aguarda outra thread para encerrar; 2 Introdução a Java Enterprise Edition 17 - boolean isAlive() retorna true caso uma thread estiver no estado executável ou bloqueado. Nos demais 2.1 Porque Java EE – tem sido tão utilizado? 17 retorna false; 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition - void setPriority(int prioridade) – Define a prioridade de execução de uma thread. Os valores 18 de 2.3.1 prioridade APIs estão entre 1 e 10; 19 2.3.2 Contêiners 19 - int getPriority() – verifica a prioridade de execução de uma thread; 2.3.3 Deployment de aplicações 21 - synchronized – mecanismo que permite ao programador controlar threads, para que as mesmas possam 3 Análise de arquiteturas 21 compartilhar a mesma base de dados sem causar conflitos; 3.1 Arquitetura Física e Arquitetura Lógica 21 - void wait() – Interrompe a thread corrente e coloca a mesma na fila de espera (do objeto compartilhado) 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web e aguarda que a mesma seja notificada. Este método somente pode ser chamado dentro de um método 21 de 3.4 Vantagens da arquitetura MVC 22 sincronizado; 4 Ambiente desenvolvimento 23 - void notify() de – Notifica a próxima thread, aguardando na fila; 4.1 Tomcat 23 - void notifyAll() – Notifica todas as threads. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Há também, vários métodos para trabalhar com agrupamentos de threads. A documentação necessária 4.1.2.1 JAVA_HOME 24 pode no JDK, no pacote Java.lang.ThreadGroup. 4.2 ser encontrada Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar Tomcat 25 Entendendo melhor o usoode threads 4.2.2.1 O que [Windows] Tomcat como serviço 25 acontece com a thread quando termina o método main? Porque o Garbage Collection não elimina a 4.2.2.2 Tomcat como processo 26 thread da memória, já que não há nenhuma referência para a mesma? O que ocorre é que o programa pode não 4.3 Testar Tomcat 26 ter explícita para a thread, mas implicitamente a thread está cadastrada na JV e continuará 4.4 uma referência Criar contexto de desenvolvimento 26 cadastrada enquanto não for encerrada. 4.4.1 Estrutura de diretórios 26 forma, mesmo após executar 4.4.2 Desta Criar contexto de aplicação web o último comando do main, o programa permanece sendo executado. 27 4.4.3 Configurar contexto: web.xml 27 Para encerrá-lo, todas as referências implícitas do programa devem ser eliminadas. Este mesmo princípio ocorre 4.4.4os componentes Ativar contexto 29 para de uma interface gráfica, onde por exemplo, mesmo ao final do main um frame pode ficar 4.4.5 Testar contexto 29 ativo. 4.5 Bibliotecas Servlet 29 Para visualizar melhor o uso de threads, o arquivo VariasThreads.java, apresenta um incremento da classe 4.6 Testar seus servlets 30 SimplesThread2. classe Escrita passou a ter uma variável de instância que identifca a thread que está sendo 4.7 TestarAseus JSPs 31 executada. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 36 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 42 www.3way.com.br Java WEB Java WEB Sumário class Escrita implements Runnable { private int i; 1 JDBC 1.1 Banco de Dados Relacional private static Connectivity int cont = 0; 1.2 JDBC – Java Database 1.2.1 java.sql.DriverManager private int identificacao; 1.3 Fábrica de Conexões 1.4 Criar Bancovoid de Dados e Tabelas public run() { 1.5 Classes Javabeans – Entidades while(true) 1.6 Inserindo Dados 1.7 Fechando a Conexão System.out.println(“Número (” + 1.8 PreparedStatement ou Statement identificacao + “): ” + i++); 1.9 Design Patterns } 1.9.1 DAO – Data Access Object public Escrita() { 1.9.2 Pesquisando cont++; 1.9.3 Recurso avaçando: O Cursor identificacao = cont; 1.9.4 Alteração } 1.9.5 } Exclusão 2 Introdução a Java Enterprise Edition public class VariasThreads { 2.1 Porque Java EE tem sido tão utilizado? 2.2 O que é Java Enterprise Edition? public static void main(String[] args) { 2.3 A plataforma Java Enterprise Runnable r1 = Edition new Escrita(); 2.3.1 APIs Runnable r2 = new Escrita(); 2.3.2 Contêiners New Thread(r1).start(); New Thread(r2).start(); 2.3.3 Deployment de aplicações } 3 Análise de arquiteturas } 3.1 Arquitetura Física e Arquitetura Lógica 3.2 Tipos de aplicações na WEB A execução de uma nativa depende do S.O.. Embora a linguagem 3.3 Arquitetura MVC thread para a Web Java certosMVC cuidados tem que ser tomados para que as 3.4 seja totalmente Vantagensportável, da arquitetura 4 Ambiente de desenvolvimento threads cooperam adequadamente, independente da JVM. Na verdade, o que se 4.1 Tomcat espera é que uma thread, após ser executada, passe a promover outras threads, 4.1.1 Instalar Java JSE SDK (JDK) mantendo a ordem de prioridade entre as mesmas. Se isto não ocorrer, alguns 4.1.2 Qual versão de JDK utilizar S.O. poderão ter as demais threads paradas durante a execução da thread 4.1.2.1 JAVA_HOME “xxxxx”. 4.2 Instalar Tomcat VariasThreads2.java 4.2.1 O programa Qual versão de Tomcat utilizarrefaz a classe Escrita para, após exibir a 4.2.2 Iniciar e parar o Tomcat mensagem na saída padrão, a thread ficar inativa por pelo menos 500 4.2.2.1 [Windows] Tomcat como serviço milisegundos. 4.2.2.2 O método Tomcatsleep(long como processo tempo) faz com que a thread adormeça por tempo 4.3 Testar Tomcat milisegundos e promove outras threads. 4.4 Criar contexto de desenvolvimento 4.4.1 Estrutura de diretórios class implements Runnable { 4.4.2 CriarEscrita contexto de aplicação web 4.4.3 Configurar privatecontexto: int i; web.xml 4.4.4 Ativar contexto 4.4.5 Testar contexto private static int cont = 0; 4.5 Bibliotecas Servlet private int identificacao; 4.6 Testar seus servlets 4.7 Testar seus JSPs public void run() { 4.8 Logs 4.9 Variáveis de Ambiente os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 8 8 8 8 9 10 10 11 12 12 13 13 14 15 16 16 17 17 18 18 19 19 21 Você pode definir níveis21 21 de prioridade para 21 execução de uma 21 thread. 22 Uma thread com nível 23 23 de prioridade maior 24 não necessariamente 24 será encerrada 24 primeiro, mas existe 25 25 uma grande 25 possibilidade. 25 26 26 26 26 27 27 29 29 29 30 31 31 32 37 1 43 Java WEB Java WEB while(true) Sumário 1 JDBC 8 try { 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 Thread.sleep(500); 1.2.1 java.sql.DriverManager 8 } 1.3 Fábrica de Conexões 9 (InterruptedException e) {} 1.4 Criar Banco de Dados catch e Tabelas 10 1.5 Classes Javabeans – Entidades 10 } 1.6 Inserindo Dados 11 1.7 Fechando Conexão { 12 public a Escrita() 1.8 PreparedStatement ou Statement 12 cont ++; 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 identificacao = cont; 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 } 1.9.4 Alteração 16 } 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 public class VariasThreads { 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 Opublic que é Java Enterprise Edition? 18 static void main(String[] args) { 2.3 A plataforma Java Enterprise Edition 18 New Thread(new Escrita()).start(); 2.3.1 APIs 19 2.3.2 Contêiners 19 New Thread(new Escrita()).start(); 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 } 3.1 21 } Arquitetura Física e Arquitetura Lógica 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 Para analisar a segunda abordagem de implementação de threads, o programa MultiThread.java cria três 3.4 Vantagens da arquitetura MVC 22 threads com tempos de espera e nomes distintos. Para gerar um tempo de espera randômico foi utilizado o 4 Ambiente de desenvolvimento 23 método Math.random() . 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 extends 4.1.2 class QualUmaThread versão de JDK utilizar Thread { 24 4.1.2.1 JAVA_HOME 24 private int delay; 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 public UmaThread(String identifacacao, int delay) { 4.2.2 Iniciar e parar o Tomcat 25 (identificacao); 4.2.2.1 [Windows]super Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 this.delay = delay; 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 } 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 public void run() { 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 String identificação = this.getName(); 4.4.5 Testar contexto 29 4.5 Bibliotecas try Servlet 29 { 4.6 Testar seus servlets 30 sleep(delay); 4.7 Testar seus JSPs 31 4.8 Logs 31 } 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 38 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 44 www.3way.com.br System.out.println(“Número (” + identificacao + “): ” + i++); Java WEB Java WEB catch(InterruptedException e) { Sumário 1 JDBC 8 1.1 Banco de Dados Relacional 8 } 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 System.out.prinln(“>>” + identificacao + “ ” + delay); } 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 } 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 public class MultiThread { 1.7 Fechando a Conexão 12 public static ou void main(String[] args) { 1.8 PreparedStatement Statement 12 1.9 Design Patterns 13 t1,t2,t3; 1.9.1 DAO – DataUmaThread Access Object 13 1.9.2 Pesquisando 14 t1 = new UmaThread(“Primeira”, (int)(Math.random()*8000)); 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração t2 = new UmaThread(“Segunda”, (int)(Math.random()*8000)); 16 1.9.5 Exclusão 16 = new UmaThread(“Terceira”, (int)(Math.random()*8000)); 2 Introdução t3 a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 t1.start(); 2.3 A plataforma Java Enterprise Edition 18 t2.start(); 2.3.1 APIs 19 2.3.2 Contêiners 19 t3.start(); 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 } 3.1 21 } Arquitetura Física e Arquitetura Lógica 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 5 Java Servlet 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 5.1 4.1.2Histórico Qual versão de JDK utilizar 24 4.1.2.1 No JAVA_HOME 24 começo, a Internet era uma dúzia de páginas estáticas contendo sites de pesquisa de diversas 4.2 Instalar Tomcat 25 academias. A necessidade de gerar conteúdo dinâmico como os primeiros contadores, uma idéia bem simples hoje 4.2.1 Qual versão de Tomcat utilizar 25 em dia, surgiram os primeiros programas de CGI (Common Gateway Interface). 4.2.2 Iniciar e parar o Tomcat 25 de linguagens C++, Perl, ASP, PHP, Cobol, Delphi, Shell e etc, foi possível gerar conteúdo 4.2.2.1 Através [Windows] Tomcat como como C, serviço 25 que permite ao usuário à diversas funcionalidades através de páginas HTML, como quando você deseja 4.2.2.2 Tomcat como acesso processo 26 comprar produtos em uma loja virtual. 4.3 Testar Tomcat 26 Para melhorar o desempenho do último exemplo, inventaram o que viria a ser um servlet, uma nova forma 4.4 Criar contexto de desenvolvimento 26 de trabalhar com requisições de clientes via web que economiza o tempo de processamento de uma chamada e a 4.4.1 Estrutura de diretórios 26 memória que seria gastade para tal processo, de 4.4.2 Criar contexto aplicação web além de ser em Java e possuir todas vantagens e facilidades 27 orientação a objeto. 4.4.3 Configurar contexto: web.xml 27 Além do mais, servlets são portáveis tanto quanto qualquer programa escrito em Java, e aqueles que 4.4.4 Ativar contexto 29 programam servlets não precisam mais se preocupar com a funcionalidade do servidor, que já foi escrita para nós e 4.4.5 Testar contexto 29 não precisa ser alterada. 4.5 Bibliotecas Servlet 29 Este curso tem como pré-requisito o conhecimento de HTML : saber utilizar as tags principais para a 4.6 Testar seus servlets 30 construção de páginas dinâmicas ( html, body, form, input, textarea e select ). 4.7 Testar seus JSPs 31 4.8 4.9 Logs Variáveis de Ambiente os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br System.out.println(“Thread: ” + identificacao + “ foi interrompida’); 31 32 39 1 45 Java WEB Java WEB Um CONTÊINER é o componente responsável por dar suporte para as APIs de Servlet e JSP. O Tomcat virou Sumário implementação padrão de referência das APIs de Servlets, isto é, quando uma nova especificação surge, o Tomcat costuma ser o primeiro servlet contêiner a implementar a nova API. 1 JDBC 8 Tudo o que vamos desenvolver neste curso funciona em qualquer ambiente compatível com o Java 1.1 Banco .de Dados Relacional 8 Enterprise Edition 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 5.2 O que é um Servlet? Servlets é uma API para 1.3 Fábrica de Conexões 9 Servlets são classes Java que são instanciadas e executadas em 1.4 Criar Banco de Dados e Tabelas 10 construção de componentes associação com servidores Web, atendendo requisições realizadas por meio do 1.5 Classes Javabeans – Entidades do lado servidor com o 10 protocolo HTTP. Ao serem acionados, os objetos Servlets podem enviar a 1.6 Inserindo Dados 11 resposta na forma de uma página HTML ou qualquer outro conteúdo MIME. objetivo de fornecer um 12 1.7 Fechando a Conexão Na verdade os Servlets podem trabalhar com vários tipos de servidores e não padrão para comunicação12 1.8 PreparedStatement ou Statement só servidores Web, uma vez que a API dos Servlets não assume nada a respeito 1.9 Design Patterns entre clientes e servidores13 . do ambiente do servidor, sendo independentes de protocolos e plataformas. 1.9.1 DAO – Data Access Object 13 Os Servlets são tipicamente usados no desenvolvimento de sites 1.9.2 Pesquisando 14 dinâmicos. Sites dinâmicos são sites onde algumas de suas páginas são 1.9.3 Recurso avaçando: O Cursor 15 construídas no momento do atendimento de uma requisição HTTP. Assim é 1.9.4 Alteração 16 possível criar páginas com conteúdo variável, de acordo com o perfil do 1.9.5 Exclusão 16 usuário ou informações armazenadas em um banco de dados. Veja na Figura 2 Introdução a Java Enterprise Edition 17 5.1 o esquema de funcionamento de um servlet. 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 Figura 5.1 – Sevidor Web, Contêiner e Servlets 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 O Contêiner gerencia as instâncias 4.4 Criar contexto de desenvolvimento 26 dos Servlets e provê os serviços de Servlets não possuem interface gráfica e suas instâncias são 4.4.1 Estrutura de diretórios 26 executadas dentro de um ambiente Java denominado de Contêiner. O rede necessários para as 4.4.2 Criar contexto de aplicação web Contêiner atua em associação com servidores Web recebendo 27 as e respostas. 4.4.3 requisições Configurar contexto: web.xml requisições reencaminhada por eles. Tipicamente existe apenas uma 27 4.4.4 Ativar contexto 29 instância de cada Servlet (Figura 5.2), no entanto, o Contêiner pode 4.4.5 Testar contexto 29 criar vários threads de modo a permitir que uma única instância 4.5 Bibliotecas Servlet 29 Servlet atenda mais de uma requisição simultaneamente (Figura 5.3). 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 40 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 46 www.3way.com.br Java WEB Java WEB Sumário 1 JDBC 8 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 Figura 5.2 – Contêiner atendendo uma única requisição com um Servlet 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDKFigura (JDK) 24 5.3 – Contêiner atendendo múltiplas requisições com um Servlet 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 Servlets provêem uma solução interessante para o relacionamento cliente/servidor na Internet, tornando4.2 Instalar Tomcat 25 se uma alternativa para de a implantação de sistemas para a Web. Antes de entrarmos em detalhes na construção 25 de 4.2.1 Qual versão Tomcat utilizar Servlets, compararemos solução com outras duas soluções possíveis para implantação de aplicações 25 na 4.2.2 Iniciar e parar esta o Tomcat Internet. 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 5.3 A classe HttpServlet 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 O comportamento dos servlets que iremos ver neste capítulo está definido na classe HttpServlet do pacote 4.4.1 Estrutura de diretórios 26 javax.servlet. Eles se aplicam às servlets que trabalham através do protocolo Http. 4.4.2 Para Criar contexto aplicação web 27 cada métodode HTTP há um método correspondente na classe HttpServlet, de modo geral eles tem a 4.4.3 Configurar contexto: web.xml 27 seguinte assinatura: 4.4.4 Ativar contexto 29 4.4.5 protected Testar contexto 29 void doXXX(HttpServletRequest, HttpServletResponse) throws 4.5 Bibliotecas Servlet IOException; 29 ServletException, 4.6 Testar seus servlets 30 onde depende do método HTTP, como mostrado na Tabela 5.1. 4.7 doXXX() Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 41 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 47 www.3way.com.br Java WEB Java WEB método HTTP método HttpServlet GET doGet() 1 JDBC 8 HEAD doHead() 1.1 Banco de Dados Relacional 8 POST Connectivity doPost() 1.2 JDBC – Java Database 8 1.2.1 java.sql.DriverManager 8 PUT doPut() 1.3 Fábrica de Conexões 9 DELETE doDelete() 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 OPTIONS doOptions() 1.6 Inserindo Dados 11 TRACE doTrace() 1.7 Fechando a Conexão 12 1.8 PreparedStatement ouTabela Statement 12 5.1 Métodos HTTP e o método correspondente na servlet 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 A classe HttpServlet fornece um implementação vazia para cada método doXXX(). Você deve sobrescrever o 1.9.2 Pesquisando 14 método doXXX() que for tratar em seu servlet para implementar a lógica de negócio. 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 5.3.1 Seqüencia de eventos na HttpServlet 1.9.5 Exclusão 16 Você deve estar curioso sobre quem invoca o método doXXX(). Veja a seqüencia do fluxo de controle 17 do 2 Introdução a Java Enterprise Edition servlet contêiner para o método doXXX() de uma servlet: 2.1 Porque Java EE tem sido tão utilizado? 17 O servlet conteiner chama o método service(ServletRequest, ServletResponse) de HttpServlet . 2.2 O que é Java Enterprise Edition? 18 - O método Java service(ServletRequest, ServletResponse) de HttpServlet invoca o método 2.3 A plataforma Enterprise Edition 18 service(HttpServletRequest, HttpServletResponse) da mesma classe. Observe que o método e service19 é 2.3.1 APIs sobrecarregado na classe HttpServlet. 2.3.2 Contêiners 19 O método service(HttpServletRequest, HttpServletResponse) de HttpServlet 2.3.3 Deployment de aplicações 21 analisa a requisição e procura pela método HTTP que está sendo utilizado. 3 Análise de arquiteturas Se você sobrepor o21 Dependendo do método HTTP , ele invoca o método doXXX() correspondente da 3.1 Arquitetura Física e Arquitetura Lógica 21 método service() na servlet. PorTipos exemplo, se a requisição 3.2 de aplicações na WEB usou o método POST ele chama o método 21 doPost() daArquitetura servlet. sua classe Servlet, você 3.3 MVC para a Web 21 Se for sobreposto o método service, em sua implementação você terá de perderá as 3.4 Vantagens da arquitetura MVC 22 determinar qual método HTTP será usando na requisição e fazer por si mesmo a 4 Ambiente de desenvolvimento funcionalidades 23 invocação do método doXXX() apropriado. Por esta razão é recomendado somente 4.1 Tomcat 23 oferecidas pela classe sobrepor osInstalar método doPost() e doGet() 4.1.1 Java JSE SDK (JDK) . 24 HttpServlet, e o 24 osversão métodos 4.1.2 Todos Qual de JDK doXXX() utilizar recebe dois parâmetros: os objetos HttpServletRequest e HttpServletResponse. Veremos estes objetos nas próximas método doXXX() não 4.1.2.1 JAVA_HOME 24 seções. 4.2 Instalar Tomcat será invocado 25 primeiro tome esta nota sobre a API Servlet: Os componentes mais 4.2.1 Mas Qual versão de Tomcat utilizar 25 automaticamente. importantes da API Servlet são interfaces , incluindo HttpServletRequest e 4.2.2 Iniciar e parar o Tomcat 25 HttServletResponse . O contêiner servlet deve fornecer a implementação destas 4.2.2.1 [Windows] Tomcat como serviço 25 interfaces. Então, como sempre que você se referir a algo como um objeto 4.2.2.2 Tomcat processo 26 HttpServletRequest isto significa um objeto de uma classe que implementa a 4.3 Testar Tomcat 26 interface HttpServletRequest. O nome da classe não tem qualquer importância e é, 4.4 Criar contexto de desenvolvimento 26 de fato, ignorado pelo desenvolvedor. 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 5.4 O Ciclo de vida do Servlet no Contêiner 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 O ciclo de vida de uma Servlet consiste dos seguintes passos: 4.5 Bibliotecas Servlet 29 1. A classe Servlet é carregada pelo contêiner durante seu processo de inicialização. Durante este processo, o 4.6 Testar seus servlets 30 contêiner um conjunto de arquivos de configuração, denominados deployment descriptors (descritores 4.7 Testar lê seus JSPs 31 de distribuição da aplicação). Cada aplicação tem seu próprio arquivo descritor de distribuição, web.xml 4.8 Logs 31, 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 42 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 48 www.3way.com.br Sumário Java WEB Java WEB que inclui uma entrada especificando nome do servlet e o nome da classe do servlet, para cada um dos Sumário servlets em uso pelo contêiner. Um instância da classe do servlet é criada pelo contêiner usando o método Class.forName(classname).newInstance(). Isto exige que o servlet tenha um construtor default, 1 JDBC 8 normalmente você deixará isto a cargo do compilador. Após isto o servlet estará carregado. 1.1 Banco de Dados Relacional 8 invoca o método init(ServletConfig). Este método inicializa o servlet e deve ser chamado antes que 8 o 1.2 2. O contêiner JDBC – Java Database Connectivity possa responder a qualquer requisição. O objeto ServletConfig contém todos os parâmetros de inicialização 1.2.1 servlet java.sql.DriverManager 8 que nos especificamos no descritor de distribuição. 1.3 Fábrica de Conexões 9 O procedimento de inicialização do servlet é chamado de lazy loading (carga 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 preguiçosa), deste modo o tempo de inicialização do contêiner é reduzido. 1.6 Inserindo Dados 11 Durante toda a vida do Porém se o servlet realizar muitas tarefas durante a sua inicialização o tempo 1.7 Fechando a Conexão servlet o método 12 de resposta para a primeira requisição será muito alto. Para melhorar este 1.8 PreparedStatement ou Statement 12 inconveniente você pode usar a tag <load-on-startup> no descritor de init(ServletConfig) é 1.9 Design Patterns 13 exigindo que o contêiner inicialize o servlet no mesmo invocado somente uma 1.9.1 distribuição, DAO – Data Access Object 13 da sua própria inicialização. 1.9.2 momento Pesquisando 14 única vez. 1.9.3 Recurso avaçando: O Cursor 3. Após a inicialização, o servlet pode 15 1.9.4 Alteração 16 atender as requisições dos clientes. Cada 1.9.5 Exclusão 16 requisição é tratada, separadamente, por O contêiner não 2 Introdução a Java Enterprise Edition 17 sua própria thread. O contêiner chama o inicializa os servlets 2.1 Porque Java EE tem sido tão utilizado? 17 método Servlet.service(ServletRequest, assim que ele é 2.2 O que é Java Enterprise Edition? ServletResponse) do servlet para toda 18 carregado. Ele inicializa 2.3 A plataforma Java Enterprise Edition 18 requisição. O método service() determina 2.3.1 os APIs 19 servlets quando ele o tipo de requisição que está sendo feito e 2.3.2 Contêiners 19 a despacha para um método apropriado a fim de manipular a requisição. O recebe uma requisição 2.3.3 Deployment de aplicações 21 desenvolvedor do servlet deve disponibilizar a implementação deste para o servlet pela 3 Análise de arquiteturas 21 método. Se uma requisição for para o método que não esteja primeira vez. 3.1 Arquitetura Física e Arquitetura Lógica 21 implementado, o método da super-classe será chamado, certamente 3.2 Tipos de aplicações na WEB 21 resultado em um erro que será retornado ao requisitor. 3.3 Arquitetura MVC para a Web 21 4. Finalmente, se o contêiner decidir que não necessita mais da instância da 3.4 Vantagens da arquitetura MVC 22 servlet, ele chama o método destroy() que inativa o serviço da servlet. O 4 Ambiente de desenvolvimento 23 método destroy() , assim como o método init() , é chamado somente um 4.1 Tomcat 23 única vez durante o ciclo de vida de um Servlet. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 A Figura 5.2 , mostra o diagrama de transições de estados do servlet. 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 Figura 5.2 – Servlet, diagrama de transição de estado. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 43 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 49 www.3way.com.br Java WEB Java WEB Sumário Uma aplicação Web é um conjunto de Servlets, JSPs, Classes Java, bibliotecas, imagens, páginas HTML e 1 JDBC , que podem ser empacotados juntos e que provê as funcionalidades da aplicação. 8 outros elementos 1.1 Banco de Dados Relacional 8 Essa definição está contida, na verdade, na própria especificação de Servlets de Java, não sendo específica, 1.2 JDBC – Java Database Connectivity 8 portanto, à utilização do um único contêiner Web. Isso significa que as aplicações desenvolvidas por você podem 1.2.1 java.sql.DriverManager 8 ser instaladas em qualquer servidor que implemente a especificação de Servlets (como o Apache Tomcat, Jetty, 1.3 Fábrica de Conexões 9 IBM e o Bea Weblogic 1.4 Websphere Criar Banco de Dados e). Tabelas 10 De acordo a especificação de Servlets, existem duas maneiras pelas quais uma aplicação web pode 10 ser 1.5 Classes com Javabeans – Entidades instalada junto a um Dados Servlet Container: por meio de um arquivo WAR (Web Application Archive) ou por meio 11 de 1.6 Inserindo 1.7 estrutura Fechando a Conexão 12 uma de diretórios criada para web contêiner. No caso específico do Tomcat, essa estrutura é criada, por 1.8 PreparedStatement ou Statement 12 padrão, abaixo do diretório webapps . 1.9 Design Patterns 13 Para criar uma aplicação Web há uma estrutura de diretórios mínima que deve ser criada, veja Figura 5.3. 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 Toda aplicação web deve ser posta aqui. Isto depende do 1.9.3 Recurso avaçando: O Cursor 15 configuração do contêiner, no Tomcat é diretório webapps. 1.9.4 Alteração 16 1.9.5 Exclusão 16 Cada diretório corresponde ao uma aplicação web |-<diretorio publicação> 2 Introdução a Java Enterprise Editionhospedada neste contêiner, é o “document root” para 17 |--ROOT 2.1 Porque Java EE tem sido tão utilizado? 17 aplicação web. A estrutura interna dos diretórios é |-- app1 dirigida pela especificação de Servlet. 2.2 O que é Java Enterprise Edition? 18 |--<dir_sua_aplicaçao> 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 Todos arquivos são públicos. Os arquivos podem | ser organizados em subdiretórios ex. *.html na 2.3.2 Contêiners 19 |-- *.html, *.gif, *.css pasta html, *.gif na pas imagens, etc 2.3.3 Deployment de aplicações 21 | 3 Análise de arquiteturas 21 Este diretório contém as informações de que web contêi3.1 Arquitetura 21 |-*.jsp Física e Arquitetura Lógica ner precisa para inicializar sua aplicação web. Ele não 3.2 Tipos de aplicações na WEB 21 faz parte do “document root” de sua aplicação. Ele | 3.3 Arquitetura MVC para a Web 21 contêm três coisas: diretório classes, diretório lib e 3.4 Vantagens da arquitetura MVC 22 |-WEB-INF o arquivo web.xml . 4 Ambiente de desenvolvimento 23 |- classes 4.1 Tomcat 23 Este diretório contêm somente arquivos class e as estruturas de | |- com 4.1.1 Instalar Java JSE SDK (JDK) diretórios dos pacotes. 24 4.1.2 Qual versão de JDK utilizar 24 | |- empresa 4.1.2.1 JAVA_HOME 24 | 4.2 Instalar Tomcat |- suaclasse.class 25 Este diretório contêm arquivos de bibliotecas de classes em 4.2.1 Qual 25 | versão de Tomcat utilizar formato jar, ou arquivos de aplicações web empacotados com 4.2.2 Iniciar e parar o Tomcat 25 |- lib jar. 4.2.2.1 [Windows] Tomcat como serviço 25 | |*.jar(jdbcdriver.jar,taglibs.jar, etc) 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 | Este arquivo é o descritor de distribuição (deployment 4.4 Criar contexto de desenvolvimento 26 descriptor) da aplicação web. Toda aplicação deve ter um. |- web.xml 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 Figura 5.3 – Estrutura de uma aplicação web 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 umacontexto das aplicações instaladas no web contêiner será carregada em um específico Servlet Context 4.4.5 Cada Testar 29 (Contexto do Servlet). Servlet Cada contexto dá à sua aplicação uma URL base, chamada de Context Path (Caminho 29 do 4.5 Bibliotecas Contexto), e provê um ambiente comum para todos os Servlets da aplicação. 4.6 Testar seus servlets 30 O Servlet Context 4.7 Testar seus JSPsserve para o Servidor mapear e distribuir as requisições recebidas para as aplicações 31 instaladas. No Apache Tomcat, o Servlet Context coincide com o nome do subdiretório criado dentro webapps. 31 4.8 Logs 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 44 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 50 www.3way.com.br 5.5 Estrutura de Aplicações Web e o Deployment Descriptor Java WEB Java WEB Assim, por exemplo, supondo que um servidor Tomcat está respondendo pelo nome de domínio Sumário www.empresa.org, e que tenhamos criado as aplicações app1, app2, então teremos os acessos às URLs iniciadas por http://www.empresa.org/app1 direcionadas para a aplicação app1 os acessos às URLs iniciadas por 1 JDBC 8 http://www.empresa.org/app2 direcionadas para a aplicação app2. Já o acesso, por exemplo, a uma página html 1.1 esteja dentro Banco de de \webapps\app1\html, Dados Relacional que terá a seguinte URL http://www.empresa.org/app1/html/hello.html. 8 1.2 JDBC – Java Database Connectivity 8 A Figura 5.3 mostra o diretório WEB-INF, este diretório deve existir para toda aplicação web e é criado 1.2.1 java.sql.DriverManager 8 dentro do diretório da aplicação (document root), porém, ele não faz parte do document root. Ou seja, arquivos 1.3 Fábrica de Conexões 9 presentes no WEB-INF não terão uma URL do tipo http://www.empresa.org/app1/WEB-INF/image.gif. Arquivos 1.4 Criar Banco de Dados e Tabelas 10 colocados dentro do WEB-INF não estão acessíveis diretamente ao cliente. Ainda dentro do WEB-INF temos os 1.5 Classes Javabeans Entidades diretórios classes, que contém–os pacotes de servlets criados para sua aplicação, o diretório lib, que pode conter10 as 1.6 Inserindo Dados 11 bibliotecas de classes compartilhadas pela sua aplicação, como drivers JDBC e, finalmente, o coração de uma 1.7 Fechando a Conexão 12 aplicação web, o descritor de distribuição web.xml. 1.8 PreparedStatement ou Statement 12 O deployment descriptor é utilizado para informar ao contêiner como executar seus servlets, ele permite 1.9 Design Patterns conhecida pelo seu cliente, para próprio nome interno do seu servlet. O ponto mais 13 mapear uma URL pública, 1.9.1 DAO – Data Access Object 13 importante, por hora, é saber que você pode modificar o comportamento de sua aplicação usando o web.xml, sem 1.9.2 Pesquisando 14 qualquer alteração em seu código fonte. 1.9.3 Exemplo Recurso avaçando: O Cursor 15 de web.xml: 1.9.4 Alteração 16 1.9.5 version= Exclusão Você pode usar o 16 <?xml "1.0" encoding="UTF-8"?> 2 Introdução a Java Enterprise Edition 17 <web-app id="WebApp_ID" version= "2.4" web.xml para xmlns= "http://java.sun.com/xml/ns/j2ee" 2.1 Porque Java EE tem sido tão utilizado? 17 configurar outras xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" 2.2 O que é Java Enterprise Edition? 18 xsi:schemaLocation= "http://java.sun.com/xml/ns/j2ee aspectos da sua 18 2.3 A plataforma Java Enterprise Edition http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 2.3.1 APIs aplicação, incluindo 19 2.3.2 <display-name>capx</display-name> Contêiners 19 atribuições de 2.3.3 Deployment de aplicações 21 segurança, páginas de <context-param> 3 Análise de arquiteturas 21 <description>exemplo parametro</description> erro, bibliotecas de 21 3.1 Arquitetura Física e Arquitetura Lógica <param-name>curso</param-name> 3.2 Tipos de aplicações na WEB tags, passagem de 21 <param-value>JavaWeb</param-value> 3.3 Arquitetura MVC para a Web </context-param> parâmetros para 21 3.4 Vantagens da arquitetura MVC 22 configuração inicial, 23 <servlet> 4 Ambiente de desenvolvimento <description>um simples servlet</description> entre outros recursos.23 4.1 Tomcat <display-name>ServletSimples</display-name> 4.1.1 Instalar Java JSE SDK (JDK) 24 <servlet-name>ServletSimples</servlet-name> 4.1.2 <servlet-class>aula.cap4.ServletSimples</servlet-class> Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 <init-param> 4.2 Instalar Tomcat 25 <param-name>mensagem</param-name> Noite</param-value> 4.2.1 Qual versão <param-value>Boa de Tomcat utilizar 25 </init-param> 4.2.2 Iniciar e parar o Tomcat 25 </servlet> 4.2.2.1 <servlet-mapping> [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 <servlet-name>ServletSimples</servlet-name> 4.3 Testar Tomcat 26 <url-pattern>/exemplo1.do</url-pattern> </servlet-mapping> 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 <welcome-file-list> 4.4.2 Criar contexto de aplicação web 27 <welcome-file>index.html</welcome-file> 4.4.3 Configurar contexto: web.xml 27 <welcome-file>index.jsp</welcome-file> 4.4.4 </welcome-file-list> Ativar contexto 29 </web-app> 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 Listagem 5.1 – Exemplo de Deployment Descriptior 4.6 Testar seus servlets 30 A listagem mostra o documento xml que define o Deployment Descriptor (DD), o elemento <web-app> é o 4.7 Testar seus JSPs 31 elemento root (raiz) desse XML, ou seja, deve haver somente um elemento <web-app>, e abaixo dele devem ficar 4.8 Logs 31 todos os outros elementos do XML. 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 45 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 51 www.3way.com.br Java WEB Java WEB Os principais elementos abaixo do elemento root são os seguintes: Sumário<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ê 1 JDBC 8 decida utilizá-lo, é importante que haja somente um desses elementos por DD. 1.1 Banco de Dados 8 <context-param> ->Relacional O elemento serve para que se possam definir parâmetros de inicialização do contexto 1.2 JDBC – Java Database Connectivity 8 da aplicação; esses parâmetros estarão disponíveis para todos os Servlets e páginas JSP da aplicação. 1.2.1 java.sql.DriverManager Cada elemento presente deve conter o nome de um parâmetro e o seu valor correspondente. 8 O 1.3 Fábrica de Conexões 9 desenvolvedor pode também optar por não utilizar nenhum desses elementos em seu XML. 1.4 Criar Banco de Dados e elementos Tabelas <welcome-file-list> e <error-page> contém, respectivamente, a lista 10 <welcome-file-list> -> Os 1.5 Classes Javabeans – Entidades ordenada de páginas a serem utilizadas como index e as páginas a serem apresentadas em casos 10 de 1.6 Inserindo Dados 11 erros HTTP ou exceções não tratadas pela aplicação. Esses dois elementos são opcionais, sendo que 1.7 Fechando 12 somenteaoConexão primeiro admite uma instância por DD. 1.8 PreparedStatement ou Statement 12 <servlet> -> O elemento servlet serve para definir, os Servlets da aplicação, com seus respectivos 1.9 Design Patterns 13 parâmetros. Cada elemento servlet, por sua vez, é composto dos seguintes elementos: 1.9.1 DAO – Data Access Object 13 <servlet-name>: deve conter o nome do Servlet. 1.9.2 Pesquisando 14 <servlet-class>: deve conter o nome da classe completamente qualificado (inclui a informação sobre o 1.9.3 Recurso avaçando: O Cursor 15 package, se existir). 1.9.4 Alteração 16 <init-param>: deve conter um parâmetro de inicialização do Servlet; pode haver nenhum, somente 1.9.5 Exclusão 16 um, ou mais de um elemento deste tipo para cada Servlet. 2 Introdução a Java Enterprise Edition 17 <load-on-startup>: deve conter um inteiro positivo indicando a ordem de carga deste Servlet em 2.1 Porque Java EE tem sido tão utilizado? 17 relação aos outros Servlets da aplicação, sendo que inteiros menores são carregados primeiro; se 2.2 O que é Java Enterprise Edition? 18 este elemento não existir, ou seu valor não for um inteiro positivo, fica a cargo do Servlet 2.3 A plataforma Java Enterprise Edition 18 Container decidir quando o Servlet será carregado (possivelmente, no instante em que chegar 2.3.1 APIs 19 chegar a primeira requisição a esse Servlet). 2.3.2 Contêiners 19 <servlet-mapping> -> O de elemento contém um nome de Servlet, conforme definido em servlet-name, e um <url2.3.3 Deployment aplicações 21 pattern> , padrão de URL do Servlet no servidor. 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 No Tipos exemplo anterior,natodos 3.2 de aplicações WEB as requisições com URLs iniciadas por 21 /exemplo1.do serão mapeadas para o Servlet cujo nome é ServletSimples. O cliente envia uma 3.3 Arquitetura MVC para a Web 21 Outros mapeamentos podem ser obtidos através de padrões de URL do tipo 3.4 Vantagens da arquitetura MVC requisição para o 22 *.<extensão>, como por exemplo, *.wm ou *.pdf, de maneira que o acessos a todas 4 Ambiente de desenvolvimento 23 servidor, este processa as URLs com o sufixo indicado sejam tratados por um mesmo Servlet. Um último 4.1 Tomcat 23 a requisição e devolve exemplo deInstalar mapeamento interessante 4.1.1 Java JSE SDK (JDK) diz respeito ao padrão /, que define o Servlet 24 default todos os acessos que não se encaixarem em nenhum outro padrão. uma resposta para o 4.1.2 paraQual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME cliente, nenhuma 24 4.2 Instalar Tomcat 25 informação é mantida 6 e Response 4.2.1 Request Qual versão de Tomcat utilizar 25 no servidor. 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 Introdução [Windows] Tomcat como serviço 25 6.1 4.2.2.2 Tomcat como processo 26 Embora Servlets possam ser utilizados com outros protocolos, além do HTTP, 4.3 Testar Tomcat 26 a maior parte das aplicações desenvolvidas são destinadas ao uso de clientes e 4.4 Criar contexto de desenvolvimento 26 servidores HTTP. 4.4.1 Estrutura de diretórios 26 O protocolo HTTP é utilizado na navegação nas páginas da Internet: quando 4.4.2 Criar contexto de aplicação web 27 você abre uma janela de um browser, acessa uma página Web e navega em seus 4.4.3 Configurar contexto: web.xml 27 links, você está, na verdade, utilizando esse protocolo para visualizar, em sua 4.4.4 Ativar contexto 29 máquina, o conteúdo que está armazenado em servidores remotos. 4.4.5 Testar contexto 29 O HTTP é um protocolo 4.5 Bibliotecas Servlet stateless (sem estado), que permite comunicação cliente-servidor. 29 Quando você digita o endereço de uma página em um Browser Web, estamos gerando uma requisição a 4.6 Testar seus servlets 30 um que irá, por sua vez, devolver para o browser o conteúdo da página HTML requisitada. 4.7 servidor, Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 46 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 53 www.3way.com.br Java WEB Java WEB A requisição enviada por um cliente deve conter, basicamente, um comando (também chamado de Sumário o endereço de um recurso no servidor (também chamado de path) e uma informação sobre a versão do método), protocolo HTTP que está sendo utilizado. 1 JDBC por exemplo, que utilize-se o método GET, o path /index.html e a versão 1.0 do protocolo HTTP (o 8 Supondo, 1.1 equivale Banco de Dados Relacional que a digitar um endereço http://<endereço de algum servidor>/index.html em um browser), temos 8 a 1.2 JDBC – Java Database Connectivity 8 seguinte requisição enviada: 1.2.1 java.sql.DriverManager Exemplo de requisição http: 8 1.3 Fábrica de Conexões 9 1.4 Além do Criar Banco de Dados e Tabelas 10 método, GET /index.html HTTP/1.0 1.5 Javabeans – Entidades 10 caminho eClasses versão, uma 1.6 Inserindo Dados 11 Existem diversos métodos HTTP que podem ser especificados em requisiçãoFechando pode conter 1.7 a Conexão 12 requisições, sendo os mais comuns o método GET, normalmente utilizado para obter parâmetros adicionais, 1.8 PreparedStatement ou Statement 12 o conteúdo de um arquivo no servidor, e o método POST, utilizado para enviar dados 1.9 Design Patterns 13 chamados headers. de formulários HTML ao servidor. Além desses métodos, o protocolo HTTP 1.0 1.9.1 DAO – Data Access Object 13 admite também o método HEAD, que permite que o cliente obtenha somente os 1.9.2 Pesquisando 14 headers da resposta; já o protocolo HTTP versão 1.1 admite os seguintes métodos: 1.9.3 Recurso avaçando: O Cursor 15 PUT: transfere um arquivo do cliente para o servidor 1.9.4 Alteração 16 DELETE: remove um arquivo do servidor 1.9.5 Exclusão 16 OPTIONS:Edition obtém a lista dos métodos suportados pelo servidor 2 Introdução a Java Enterprise 17 TRACE: retorna o conteúdo da requisição enviada de volta para o cliente 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 Dois comuns por exemplo, 2.3 Aheaders plataforma Java são, Enterprise Edition o header User-Agent, que contém informações sobre o cliente que 18 está gerando a requisição (tipo, versão do browser etc.) e o header Accept, que serve para especificar os tipos 19 de 2.3.1 APIs recursos pelo cliente para a requisição enviada. 2.3.2 aceitos Contêiners 19 Exemplo de requisição HTTP com headers: 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 GET /apostila/cap5/demo/qqcoisa HTTP/1.1 Você pode executar o 3.1 Arquitetura Física e Arquitetura Lógica 21 Host: localhost:8080 3.2 Tipos de aplicações na WEB comando acima 21 User-Agent: Mozilla/5.0 3.3 Arquitetura MVC para a Web 21 fazendo telnet para um Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3 3.4 Vantagens da arquitetura MVC 22 servidor web e 23 Accept-Encoding: gzip,deflate 4 Ambiente de desenvolvimento Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 digitando a seqüência23 4.1 Tomcat Keep-Alive: 300 4.1.1 Instalar Java JSE SDK (JDK) de comandos HTTP. 24 Connection: 4.1.2 Qual versão dekeep-alive JDK utilizar Não esqueça que o 24 \r\n 4.1.2.1 JAVA_HOME 24 protocolo HTTP espera 4.2 Instalar Tomcat 25 vezversão processada a requisição, uma linha em branco 25 4.2.1 Uma Qual de Tomcat utilizar o servidor, por sua vez, manda uma resposta para o e cliente, que essa resposta também tem um formato 4.2.2 Iniciar parar osendo Tomcat para entender que 25 predeterminado: a primeira linha contém informações sobre a versão do protocolo, 4.2.2.1 [Windows] Tomcat como serviço todos os comandos 25 um código Tomcat de status da resposta 4.2.2.2 como processo e uma mensagem associada a esse status; em 26 foram enviados. seguida são enviados também headers (com informações do servidor que gerou a 4.3 Testar Tomcat 26 resposta, por exemplo); e finalmente, é enviado o conteúdo, propriamente dito, da 4.4 Criar contexto de desenvolvimento 26 resposta. 4.4.1 Estrutura de diretórios 26 Exemplo de resposta HTTP com headers: 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 HTTP/1.1 200 OK 4.4.4 Ativar contexto 29 Apache-Coyote/1.1 4.4.5 Server: Testar contexto 29 Content-Length: 4.5 Bibliotecas Servlet 64 29 Date: Mon, 28 Apr 2008 18:55:27 GMT 4.6 Testar seus servlets 30 \r\n 4.7 Testar seus JSPs 31 <html><body> Requisição ao serlvet apostila.Demo</body></html> 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 47 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 54 www.3way.com.br Java WEB Java WEB Assim, no exemplo anterior, o código de status 200 indica que houve sucesso no atendimento da requisição Sumário pelo cliente, os headers indicam o tipo, tamanho e data e hora de última modificação do conteúdo enviada requisitado, e por fim, temos uma página HTML em branco, com o conteúdo propriamente dito. 1 JDBC 8 Outros códigos de status bastante comuns são o 404, que indica que o recurso não foi localizado no 1.1 de Dados 8 servidor e oBanco código 500 que Relacional indica que houve erro no processamento da requisição enviada. 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 1.3 HTTP Fábrica 9 6.2 Get de Conexões 1.4 Criar Banco de Dados e Tabelas 10 O método tem por objetivo enviar uma requisição por um recurso. As informações necessárias para a 1.5 Classes GET Javabeans – Entidades 10 1.6 Inserindo Dados 11 obtenção do recurso (como informações digitadas em formulários HTML) são adicionadas à URL e, por 1.7 Fechando a Conexão 12 consequência, não são permitidos caracteres inválidos na formação de URLs, como espaços em branco e 1.8 PreparedStatement ou Statement 12 caracteres especiais. Por exemplo: 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 Idempotente quer dizer GET /apostila/cap5/demo/qqcoisa?parametro=valor HTTP/1.1 1.9.2 Pesquisando que múltiplas 14 1.9.3 Recurso avaçando: O Cursor 15 requisições ao mesmo 1.9.4 Alteração 16 recurso usando o 1.9.5 Exclusão 16 Método HTTP : GET 2 Introdução a Java Enterprise Edition 17 método devem ter o URL : Java /apostila/cap5/demo/qqcoisa?parametro=valor 2.1 String Porque EE tem sido tão utilizado? 17 mesmo resultado que 2.2 O que é Java Enterprise Edition? de query string, ela consiste de vários 18 A parte após a parametro=valor ( ? ) é denominada Query String: teria uma requisição 2.3 A plataforma Java Enterprise Edition 18 pares nomes de parâmetros e valor separados pelo ( & ), como em: apenas. 2.3.1 APIs 19 Versão HTTP: HTTP/1.1 2.3.2 Contêiners 19 Em termos de métodos nome1=valor1&nome2=valor2&nome3=valor3&...&nomeN=valorN 2.3.3 Deployment de aplicações de requisição HTTP, 21 os 3 Análise de arquiteturas 21 métodos GET, HEAD, o método GET é Lógica idempotente, ou seja, a invocação da 3.1 Por especificação Arquitetura Física e Arquitetura 21 PUT e DELETE são os mesma URL repetidas vezes sempre 3.2 Tipos de aplicações na WEBterá o mesmo resultado. Os servidores Web 21 3.3 Arquitetura MVC para a Web podem assumir que a requisição GET pode ser repetida, sendo possível adicionar à que possuem a 21 3.4 ao seu Vantagens daIsto arquitetura MVC URL bookmark. é muito útil quando o usuário deseja manter a URL propriedade de ser22 4 Ambiente de desenvolvimento 23 resultante de uma pesquisa. Como desvantagem as informações passadas via GET idempotentes. 4.1 Tomcat 23 não podem ser muito longas, uma vez o número de caracteres permitidos é por volta 4.1.1 Instalar Java JSE SDK (JDK) 24 de 2K. 4.1.2 Qual versão de JDK utilizar 24 Use GET para retornar arquivos HTML ou arquivos de imagem, porque 4.1.2.1 JAVA_HOME 24 somente o nome do arquivo deve ser enviado. 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 HTTP Post 4.2.2.1 [Windows] Tomcat 6.3 como serviço 25 No POST os parâmetros 4.2.2.2 Tomcat como processo 26 As requisições POST a princípio podem ter tamanho ilimitado. No entanto, são enviados no corpo 4.3 Testar Tomcat 26 elas não são idempotente, o que as tornam ideais para formulários onde os usuários 4.4 da mensagem, Criar contexto de desenvolvimento 26 precisam digitar informações confidenciais, como número de cartão de crédito. 4.4.1 Estrutura de diretórios 26 diferentemente do GET Desta forma o usuário é obrigado a digitar a informação toda vez que for enviar a 4.4.2 Criar contexto de aplicação web 27 requisição, não sendo possível registrar a requisição em um bookmark, por exemplo. em queConfigurar eles fazem 4.4.3 contexto: web.xml 27 Veja exemplo de uma requisição HTTP POST. parte da URI . 4.4.4 Ativar contexto 29 De forma geral use POST para: 4.4.5 Testar contexto 29 - Enviar grande quantidades de dados; por exemplo grandes formulários. 4.5 Bibliotecas Servlet 29 - Fazer upload de arquivos 4.6 Testar seus servlets 30 - Capturar nome de usuário e senha, assim você evita que este dados fiquem 4.7 Testar seus JSPs 31 visíveis na URL. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 48 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 55 www.3way.com.br Java WEB Java WEB Linha Inicial -> POST /apostila/cap5/demo/qqcoisa HTTP/1.1\r\n *-> User-Agent: Mozilla/5.0 ..\r\n Sumário 1 JDBC 8 | Accept: text/xml,application/xml,application/xhtml ...\r\n 1.1 Banco de Dados 8 | Relacional Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3\r\n 1.2 JDBC – Java Database Connectivity 8 Header -----| Accept-Encoding: gzip,deflate\r\n 1.2.1 java.sql.DriverManager 8 | Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n 1.3 Fábrica de Conexões 9 | Content-Type: application/x-www-form-urlencoded\r\n 1.4 Criar Banco de Dados e Tabelas 10 *-> Content-Length: 15 1.5 Classes Javabeans – Entidades 10 1.6 11 Linha em Inserindo Branco Dados \r\n 1.7 Fechando 12 Dados -> a Conexão parametro=valor 1.8 PreparedStatement ou Statement 12 6.4 A Interface HttpServletRequest 1.9 Design Patterns 13 1.9.1 O objeto DAO –HttpServletRequest Data Access Object passado para o Servlet contém várias informações importantes relacionadas 13 com a requisição, como por exemplo o protocolo utilizado, o endereço remoto, informações contidas no cabeçalho 1.9.2 Pesquisando 14 e muitas outras. 1.9.3 Recurso avaçando: O Cursor 15 no exemplo como você pode usar estes métodos. A Figura 6.1 mostra uma página HTML que permite 1.9.4 Veja Alteração 16 ao usuário enviar dois parâmetros ao servidor. 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) Figura 6.1 – Página HTML contendo um FORM 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 Veja JAVA_HOME 24 sua listagem: 4.2 Instalar Tomcat 25 "/cap5/Listagem51" method="POST"> 4.2.1 <form Qualaction= versão de Tomcat utilizar 25 Tecnologia: 4.2.2 Iniciar e parar o Tomcat 25 <input type="text" name="lstconsulta" value="java"> <br> <br> 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 Estado: 4.3 Testar Tomcat name="estado" size="5" multiple> 26 <select <option value="AC">ACRE</option> 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de<option diretórios value="DF">BRASILIA</option> 26 <option value= "CE" >CEARÁ</option> 4.4.2 Criar contexto de aplicação web 27 <option value="PB">PARAÍBA</option> 4.4.3 Configurar contexto: web.xml 27 </select> <br> 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 <br> 4.5 Bibliotecas Servlet 29 <input type= "submit" value= "Busca Emprego" > 4.6 Testar seus servlets 30 </form> 4.7 Testar seus JSPs 31 Listagem 6.1 – Código HTML da Página de Requisição 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 49 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 56 www.3way.com.br Java WEB Java WEB O <form> possui um campo texto, uma caixa de listagem, e um botão de submissão. O atributo action Sumário o servlet mapeado para o nome Listagem51 que irá manipular a requisição. Observe que o atributo especifica method do <form> é POST, então os parâmetros serão enviados os servidor usando uma requisição HTTP POST. 1 JDBC 8 Uma vez que a requisição tenha sido enviada ao servidor, o servlet ExemploServeletRequest, que está 1.1 Banco de Dados Relacional 8 mapeado para nome Listagem51 no Deployment Descriptor, é invocado. A Listagem 6.2 mostra o método doPost() 1.2 JDBC – Java Database Connectivity 8 do servlet. 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 import java.io.IOException; 1.4 Criar Banco de Dados e Tabelas 10 import java.util.Enumeration; import javax.servlet.ServletException; 1.5 Classes Javabeans – Entidades 10 import javax.servlet.http.HttpServlet; 1.6 Inserindo Dados 11 import javax.servlet.http.HttpServletRequest; 1.7 Fechando a Conexão 12 import javax.servlet.http.HttpServletResponse; 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 public class ExemploServletRequest extends HttpServlet { 1.9.1 DAO – Data Access Object 13 @Override 1.9.2 Pesquisando 14 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 1.9.3 Recurso avaçando: O Cursor 15 throws ServletException, IOException { 1.9.4 Alteração // retorna valor do parametro enviado na requisicao 16 1.9.5 Exclusão // atraves de HttpServletRequest 16 2 Introdução a Java Enterprise Edition 17 String consultaString = req.getParameter("lstconsulta"); imprime na console 2.1 Porque Java// EE tem sido tão utilizado? 17 System. out .println(consultaString); 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 // retorna valores do parametro enviado na requisicao 2.3.1 APIs 19 // atraves de HttpServletRequest 2.3.2 Contêiners String[] listaEstado = req.getParameterValues("estado"); 19 imprime na console 2.3.3 Deployment// de aplicações 21 for (String estado : listaEstado) 3 Análise de arquiteturas 21 System.out.println(estado); 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 // retorna headers da requisicao 3.3 Arquitetura Enumeration<String> MVC para a Web 21 headers = req.getHeaderNames(); while (headers.hasMoreElements()) { 3.4 Vantagens da arquitetura MVC 22 String header = headers.nextElement(); 4 Ambiente de desenvolvimento 23 // retorna o valor de header 4.1 Tomcat 23 String valor = req.getHeader(header); 4.1.1 Instalar Java JSE SDK// (JDK) 24 imprime na console 4.1.2 Qual versão de JDK utilizar 24 System.out.println(header + " = " + valor); 4.1.2.1 JAVA_HOME 24 } 4.2 Instalar Tomcat 25 }versão de Tomcat utilizar 4.2.1 Qual 25 } 4.2.2 Iniciar e parar o Tomcat 25 Listagem 6.2 – Código do ExemploServletRequest 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 No código acima, nós sabemos o nome dos parâmetros (lstconsulta e estado) enviados com a requisição, 4.4 Criar contexto de desenvolvimento 26 então usamos o método getParameter() e getParameterValues() para recuperar os valores dos parâmetros. 4.4.1 Estrutura de diretórios 26 Quando não se sabe os nomes dos parâmetros você pode usar o método getParameterNames() e recuperar o 4.4.2 Criar contexto de aplicação web 27 nome de todos os parâmetros submetidos na requisição. 4.4.3 Ainda Configurar contexto: web.xmlutilizamos os métodos getHeader() e getHeaderNames(), para retornar27 no código acima, também os 4.4.4 e os Ativar contexto 29 nomes valores de cabeçalhos HTTP submetidos pela requisição. Diferentemente dos parâmetros os cabeçalhos 4.4.5 Testar contexto 29 são específicos para o protocolo HTTP portanto este métodos pertencem aos objetos do tipo HttpServletRequest e 4.5 Bibliotecas Servlet 29 não de ServletRequest. Veja hierarquia de classes na Figura 6.2. 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 50 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 57 www.3way.com.br Java WEB Java WEB Sumário 1 JDBC 8 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 Figura 6.2 – Hierarquia Interface HttpServletRequest 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 Na Listagem 6.2 você observa ainda que usamos o System.out para imprimir os valores de parâmetros e 1.9.1 DAO – Data Access Object 13 cabeçalhos HTTP, a impressão da saída é de responsabilidade do contêiner web e é local ao servidor não sendo 1.9.2 ao Pesquisando 14 enviada cliente. No caso do Tomcat esta saída poderá ser no prompt de comando ou no arquivo Catalina.out 1.9.3 do diretório Recurso de avaçando: O Cursor 15 dentro logs na pasta de instalação do servidor. 1.9.4 Alteração 16 1.9.5 A Interface Exclusão HttpServletResponse 6.5 O objeto HttpServletResponse16 é 2 Introdução a Java Enterprise Edition 17 um intermediário do servlet Ele Porque recebe os dados que o servlet necessita enviar para o cliente e 2.1 Java EE tem sido tão utilizado? 17 os formata dentro de uma mensagem como especificado pelo protocolo para enviar informações de 2.2 O que é Java Enterprise Edition? 18 HTTP. volta ao cliente. 2.3 A plataforma Java Enterprise Edition 18 ServletResponse fornece métodos relevantes para 2.3.1 A interface APIs 19 qualquer protocolo, enquanto HttpServletResponse estende 2.3.2 Contêiners 19 ServletResponse e adiciona métodos específicos para o protocolo HTTP. 2.3.3 Deployment de aplicações 21 ServletResponse declara vários métodos genéricos, incluindo 3 Análise de arquiteturas 21 getWriter(), getOutputStream(), setContentType() entre outros. Veja 3.1 Arquitetura Física e Arquitetura Lógica 21 Figura 3.2 6.3. Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 Figura 6.3 – Hierarquia interface HttpServletResponse 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Olhe Estrutura de diretórios para o método getWriter() a chamada desse método irá retornar uma referência a um objeto 26 da 4.4.2 java.io.PrintWriter Criar contexto, de aplicação 27 classe que pode serweb usada para enviar dados em formato de caracteres para um cliente. 4.4.3 Os métodos Configurar contexto: web.xml print() e println() dessa classe, por exemplo, podem ser utilizados para adicionar Strings 27 ao 4.4.4 de Ativar contexto 29 stream saída do Servlet; como a saída é mantida em um buffer por questões de performance, você pode 4.4.5 utilizar Testar contextoflush() para forçar a liberação desse buffer de saída, fazendo que o conteúdo da resposta 29 também o método 4.5 Bibliotecas Servlet 29 definido por você seja imediatamente enviado para o cliente. 4.6 Testar seus servlets 30 Assim podemos usar os métodos print() e println() dessa classe para adicionar Strings ao stream de saída 4.7servlet para Testar seus JSPs HTML dinamicamente ou enviar qualquer outro recurso aceito pelo browser cliente. 31 do gerar páginas 4.8 Logs 31 Os dados do stream não são enviados diretamente para o cliente, antes eles são armazenados em buffer de saída, 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 51 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 58 www.3way.com.br Java WEB Java WEB sendo enviados efetivamente pelo servlet somente quando o buffer estiver cheio, é automaticamente esvaziado ao Sumário final da execução do servlet, ou se invocarmos diretamente o método flush(). Veja exemplo na Listagem 6.3. 8 8 8 1.2.1 java.sql.DriverManager 8 import javax.servlet.ServletException; 1.3 Fábrica de Conexões 9 import javax.servlet.http.HttpServletRequest; 1.4 Criar Banco de Dados e Tabelas 10 import javax.servlet.http.HttpServletResponse; 1.5 Classes Javabeans – Entidades 10 public class ExemploSevletResponse extends javax.servlet.http.HttpServlet { 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 protected void doGet(HttpServletRequest request, HttpServletResponse response) 1.8 PreparedStatement ou Statement 12 throws ServletException, IOException { 1.9 Design Patterns 13 1.9.1 DAO//pega – Data Access Object 13 um objeto PrintWrite PrintWriter pw = response.getWriter(); 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 //usando PrintWrite para formatar uma Pagina HTML 1.9.4 Alteração 16 pw.println("<html>"); 1.9.5 Exclusão 16 pw.println("<head>"); 2 Introdução a Java Enterprise Edition 17 pw.println("<body>"); 2.1 Porque Java EE tem sido tão 17 pw.println("<h3> O utilizado? cabeçalhos recebidos pelo servidor"); pw.println(" são os seguintes:</h3><p/>"); 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 Enumeration<?> headers = request.getHeaderNames(); 2.3.1 APIs 19 2.3.2 Contêiners 19 while (headers.hasMoreElements()) { 2.3.3 DeploymentString de aplicações 21 header = (String) headers.nextElement(); String valor = request.getHeader(header); 3 Análise de arquiteturas 21 pw.println(header + " = " + valor + "<br/>"); 3.1 Arquitetura Física e Arquitetura Lógica 21 } de aplicações na WEB 3.2 Tipos 21 3.3 Arquitetura MVC para a Web 21 pw.println("</body>"); 3.4 Vantagens da arquitetura MVC 22 pw.println("</html>"); 4 Ambiente de desenvolvimento 23 pw.flush(); 4.1 Tomcat 23 4.1.1 } Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 } 4.1.2.1 JAVA_HOME 24 Listagem 6.3 – Enviando HTML dinamicamente 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Na Listagem Iniciar e parar o Tomcat 25 6.3 você pode observar o uso do método setContentType(“text/html”), a invocação deste 4.2.2.1 [Windows] Tomcat como serviço 25 método configura o header Content-Type do protocolo HTTP, este header serve para indicar o tipo do conteúdo 4.2.2.2 Tomcat como processo 26 contido na resposta do Servlet. Dessa maneira, o valor text/html indica uma página HTML, o valor image/jpeg 4.3 Testar Tomcat 26 indica imagem JPEG, de e assim por diante. Na maior parte de suas aplicações para web você irá usar formato 4.4 uma Criar contexto desenvolvimento 26 text/html , porém você precisará invocar o método setContentType() todas as vezes. O web contêiner adiciona 4.4.1 Estrutura denão diretórios 26 o cabeçalhoCriar automaticamente. 4.4.2 contexto de aplicação web 27 4.4.3 Quando Configurar contexto: web.xml desejarmos enviar outro tipos de recursos em formato binário, como por exemplo arquivos 27 do 4.4.4Zip ou Ativar contexto 29 tipo imagens JPEG, para o cliente você irá usar OutputStream a invés de PrintWriter. O objeto 4.4.5 Testar contexto 29 ServletResponse provê o método getOutputStream() que retorna um objeto da classe 4.5 Bibliotecas Servlet 29 javax.servlet.ServletOutputStream. Veja na Listagem 6.4 exemplo da implementação do método doGet() para 4.6 Testar seus servlets 30 enviar em formato 4.7 um arquivo Testar seus JSPs Jar. 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 52 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 59 www.3way.com.br 1 JDBC import java.io.IOException; import java.io.PrintWriter; 1.1 Banco de Dados Relacional import java.util.Enumeration; 1.2 JDBC – Java Database Connectivity Java WEB Java WEB import java.io.File; import Sumário java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; 1 JDBC import javax.servlet.ServletContext; 1.1 Banco de Dados Relacional import javax.servlet.ServletException; 1.2 JDBC – Java Database Connectivity import javax.servlet.http.HttpServletRequest; 1.2.1 java.sql.DriverManager import javax.servlet.http.HttpServletResponse; 8 8 8 8 1.3 Fábrica de Conexões 9 public class EnviaBinServlet extends javax.servlet.http.HttpServlet { 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 protected void doGet(HttpServletRequest request, 1.6 Inserindo Dados 11 HttpServletResponse response) throws ServletException, 1.7 Fechando a Conexão 12 IOException { A função de um servlet 1.8 PreparedStatement ou Statement 12 é receber uma //configura tipo de conteúdo 1.9 Design Patterns 13 solicitação do cliente e 13 1.9.1 DAOresponse.setContentType("application/jar"); – Data Access Object File f = new File("/teste.jar"); 1.9.2 Pesquisando devolver uma resposta. 14 1.9.3 Recurso avaçando: O Cursor 15 //declara um array de bytes para guardar binário byte[] bar=new byte[(int) f.length()]; 1.9.4 Alteração 16 1.9.5 Exclusão 16 FileInputStream is Edition = new FileInputStream(f); 2 Introdução a Java Enterprise 17 //lê arquivo para o array de bytes 2.1 Porque Java EE tem sido tão utilizado? 17 is.read(bar); 2.2 O que é Java Enterprise Edition? 18 //Pega um OutputStream 2.3 A plataforma Java Enterprise Edition 18 OutputStream os = response.getOutputStream(); 2.3.1 APIs//envia bytes do array de bytes para o browser 19 os.write(bar); 2.3.2 Contêiners 19 //força encaminhamento dos dados, esvaziando o buffer 2.3.3 Deployment de aplicações 21 os.flush(); 3 Análise de arquiteturas 21 } 3.1 Arquitetura Física e Arquitetura Lógica 21 } 3.2 Tipos de aplicações na WEBListagem 6.4 – Enviando arquivo JAR para o browser 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 7 Criando a Aplicação Web 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 7.1 4.1.2Introdução Qual versão de JDK utilizar 24 4.1.2.1 Servlets JAVA_HOME 24 existem para servir clientes. A solicitação talvez seja simples, como nas listagens apresentadas até 4.2 Instalar Tomcat 25 agora, mas podem ser complexas, fazendo armazenamento do estado da aplicação. A solicitação traz consigo dados 4.2.1 Qual versão de Tomcat utilizar 25 cruciais e o código do seu servlet tem que saber como encontrá-los e utilizá-los. A resposta leva a informação que o 4.2.2 precisa Iniciar e parar o Tomcat 25 browser para montar uma página (ou baixar alguns dados) e o código do seu servlet tem que saber como 4.2.2.1 ou [Windows] Tomcat como serviço 25 enviá-los não. Seu servlet pode decidir encaminhar a solicitação para outro servlet ou página Jsp. 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 7.2 Endereçamento Relativo 4.4.1 Estrutura de diretórios 26 Um servlet tem um nome do caminho para o arquivo, obviamente, como classes/pacote/UmServlet.class 4.4.2 Criar contexto de aplicação web 27 (um caminho para um contexto: arquivo de classe real). O desenvolvedor da classe do servlet escolhe o nome da classe (e o 4.4.3 Configurar web.xml 27 nome define parte da estrutura de diretórios), e o local no servidor define o nome completo 29 do 4.4.4 do pacote Ativar que contexto caminho. Mas qualquer pessoa que distribua o servlet também pode atribuir a ele um nome de distribuição 4.4.5 Testar contexto 29 especial . Um nome deServlet distribuição é simplesmente um nome interno secreto, que não precisa ser igual ao nome 4.5 Bibliotecas 29 da classe ou do arquivo. Ele pode ser igual ao nome da classe (pacote.UmServlet) ou o caminho relativo para o 4.6 Testar seus servlets 30 arquivo da classe (classes/pacote/UmServlet.class), mas também pode ser algo completamente diferente, como 4.7 Testar seus JSPs 31 ListarServlet, se definido assim no arquivo web.xml usando <servlet-mapping>. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 53 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 60 www.3way.com.br Java WEB Java WEB Assim, o servlet tem um nome público de URL – nome que o cliente conhece. Ou seja, o nome codificado Sumário no HTML de modo que, quando o usuário clicar em um link, que se supõe que vá à aquele servlet, este nome público URL é enviado ao servidor na solicitação HTTP. 1 JDBC Rotear a requisição para um servlet é um processo feito pelo servlet contêiner em duas etapas. Primeiro 8 o 1.1 Banco de Dados Relacional 8 contêiner identifica a aplicação web à qual a requisição pertence, e então ele encontra um servlet apropriado para 1.2 – Java Database Connectivity 8 manipular aJDBC requisição. 1.2.1 Ambos java.sql.DriverManager 8 os passos requerem que o contêiner quebre a URI em três partes: caminho contexto (context 1.3 , caminho Fábrica Conexões 9 path) dode servlet (servlet path) e informação de caminho (path info). A Figura 7.1 mostra estes três 1.4 Criar Banco de Dados e Tabelas 10 componentes da URL. 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 Figura 7.1 – URL : Host Name + Context path + Servlet path + Path info 1.9.4 Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise 17 Veja os componentes em partes:Edition 2.1 Porque Java EE tem sido tão utilizado? 17 Context Path – o servlet contêiner tenta comparar a requisição com o maior pedaço possível da URI, 2.2 O que é Java Enterprise Edition?web disponíveis. Este pedaço é chamado de context path. Por exemplo, 18 começando como os nomes das aplicações 2.3a URI é A plataforma Java Enterprise Edition 18 se /banco/ContaServlet/pessoafisica, então /banco é o context path (assumindo que a aplicação banco 2.3.1 APIs exista no servlet contêiner). Se não houver um nome de aplicação compatível o context path é vazio, neste caso 19 ele 2.3.2 Contêiners 19 será associado com a aplicação web padrão ( ou raiz /, no Tomcat é o webapps/ROOT). 2.3.3 Servlet Deployment de aplicações 21 Path – após extrair o context path, o contêiner tenta comparar a maior parte possível da URI 3 Análise de arquiteturas 21 restante com algum mapeamento de servlet (<servlet-mapping> do web.xml) definido para a aplicação web, que 3.1 Arquitetura Física e Arquitetura Lógica esteja especificado com context path. Esta parte é chamada de servlet path. Por exemplo, se a URI21 é 3.2 Tipos de aplicações na WEB 21 /banco/ContaServlet/pessoafisica, então /ContaServlet é o servlet path (assumindo que ContaServlet é o nome de 3.3 servlet Arquitetura MVC para a Web 21 um definido para aplicação). Se não for possível encontrar um padrão compatível é retornado uma página 3.4erro. Vantagens da arquitetura MVC 22 de 4 Ambiente de desenvolvimento 23. Path Info – qualquer coisa que sobre da URI após a determinação do servlet path é chamado de path info 4.1 exemplo, Tomcat 23 Por se a URI é /banco/ContaServlet/pessoafisica, então /pessoafisica é o path info. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Reveja Qual versão de JDK utilizar 24 o código da Listagem 7.4, em que enviamos um arquivo JAR para o browser. Nos referenciamos o 4.1.2.1do arquivo JAVA_HOME 24 nome JAR diretamente sem fazer qualquer referência ao diretório onde realmente se encontra o 4.2 25 arquivo, na Instalar linha: Tomcat 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 File Iniciar e parar o Tomcat 25 f = new File("/teste.jar"); 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Mas Tomcat como processo 26 onde realmente está este arquivo? Uma vez que o nome arquivo começa com a / então está sendo 4.3 seu caminho Testar Tomcat usado relativo. Ou seja, relativo ao context path (document root) da aplicação. Por exemplo, se 26 no 4.4 Criar contexto desenvolvimento 26 TomCat sua aplicação está de em ../webapps/banco então o caminho real de /teste.jar é ../webapps/banco/teste.jar. 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 7.3 Formulários 4.4.4 Ativar contexto 29 capaz contexto de lidar com as informações contidas em formulários HTML é fundamental para qualquer 4.4.5 Ser Testar 29 tecnologia de desenvolvimento 4.5 Bibliotecas Servlet de aplicações para Web. É por meio de formulários que os usuários fornecem 29 dados, preenchem pedidos de compra e (ainda mais importante) digitam o número do cartão de crédito. As 4.6 Testar seus servlets 30 informações digitadas formulário chegam até o Servlet por meio de um objeto do tipo ServletRequest e são 4.7 Testar seus no JSPs 31 recuperadas por meio do métodos getParameter(), getParameterNames() , getParameterValues() deste objeto. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 54 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 61 www.3way.com.br Java WEB Java WEB Todo item de formulário HTML possui um nome e esse nome é passado como argumento para o método Sumário getParameter() 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 de 1 valor. Isso JDBC 8 um quer dizer que um único parâmetro terá diversos valores, dependendo de quantos itens o usuário 1.1 Banco de Dadosem Relacional 8 selecionou. Um formulário que o usuário possa selecionar diversos itens é algo como: 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 <form action="recruta.do" method="POST"> 1.3 Fábrica de Conexões 9 Tecnologia: <input type=de "text" "lstconsulta" value="java"> <br> 1.4 Criar Banco Dados name= e Tabelas 10 <br> 1.5 Classes Javabeans – Entidades 10 Estado: 1.6 Inserindo Dados 11 <select name="estado" size="5" multiple> 1.7 Fechando a Conexão 12 <option value="AC">ACRE</option> 1.8 PreparedStatement ou Statement 12 <option value="DF">BRASILIA</option> <option value="CE">CEARÁ</option> 1.9 Design Patterns 13 value= "PB">PARAÍBA</option> 1.9.1 DAO<option – Data Access Object 13 <br> 1.9.2 </select> Pesquisando 14 <br> 1.9.3 Certificação: Recurso avaçando: O Cursor 15 1.9.4 <input Alteração 16 type="checkbox" name="certificados" value="scjp5">JAVA 5.O 1.9.5 <input Exclusão 16 type="checkbox" name="certificados" value="scjp6">JAVA 6.O <input type= "checkbox" "certificados" value="scwcd5">SCWCD 1.4 2 Introdução a Java Enterprise name= Edition 17 <input "checkbox" "certificados" value="scejb3">EJB 3.O 2.1 Porquetype= Java EE tem sido tão name= utilizado? 17 <br> 2.2 O que é Java Enterprise Edition? 18 <input type="submit" value="Busca Emprego"> 2.3 A plataforma Java Enterprise Edition 18 </form> 2.3.1 APIs 19 Listagem 7.1 – Objetos de formulário com múltiplos valores 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 No seu código, você usará o método getParameterValues() que retorna um array: 3.1 Arquitetura Física e Arquitetura Lógica 21 String = request.getParameter("lstconsulta"); 3.2 Tipos um de aplicações na WEB 21 String[] varios = request.getParameterValues("certificacoes"); 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 Se você quiserde ver iterar todo o array, por exemplo para imprimir todos os valores: 4 Ambiente desenvolvimento 23 4.1 Tomcat 23 []Java certificados 4.1.1 String Instalar JSE SDK (JDK) = request.getParameterValues("certificacoes"); 24 for(int i=0; i < certificados.length; i++){ 4.1.2 Qualresponse.getWriter().print("<br> versão de JDK utilizar 24 certificados: "+certificados[i]); 4.1.2.1 } JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 7.3.1 Exemplo: Leitura de dados de um formulário 4.2.2 Iniciar e parar o Tomcat 25 O Servlet da Listagem 7.2 exibe o valores passados pelo itens de formulários da Listagem 7.1, dois do tipo 4.2.2.1 [Windows] Tomcat como serviço 25 text e um do tipo checkbox com múltiplos valores. Em seguida o Servlet cria um formulário contendo os mesmos 4.2.2.2 Tomcat como processo 26 itens de formulário. Note que um formulário é criado por meio do tag <form>. Como parâmetros opcionais deste 4.3 Testar Tomcat 26 tag temos método da requisição (method), é a URL para onde será submetida à requisição (action). No caso do 4.4 Criar contexto de desenvolvimento 26 exemplo, o método adotado é o POST e a requisição será submetida ao próprio servlet que trata o formulário. 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 import java.io.IOException; 4.4.3 Configurar contexto: web.xml 27 import javax.servlet.ServletException; 4.4.4 Ativar contexto 29 import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 import java.io.*; 4.6 Testar seus servlets 30 import java.util.*; 4.7 Testar seus JSPs 31 import javax.servlet.*; 4.8 Logs 31 import javax.servlet.http.*; 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 55 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 62 www.3way.com.br Java WEB Java WEB public Sumário class TrataFormularioServlet extends HttpServlet { protected void doPost(HttpServletRequest request, 1 JDBC 8 HttpServletResponse response) throws IOException, ServletException { 1.1 Banco de Dados Relacional 8 doGet(request, response); 1.2 JDBC – Java Database Connectivity 8 } 1.2.1 java.sql.DriverManager 8 protected void doGet(HttpServletRequest request, 1.3 Fábrica de Conexões 9 HttpServletResponse response) throws IOException, ServletException10 { 1.4 Criar Banco de Dados e Tabelas response.setContentType("text/html"); 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 PrintWriter out = response.getWriter(); 1.7 Fechando a Conexão 12 out.println("<html>"); out.println("<head><title>Trata formulário</title></head>"); 1.8 PreparedStatement ou Statement 12 out.println("<body bgcolor=\"white\">"); 1.9 Design Patterns 13 formulário</h3>"); 1.9.1 DAOout.println("<h3>Trata – Data Access Object 13 1.9.2 Pesquisando 14 String nome = request.getParameter("nome"); 1.9.3 Recurso avaçando: O Cursor 15 String sobreNome = request.getParameter("sobrenome"); 1.9.4 Alteração 16 String[] hobbies = request.getParameterValues("hobbies"); 1.9.5 Exclusão 16 if (nome != null || sobreNome != null || hobbies != null) { 2 Introdução a Java Enterprise Edition 17 out.println("Nome = " + nome + "<br>"); 2.1 Porque Java out.println("Sobrenome EE tem sido tão utilizado? 17 = " + sobreNome + "<br>"); 2.2 O que é Javaout.println("Hobbies: Enterprise Edition? 18 <br>"); 2.3 A plataforma Java(String Enterprisestr Edition 18 for : hobbies) out.println(str + "<br>"); 2.3.1 APIs 19 } 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 out.println("<form action=/cap6/trataform method=GET>"); 3 Análise de arquiteturas 21 out.println("<h3>Nome : <input type=text size=20 name=nome></h3>"); 3.1 Arquitetura Física e Arquitetura Lógica 21 out.println("<h3>Sobrenome:"); out.println("<input type=text size=20 name=sobrenome></h3>"); 3.2 Tipos de aplicações na WEB 21 out.println("<h3> 3.3 Arquitetura MVC para a WebHobbies: </h3>"); 21 out.println("<input type='checkbox' name='hobbies'"); 3.4 Vantagens da arquitetura MVC 22 out.println("value='fofoca'>Fofocar</input>"); 4 Ambiente de desenvolvimento 23 out.println("<input type='checkbox'name='hobbies' "); 4.1 Tomcat 23 out.println("value='novela'>Assistir Novela</input>"); 4.1.1 Instalar Java JSE SDK (JDK) 24 out.println("<input type='checkbox'name='hobbies'"); para Igreja</input>"); 4.1.2 Qualout.println("value='igreja'>Ir versão de JDK utilizar 24 out.println("<input type='checkbox'name='hobbies'"); 4.1.2.1 JAVA_HOME 24 out.println("value='bailar'>Dançar</input>"); 4.2 Instalar Tomcat 25 out.println("<br>"); 4.2.1 Qualout.println("<input versão de Tomcat utilizar type=submit value=Enviar>"); 25 4.2.2 Iniciar e parar o Tomcat 25 out.println("</form>"); out.println("</body></html>"); 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 } Tomcat como processo Cookie é utilizado para 26 } 4.3 Testar Tomcat 26 armazenar informações do Listagem 7.2 - TrataFormularioServlet para lidar com um formulário simples . 4.4 Criar contexto de desenvolvimento 26 lado cliente (navegador),26 4.4.1 Estrutura de diretórios 4.4.2 Criar contexto de aplicação web não ocupando recurso do 27 7.4 Manipulação de Cookies 4.4.3 Configurar contexto: web.xml 27 servidor. Cookies são pacotes de dados, gerados pelo servidor, e que são 4.4.4 Ativar contexto 29 enviados junto com a resposta de uma requisição, ficando armazenados na 4.4.5 Testar contexto 29 máquina cliente acessível ao browser do usuário. Posteriormente, a cada 4.5 Bibliotecas Servlet 29 requisição enviada, o browser anexa também as informações desses Cookies, 4.6 Testar seus servlets 30 permitindo que o servidor recupere os valores definidos anteriormente. 4.7 Testar seus JSPs 31 Os Logs cookies fazem parte dos recursos que podemos adotar para 4.8 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 56 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 63 www.3way.com.br Java WEB Java WEB guardar dados de identificação de clientes utilizando protocolo HTTP, um vez que este protocolo é, como já Sumário sem estado ou não orientado à conexão. dissemos, A necessidade da identificação do cliente de onde partiu a requisição e o monitoramento de sua interação 1 o site (denominada JDBC 8 com de sessão) é usado tipicamente em sistemas web para: 1.1 - Controlar, Banco de Dados Relacional 8 em um carrinho de compras, a associação dos itens selecionados para compra com o usuário 1.2 JDBC – Java Database Connectivity 8 que deseja adquiri-los. Na maioria da vezes a seleção dos itens e compra é feita por meio da navegação 1.2.1 java.sql.DriverManager 8 de várias páginas do site e a todo instante é necessário distinguir os usuários que estão realizando as 1.3 Fábrica de Conexões 9 requisições. 1.4 - Acompanhar Criar Banco de Dados e Tabelas 10 as interações do usuário com o site para observar seu comportamento e, a partir dessas 1.5 Classes Javabeans – Entidades 10 informações, realizar adaptações no site para atrair um maior número de usuários ou realizar 1.6 Inserindo Dados 11 campanhas de marketing. 1.7 Fechando a Conexão 12 - Saber se o usuário está acessando o site para fornecer uma visualização e um conjunto de funcionalidades 1.8 PreparedStatement ou Statement 12 adequadas às suas preferências de acordo com o seu perfil. 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 Infelizmente, existem situações em que cookies não irão funcionar: 1.9.2 Pesquisando 14 quando o browser do usuário estiver configurado para não aceitar cookies. Não desenvolva sistema 1.9.3 Recurso avaçando: O Cursor 15 Usuários preocupados com sua privacidade normalmente bloqueiam o que dependa 100% de 16 1.9.4 Alteração armazenamento de cookies por seus browsers. O problema é privacidade, não 1.9.5 Exclusão cookies porque o usuário16 segurança: 2 Introdução a Java Enterprise Edition 17 pode configurar para não - Se você fornecer informações pessoais, servidores podem associar 2.1 Porque Java EE tem sido tão utilizado? 17 aceitar cookies estas informações com ações anteriores; 2.2 O que é Java Enterprise Edition? 18 - Servidores podem compartilhar informações sobre cookies através da armazenados em sua 18 2.3 A plataforma Java Enterprise Edition utilização de parceiros como doubleclick.net ; 2.3.1 APIs 19 máquina. Sites mal projetados armazenam informações confidenciais como 2.3.2 Contêiners 19 número de cartão de credito diretamente nos cookies ; 2.3.3 Deployment de aplicações 21 - Bugs em permitem sites hostis roubarem cookies 3 Análise de JavaScript arquiteturas 21 (navegadores antigos) . 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 Moral da estória, se cookies não vital para sua aplicação não use. Evite 3.3 Arquitetura MVC para a Web 21 criar servlets que falhem totalmente quando cookies estão desabilitados e 3.4 Vantagens da arquitetura MVC 22 nunca coloque dados confidenciais em cookies. 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 7.4.1 javax.servlet.http.Cookie 4.1.1 A Classe Instalar Java JSE SDK (JDK) 24 um através de instâncias da classe javax.servlet.http.Cookie. Essa classe fornece 4.1.2 Manipulamos Qual versão de cookie JDK utilizar 24 apenas um construtor que recebe dois argumentos do tipo String, que representam o nome e o valor do cookie. 4.1.2.1 JAVA_HOME 24 A classe Cookie apresenta os seguintes métodos: 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 25 Método Iniciar e parar o Tomcat Descrição 4.2.2.1 [Windows] Tomcat como serviço 25 String getName() retorna o nome do cookie. 4.2.2.2 Tomcat como processo 26 String getValue() retorna o valor armazenado no cookie. 4.3 Testar Tomcat 26 String getDomain() retorna o servidor ou domínio do qual o cookie pode ser 4.4 Criar contexto de desenvolvimento 26 acessado. 4.4.1 Estrutura de diretórios 26 String getPath() retorna o caminho de URL do qual o cookie pode ser 4.4.2 Criar contexto de aplicação web acessado. 27 4.4.3 Configurar contexto: web.xml 27 boolean getSecure() indica se o cookie acompanha solicitações HTTP ou HTTPS. 4.4.4 Ativar contexto 29 void setValue(String newValue) atribui um novo valor para o cookie. 4.4.5 Testar contexto 29 void setDomain(String pattern) define o servidor ou domínio do qual o cookie pode ser 4.5 Bibliotecas Servlet 29 acessado. 4.6 Testar seus servlets 30 void setPath(String define o caminho de URL do qual o cookie pode ser 4.7 Testar seusurl) JSPs 31 acessado. 4.8 Logs 31 4.9 Variáveis de Ambiente os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 32 57 1 64 Java WEB Java WEB void setMaxAge(int expiry) Sumário define o tempo restante (em segundos) antes que o cookie expire. retorna o valor de um único cabeçalho de solicitação como um número inteiro. void setSecure(Boolean flag) 1 JDBC 8 1.1 Banco de Dados Relacional 8 Tabela 7.1 – Métodos da classe Cookie. 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica Conexões 9 Para enviar de Cookies para o Cliente siga o roteiro: 1.4 Criar Banco de Dados e Tabelas 10 - Crie um objeto do tipo javax.servlet.http.Cookie. 1.5 Classes Javabeans – Entidades 10 - Chame o construtor do cookie com um nome do cookie e um valor, ambos strings. 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 Cookie c = new Cookie("userID", "a1234"); 1.8 PreparedStatement ou Statement 12 1.9 Design 13 - Atribua aPatterns idade máxima para tempo de vida cookie, informe ao navegador para armazenar cookies em 1.9.1 disco DAO – Data Access Object 13 ao invés de apenas na memória, use: 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 setMaxAge (argumento em segundos) ; 1.9.4 Alteração 16 c.setMaxAge(60*60*24*7); // Uma semana 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 - Insira o cookie na resposta http, use response.addCookie(c); Se você esquecer este passo, o cookie não 2.1 Porque Java EE tem sido tão utilizado? 17 será enviado para o browser! 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 Par ler Cookies do Cliente faça: 2.3.1 - Chame APIs request.getCookies(). Isto retornará um array de objetos do tipo 19 2.3.2 Contêiners 19 Para excluir um cookie no Cookie. 2.3.3 - Percorra Deployment de aplicações 21 o array, chamando getName() para cada entrada até você lado cliente crie um com o 3 Análise de arquiteturas 21 encontrar o cookie de seu interesse. Use o valor retornado com getValue() para mesmo nome , atribua a 3.1 o dadoArquitetura Física e Arquitetura 21 usar armazenado em sua aplicação. Lógica idade com valor 0 e 21 3.2 Tipos de aplicações na WEB 3.3 Arquitetura MVC para Web 21 String nomeCookie = a "userID"; adicione do response para 3.4 Vantagens da arquitetura MVC 22 Cookie[] cookies = request.getCookies(); ser enviado. 4 Ambiente de desenvolvimento 23 if (cookies != null ) { 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 for (int i = 0; i < cookies.length; i++) { 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 Cookie cookie = cookies[i]; 4.2 Instalar Tomcat 25 (nomeCookie.equals(cookie.getName())) { 4.2.1 Qual versão if de Tomcat utilizar 25 fazerAlgumaCoisa(cookie.getValue()); 4.2.2 Iniciar e parar o Tomcat 25 } 4.2.2.1 [Windows] Tomcat como serviço 25 } 4.2.2.2 } Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 Na Listagem 7.3, você vê o uso de cookies para registrar a visita e o retorno de um visitante. 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 import java.io.IOException; import java.io.PrintWriter; 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 import javax.servlet.ServletException; 4.4.5 Testar contexto 29 import javax.servlet.http.Cookie; 4.5 Bibliotecas Servlet 29 import javax.servlet.http.HttpServletRequest; 4.6 Testar seus servlets 30 import javax.servlet.http.HttpServletResponse; 4.7 Testar seus JSPs 31 import javax.servlet.http.HttpServlet; 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 58 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 66 www.3way.com.br Java WEB Java WEB public class VisitanteQueRetorna extends HttpServlet { Sumário 1 8 1.1 Banco de Dados Relacional 8 boolean ehNovo = true; 1.2 JDBC – Java Database Connectivity 8 Cookie[] cookies = request.getCookies(); 1.2.1 java.sql.DriverManager 8 if (cookies != null) { for ( int i = 0; i < cookies.length; i++) { 1.3 Fábrica de Conexões 9 Cookie c = cookies[i]; 1.4 Criar Banco de Dados e Tabelas 10 if ((c.getName().equals("retornoVisitante")) && 1.5 Classes Javabeans – Entidades 10 (c.getValue().equals("sim"))) { 1.6 Inserindo Dados 11 ehNovo = false; 1.7 Fechando a Conexão 12 break; 1.8 PreparedStatement } ou Statement 12 } 1.9 Design Patterns 13 1.9.1 DAO} – Data Access Object 13 String titulo; 1.9.2 Pesquisando 14 if (ehNovo) { 1.9.3 Recurso avaçando: O Cursor 15 Cookie returnVisitorCookie = new Cookie("retornoVisitante", "sim"); 1.9.4 Alteração 16 returnVisitorCookie.setMaxAge(60 * 60 * 24 * 365); // 1 ano de vida response.addCookie(returnVisitorCookie); 1.9.5 Exclusão 16 titulo = "Bem Vindo a Bordo novo Navegante"; 2 Introdução a Java Enterprise Edition 17 } else { 2.1 Porque Java titulo EE tem sido tão utilizado? 17 = "Muito bom reve-lo Navegante"; 2.2 O que 18 } é Java Enterprise Edition? 2.3 A plataforma Java Enterprise Edition 18 response.setContentType("text/html"); 2.3.1 APIsPrintWriter out = response.getWriter(); 19 2.3.2 Contêiners 19 out.println("<HTML>\n" + "<HEAD><TITLE>" + titulo 2.3.3 Deployment de aplicações 21 + "</TITLE></HEAD>\n" + "<BODY BGCOLOR=\"#FDF5E6\">\n" 3 Análise de arquiteturas 21 + "<H1 ALIGN=\"CENTER\">" + titulo + "</H1>\n" 3.1 Arquitetura Física e Arquitetura Lógica 21 + "</BODY></HTML>"); } Tipos de aplicações na WEB 3.2 21 } 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC7.3 – Guardando dados de formulários com Cookies. 22 Listagem 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 7.5 Navegação 4.1.2 Qual versão de JDK utilizar 24 Até agora nós temos estudado os servlets do ponto de vista e uso de um único servlet. Mas em aplicações 4.1.2.1 JAVA_HOME 24 reais um único servlet para tratar todas as possíveis tarefas não é nada prático. Comumente você irá dividir 4.2 utilizar Instalar Tomcat 25 suas de negócio múltiplas tarefas. Por exemplo, considere um processo simplificado de uma loja virtual 4.2.1regras Qual versão em de Tomcat utilizar 25 de livros e suas regras de negócio. Um usuário deveria poder: 4.2.2 Iniciar e parar o Tomcat 25 livros para como compra 4.2.2.1 - Selecionar [Windows] Tomcat serviço 25 4.2.2.2 - Remover Tomcatou como processo 26 adicionar mais livros 4.3 Testar Tomcat 26 - Visualizar livros num carrinho virtual 4.4 Criar contexto de desenvolvimento 26 - Fazer pagamento dos livros que deseja compar 4.4.1 - Informar Estrutura de diretórios 26 endereço de entrega 4.4.2 Além Criar contexto de aplicação web regras de negócio necessitam ser tratadas; por exemplo, um usuário 27 destas atividades muitas outras 4.4.3 Configurar contexto: web.xml 27 só poderá fechar uma compra se estiver cadastrado. 4.4.4 Você Ativar contexto irá quebrar o processo de negócio em processos menores, tendo um servlet mais 29 normalmente 4.4.5 Testar contexto 29 específico para tratar cada tarefa em foco. No processo descrito poderíamos ter um servlet CarrinhoServlet, que 4.5 Bibliotecas Servlet mantém dados das opções de livros já selecionado, que invoca um servlet FinalizaCompraServlet, após ação 29 do 4.6 Testar seus servletso servlet FinalizaCompraServlet, verifica se o usuário já está cadastrado em sua base 30 usuário para encerrar compra; 4.7dados de Testar seus JSPs estiver ele invoca o servlet CadastroClientServlet, que ao encerrar cadastro encaminha 31 de clientes, senão 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 59 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 67 www.3way.com.br public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { JDBC Java WEB Java WEB requisição novamente para FinalizaCompraServlet, que confirma o usuário e finaliza a compra emitindo fatura Sumário pedido. Para implementar as funcionalidades requeridas neste exemplo, os servlets terão que coordenar seus 1 JDBC 8 processos e também o compartilhamento de informações. Por exemplo, o servlet FinalizaCompraServlet deve 1.1 Banco Dados Relacional 8 conhecer os livros de que foram selecionados pelo uso de CarrinhoServlet. 1.2 JDBC – Java Database Connectivity 8 A API Servlet fornece uma maneira elegante para compartilhar dados e coordenar os processos de servlets. 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 7.5.1 Redirecionamento 1.4 Criar Banco de Dados e Tabelas 10 Existem algumas situações onde pode ser desejável transferir uma Redirecionamento o 10 1.5 Classes Javabeans –é Entidades requisição para outra URL. Isto feito com freqüência em sistemas que combinam 1.6 Inserindo Dados com JSP. No entanto, a transferência pode ser para 11 servidor cria uma nova o uso de Servlets juntamente 1.7 Fechando a Conexão 12 requisição para a nova qualquer recurso. Assim, podemos transferir uma requisição de um Servlet para 1.8 PreparedStatement ou Statement 12 uma página JSP, HTML ou um Servlet. Da mesma forma uma página JSP pode URL, gerando trafego de 1.9 Design Patterns 13 transferir uma requisição para uma página JSP, HTML ou um Servlet. dados na rede. 13 1.9.1 DAO – Data Access Object Existem dois tipos de transferência de requisição: o redirecionamento e o 1.9.2 Pesquisando 14 reencaminhamento. O redirecionamento é obtido usando o método 1.9.3 Recurso avaçando: O Cursor 15 sendRedirect() de uma instância HttpServletResponse, passando como 1.9.4 Alteração 16 argumento a URL de destino. A Listagem 7.4 mostra o código de um Servlet 1.9.5 Exclusão 16 redirecionando para uma página HTML. 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 import ...//NÃO esqueça import's public class Redireciona extends HttpServlet { 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 protected void doGet(HttpServletRequest request, 2.3.2 Contêiners 19 HttpServletResponse response) throws ServletException, IOException { 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 String userAgent = request.getHeader("User-Agent"); if ((userAgent != null ) && (userAgent.indexOf("MSIE") != -1)) { 3.1 Arquitetura Física e Arquitetura Lógica 21 //usa na caminho 3.2 Tipos de aplicações WEB relativo 21 3.3 Arquitetura response.sendRedirect("/cap6/Listagem36"); MVC para a Web 21 } else { 3.4 Vantagens da arquitetura MVC 22 //redirecionamento deve usar caminho relativo e não caminho 4 Ambiente de desenvolvimento 23 //absoluto 4.1 Tomcat 23 response.sendRedirect("cap6/Listagem36"); } Java JSE SDK (JDK) 4.1.1 Instalar 24 4.1.2 } Qual versão de JDK utilizar 24 } 4.1.2.1 JAVA_HOME 24 Listagem 7.4 – Redirecionando com sendRedirect 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Você Iniciar parar o em Tomcat 25 deveemanter mente um conjunto de pontos importantes sobre o método sendRedirect(). Você 4.2.2.1 [Windows] Tomcat como serviço 25 não pode invocar este método se uma reposta já tiver sido emitida – ou seja, se o cabeçalho de reposta já tiver sido 4.2.2.2 Tomcat como processo 26 enviado ao browser. Se você fizer a chamada sobe esta condição o método irá disparar um exceção do tipo 4.3 Testar Tomcat java.lang.IllegalStateException . Por exemplo, na listagem abaixo o código irá gerar uma IllegalStateException. 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 protected Estrutura void de diretórios 26 doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 4.4.2 Criar contexto de aplicação web 27 PrintWriter pw = response.getWriter(); 4.4.3 Configurar contexto: web.xml 27 pw.println("<html><body>Dipara exception</body></html>"); 4.4.4 Ativar contexto 29 pw.flush();//envia resposta ao browser 4.4.5 Testar contexto 29 //tenta redirecionar 4.5 Bibliotecas Servlet 29 response.sendRedirect("htt://www.apache.org"); 4.6 Testar seus servlets 30 } Testar seus JSPs 4.7 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 60 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 68 www.3way.com.br Java WEB Java WEB Neste código está forçando o envio imediato do header de resposta e aSumário geração de texto para o browser pela chamado do método pw.flush(). A O parâmetro usado com resposta é tida como commited neste ponto. Outro ponto importante é que a 1 JDBC 8 invocação de sendRedirect() não é transparente para o browser, em outras o método 1.1 Banco envia de Dados Relacional 8 palavras o servlet uma mensagem dizendo ao browser que deve buscar um getRequestDispatcher()8 1.2 JDBC – Java Database Connectivity recurso em algum outro lugar; na prática o servidor envia uma mensagem HTTP para o ServletContext é o 1.2.1 java.sql.DriverManager 8 302 de volta para o cliente informando que o recurso foi transferido para outra 1.3 e o cliente Fábrica de Conexões caminho para o recurso,9 URL envia uma nova requisição para a URL informada. 1.4 Criar Banco de Dados e Tabelas que não deve conter o10 1.5 Classes Javabeans – Entidades 10 Context Path , somente o 1.6 Inserindo Dados 11 7.5.2 Reencaminhamento Servlet Path. Não são12 1.7 Fechando a Conexão Diferentemente de sendRedirect(), no reencaminhamento, a requisição é 1.8 PreparedStatement ou Statement 12 aceitos caminhos fora do encaminhada diretamente para a nova URL mantendo todos os objetos 1.9 Design Patterns 13 associados e evitando uma nova ida ao cliente. O uso de reencaminhamento é Context Path corrente. 1.9.1 DAO – Data Access Object 13 mais eficiente do que o uso de redirecionamento. O reencaminhamento é obtido 1.9.2 Pesquisando 14 usando o método forward() de uma instância do objeto RequestDispatcher , 1.9.3 Recurso avaçando: O Cursor 15 passando como argumento os objetos HttpServletRequest e 1.9.4 Alteração 16 HttpServletResponse para o recurso de destino. 1.9.5 Exclusão 16 2 Introdução Enterprise Edition 17 Uma instânciaa Java RequestDispatcher é obtida por meio do método 2.1 Porque Java EE tem sido tão utilizado? 17 getRequestDispatcher() de uma instância javax.servlet.ServletContext ou 2.2 O que é Java Enterprise 18 javax.servlet.ServletRequest , que Edition? é obtido, respectivamente, por meio do 2.3 A plataforma Java Enterprise Edition 18 método getServletContext() do Servlet e do objeto ServletRequest passdos aos métodos service(), doPost(), 2.3.1 APIs 19 doGet() . A Listagem 7.5 mostra o código de um Servlet reencaminhando a requisição para outro servlet. 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 public class EncaminhamentoServlet extends HttpServlet { 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 protected void doGet(HttpServletRequest request, 3.3 Arquitetura MVC para a Web 21 HttpServletResponse response) throws ServletException, IOException { 3.4 Vantagens da arquitetura MVC 22 ServletContext 4 Ambiente de desenvolvimento sc = getServletContext(); 23 RequestDispatcher rd = sc.getRequestDispatcher("/listagem63"); 4.1 Tomcat 23 rd.forward(request, response); 4.1.1 Instalar Java JSE SDK (JDK) 24 } 4.1.2 } Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 Listagem 7.5 - Reencaminhamento de requisição 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 Na Listagem 7.5 , o servlet EcaminhamentoServlet pode processar 4.2.2 Iniciar e parar o Tomcat 25 parcialmente irá Reencaminhamento é 4.2.2.1 [Windows] Tomcat como serviço a requisição recebida e então encaminhá-la para outro servlet que 25 gerar a resposta final. Essa método pode ser usado para encaminhar requisições a 4.2.2.2 Tomcat como processo 26 transparente para o recursos dinâmicos (Servlets e JSP) ou estáticos (arquivo regular ou HTML) 26 no 4.3 Testar Tomcat usuário, todo processo servidor. Este método, também, só pode ser invocado se um resposta ainda não 4.4 Criar contexto de desenvolvimento 26 ocorreEstrutura dentro do estiver commited; doutra forma uma exceção IllegalStateException será lançada.26 4.4.1 de diretórios Há uma importante diferença entre o método 4.4.2 servidor. Criar contexto de aplicação web 27 getRequestDispatcher() de ServletContext e ServletRequest: você pode usar 4.4.3 Configurar contexto: web.xml 27 caminhos relativos com getRequestDispatcher() de ServletRequest mas não 4.4.4 Ativar contexto 29 com o método de ServletContext. Por exemplo, o caminho a seguir é valido 4.4.5 Testar contexto 29 . 4.5 Bibliotecas Servlet para ServletRequest, request.getRequestDispatcher(“../html/copyright.html”) 29 Para o método getRequestDispatcher() de ServletContext o parâmetro não 4.6 Testar seus servlets 30 pode ser relativo mas deve começar com uma /. 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 61 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 69 www.3way.com.br Java WEB Java WEB 7.5.3 Redirect versus Forward Sumário Há uma diferença importante entre usarmos RequestDispatcher.forward() e HttpServletResponse.sendRedirect(), é que forward() é completamente manipulada pelo web contêiner enquanto 1 JDBC 8 sendRedirect() envia uma mensagem de redirecionamento ao browser. Em resumo, forward() é transparente ao 1.1 Banco de Dados Relacional 8 browser e sendRedirect() não. 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 7.6 Passagem de dados entre componentes Web 1.3 Fábrica de Conexões 9 Dados podem ser entre servlets armazenando objetos em locais bem definidos, que agem 1.4 Criar Banco decompartilhados Dados e Tabelas 10 como Assim um servlet pode colocar dados neste local e outro servlet pode recuperar estes dados. Um 1.5 contêiner. Classes Javabeans – Entidades 10 objeto ServletRequest , ou HttpSession , ou ServletContext podem agir como contêiner para os servlets. Todos eles 1.6 Inserindo Dados 11 possuem um métodoa setAttribute(String nome, Object valor) – para armazenar dados no contêiner - e um 1.7 Fechando Conexão 12 getAttribute(String nome) – para recuperar dados. 1.8 PreparedStatement ou Statement 12 Embora qualquer um deste objetos possa ser usado para compartilhar dados entre servlets, há uma 1.9 Design Patterns 13 diferença quanto escopo (visibilidade) dos dados armazenados. Dados armazenados com ServletRequest 13 só 1.9.1 DAO – ao Data Access Object estão durante o tempo de vida da requisição, enquanto dados armazenados com HttpServletSession 1.9.2 disponíveis Pesquisando 14 estão disponíveis durante o tempo de vida da sessão e dados armazenados com ServletContext estão disponíveis 1.9.3 Recurso avaçando: O Cursor 15 durante de vida da aplicação. 1.9.4 o tempo Alteração 16 1.9.5 Exclusão 16 7.6.1 Atributos da request 2 Introdução a Java Enterprise Edition 17 Veja exemplo nas listagens, dois servlets um LoginServlet e outro AutenticaServlet. 2.1 Porque Java EE tem sidohá tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 <html> e compartilhando dados</title></head> 2.3.1 <head><title>Redirecionando APIs 19 <body> 2.3.2 Contêiners 19 <p>Entre de com seu usuario e senha</p> 2.3.3 Deployment aplicações 21 <form action="/cap6/login"> 3 Análise de arquiteturas 21 <p>Nome usuário:<input type="text" name="userid"/></p> 3.1 Arquitetura Física e Arquitetura Lógica 21 <p>Senha:<input type="password" name="passwd"/></p> 3.2 Tipos de aplicações na WEB 21 <p><input type= "submit" /> </p> </form> MVC para a Web 3.3 Arquitetura 21 </body> 3.4 Vantagens da arquitetura MVC 22 </html> 4 Ambiente de desenvolvimento 23 Listagem 7.6 – login.html 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 class Qual versão de JDK utilizar 24 public LoginServlet extends javax.servlet.http.HttpServlet { Hashtable usuarios = new Hashtable(); 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 public void init() throws ServletException { 4.2.1 Qual versão de Tomcat utilizar 25 super.init(); 4.2.2 Iniciar e parar o Tomcat 25 usuarios.put("ze", "123"); 4.2.2.1 [Windows] Tomcat como serviço "123"); 25 usuarios.put("maria", usuarios.put("pedro", "123"); 4.2.2.2 Tomcat como processo 26 } 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 protected void doGet(HttpServletRequest request, 4.4.1 Estrutura deHttpServletResponse diretórios response) throws ServletException, IOException 26 { 4.4.2 Criar contexto de aplicação web 27 String usrId = request.getParameter("userid"); 4.4.3 Configurar contexto: 27 String passwdweb.xml = request.getParameter("passwd"); if (usrId != null && passwd != null 4.4.4 Ativar contexto 29 && passwd.equals(usuarios.get(usrId))) { 4.4.5 Testar contexto 29 request.setAttribute("userid", usrId); 4.5 Bibliotecas Servlet 29 getServletContext().getRequestDispatcher("/autentica").forward( 4.6 Testar seus servlets 30 request, response); 4.7 Testar seus JSPs 31 return; 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 62 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 70 www.3way.com.br Java WEB Java WEB } else { request.getRequestDispatcher("../login.html").forward(request, response); } JDBC Sumário 1 8 } 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 protected void doPost(HttpServletRequest request, 1.2.1 java.sql.DriverManager 8 HttpServletResponse response) throws ServletException, IOException { doGet(request, response); 1.3 Fábrica de Conexões 9 } Criar Banco de Dados e Tabelas 1.4 10 } 1.5 Classes Javabeans – Entidades 10 Listagem 7.7 – LoginServlet 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 public class AutenticaServlet extends javax.servlet.http.HttpServlet { 1.9 Design Patterns 13 1.9.1 Hashtable<String,String> DAO – Data Access Object 13 codnome = new Hashtable<String, String>(); 1.9.2 Pesquisando 14 public void init() throws ServletException { 1.9.3 Recurso avaçando: O Cursor 15 super.init(); 1.9.4 Alteração 16 codnome.put("ze", "agente leza"); 1.9.5 Exclusão 16 codnome.put("maria", "agente gosta"); 2 Introdução a Java Enterprise Edition 17 codnome.put("pedro", "agente espera"); 2.1 Porque Java EE tem sido tão utilizado? 17 } 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 void doGet(HttpServletRequest request, 2.3.1 protected APIs 19 HttpServletResponse response) throws ServletException, IOException { 2.3.2 Contêiners 19 doPost(request, response); 2.3.3 } Deployment de aplicações 21 3 Análise de arquiteturas 21 protected void doPost(HttpServletRequest request, 3.1 Arquitetura Física e Arquitetura Lógica 21 HttpServletResponse response) throws ServletException, IOException { 3.2 Tipos de aplicações na WEB 21 String userid = (String) request.getAttribute("userid"); 3.3 Arquitetura MVC para a Web 21 PrintWriter pw = response.getWriter(); 3.4 Vantagens da arquitetura MVC 22 if (userid != null ) 4 Ambiente de desenvolvimento 23 pw.print("<h1>Você foi identificado como "+ codnome.get(userid)+"</h1"); 4.1 Tomcat 23 else 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão request.getRequestDispatcher("../login.html"). de JDK utilizar 24 forward(request,response); 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 } 4.2.1 Qual versão de Tomcat utilizar 25 } 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço Listagem 7.8 – AutenticaServlet 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 8 Gerenciamento de Sessão 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 8.1 Introdução 4.4.3 Configurar contexto: web.xml 27 Como explicamos em seções anteriores o HTTP é um protocolo stateless , ou seja, ele não mantém um 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 histórico das requisições recebidas de um mesmo cliente. Assim, imaginando uma aplicação simples como um 4.5 Bibliotecas Servlet carrinho virtual de compras de uma livraria virtual, por exemplo, como poderemos manter o histórico dos livros29 já 4.6 Testar seus servlets 30 selecionados pelo nosso cliente? Se a seleção de cada livro gera uma ou mais requisições, no momento do 4.7 Testar seus JSPs 31 fechamento da compra, como fazemos para saber quais foram todos os livros selecionados? 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 63 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 71 www.3way.com.br Java WEB Java WEB Possíveis maneiras de resolver esse problema, de maneira a contornar essa Sumário limitação do protocolo HTTP, são: Opcionalmente, o método 1 JDBC 8 Cookies – neste caso, na primeira requisição respondida pelo servlet 1.1 Banco de Dados Relacional 8 getSession() recebe como contêiner é adicionado um identificador de sessão (jsessionid) em um 1.2 JDBC – Java Database Connectivity 8 argumento um valor 1.2.1 java.sql.DriverManager 8 cookie . A cada nova requisição do cliente o cookie é recuperado e boolean que indica se é 1.3 Fábrica de 9 associado a Conexões possíveis contêiners HttpSession que tenham sido criados para criar o objeto 1.4 Criar Banco de Dados e Tabelas 10 para este cliente. Esta estratégia é adotada como procedimento padrão 1.5 Classes Javabeans – Entidades 10 HttpSession se ele não pelo contêiner, sendo seu funcionamento transparente ao 1.6 Inserindo Dados 11 existir (argumento true) desenvolvedor. Porém, como vimos anteriormente o usuário pode 1.7 Fechando a Conexão 12 desabilitar o suporte a cookies em seu browser, essa ação deliberado do ou se é para retorna null 1.8 PreparedStatement ou Statement 12 usuário impede o funcionamento desta técnica. 1.9 Design Patterns caso ele não exista 13 1.9.1 DAO – Data Access Object (argumento false). 13 1.9.2 Pesquisando 14 Reescrita de URL – essa estratégia é utilizada quando cookies não podem ser 1.9.3 Recurso Cursor o identificador de sessão (jsessionid) no 15 usados. O avaçando: contêiner O adiciona 1.9.4 Alteração 16 fim de cada URL. Assim o servidor pode associar o identificador de 1.9.5 Exclusão 16 sessão com dados armazenados para sessão. Por exemplo: 2 Introdução a Java Enterprise Edition 17 http://host/caminho/arquivo;jsessionid=123 informação da sessão é 2.1 Porque Java EE tem sido tão utilizado? 17 jsessionid=123. Diferentemente de cookies esta estratégia não é 2.2 O que é Javapara Enterprise Edition? 18 transparente o desenvolvedor; a interface HttpServletResponse 2.3 A plataforma Java Enterprise Edition 18 fornece dois métodos que facilitam o manuseio de URL reescritas: 2.3.1 APIs 19 encodeURL() e encodeRedirectURL(). 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 8.2 Obtendo uma sessão 3.1 Arquitetura Física e Arquitetura Lógica 21 Para controlar a sessãona é WEB necessário obter um objeto HttpSession por meio do método getSession() 21 do 3.2 Tipos de aplicações objeto HttpServletRequest . Para do 3.3 Arquitetura MVC para associar a Web um objeto ou informação à sessão usa-se o método setAttribute() 21 objeto HttpSession , passando para o método uma chave (String) e um valor (Object) . Note que o método aceita 3.4 Vantagens da arquitetura MVC 22 qualquer objeto e, portanto, qualquer objeto pode ser associado à sessão. Os objetos associados a uma sessão são 4 Ambiente de desenvolvimento 23 recuperados com o uso método getAttribute() do objeto HttpSession , que recebe como argumento o nome 4.1 Tomcat 23 associado ao objeto. se (JDK) obter uma enumeração dos nomes associados à sessão usa-se o método 4.1.1 Instalar JavaPara JSE SDK 24 getAttributeNames() do objeto HttpSession. A Listagem 8.1 mostra como podemos utilizar HttpSession para 4.1.2 Qual versão de JDK utilizar 24 armazenar dados de sessão. 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 import java.io.*; 4.2.1 Qual versão de Tomcat utilizar 25 import java.util.*; 4.2.2 Iniciar e parar o Tomcat 25 import javax.servlet.*; 4.2.2.1 [Windows] Tomcat como serviço 25 import javax.servlet.http.*; 4.2.2.2 Tomcat como processo 26 public class SessionServlet extends HttpServlet { 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 void service(HttpServletRequest request, 4.4.1 public Estrutura de diretórios 26 HttpServletResponse response) throws IOException, ServletException { 4.4.2 Criar contexto de aplicação web 27 response.setContentType("text/html"); 4.4.3 Configurar contexto: web.xml 27 PrintWriter out = response.getWriter(); 4.4.4 Ativar contexto 29 out.println("<html><head>"); 4.4.5 Testar contexto 29 out.println("<title>Teste de sessão</title>"); 4.5 Bibliotecas Servlet 29 out.println("</head>"); 4.6 Testar seus servlets 30 out.println("<body>"); 4.7 Testar seus JSPs 31 out.println("<h3>Teste de sessão</h3>"); 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 64 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 72 www.3way.com.br Java WEB Java WEB //recupera objeto HttpSession HttpSession session = request.getSession(true); //extrai dados da sessão out.println("Identificador: " + session.getId() + "<br>"); JDBC out.println("Data:"+(new Date(session.getCreationTime())); Banco de Dados Relacional out.println("<br>"); JDBC – Java Database Connectivity out.println("Último acesso: " + (new java.sql.DriverManager Date(session.getLastAccessedTime()))); String nomedado = request.getParameter("nomedado"); Fábrica de Conexões String valordado = request.getParameter("valordado"); Criar Banco de Dados e Tabelas Sumário 1 8 1.1 8 1.2 8 1.2.1 8 1.3 9 1.4 10 1.5 Classes Javabeans – Entidades 10 if (nomedado != null && valordado != null) { 1.6 Inserindo Dados 11 //armazena dado na sessão 1.7 Fechando a session.setAttribute(nomedado, Conexão 12 valordado); } 1.8 PreparedStatement ou Statement 12 out.println("<P>"); 1.9 Design Patterns 13 1.9.1 DAOout.println("Dados – Data Access Object da sessão:" + "<br>"); 13 1.9.2 Pesquisando 14 //recupera todos atributos armazenados na sessão 1.9.3 Recurso avaçando: O Cursor 15 Enumeration valueNames = session.getAttributeNames(); 1.9.4 Alteração 16 while (valueNames.hasMoreElements()) { 1.9.5 Exclusão 16 String name = (String) valueNames.nextElement(); 2 Introdução a Java Enterprise Edition 17 String value = (String) session.getAttribute(name); 2.1 Porque Javaout.println(name EE tem sido tão utilizado? 17 + " = " + value + "<br>"); 2.2 O que 18 } é Java Enterprise Edition? 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIsout.println("<P>"); 19 out.println("<form action=/cap7/SessionServlet method=POST>"); 2.3.2 Contêiners 19 out.println("<h3>Nome:<input type=text size=20"+ 2.3.3 Deployment de aplicações 21 "name=nomedado></h3>"); 3 Análise de arquiteturas 21 out.println("<h3>Valor: <input type=text size=20"+ 3.1 Arquitetura "name=valordado></h3>"); Física e Arquitetura Lógica 21 out.println("<input 3.2 Tipos de aplicações na WEB type=submit value=Enviar>"); 21 out.println("</form>"); 3.3 Arquitetura MVC para a Web 21 out.println("</body></html>"); 3.4 Vantagens da arquitetura MVC 22 } 4 Ambiente de desenvolvimento 23 } 4.1 Tomcat 23 Listagem 8.1 – Usando HttpSession 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 8.3 daTomcat sessão 4.2 Atributos Instalar 25 4.2.1 Os atributos Qual versão de Tomcat utilizar 25 de uma sessão são mantidos em um objeto HttpSession. 4.2.2 armazenar Iniciar e valores parar o em Tomcat Pode-se uma sessão por meio do método setAttribute() e A tag <session-timeout>25 4.2.2.1 [Windows] Tomcat como serviço 25 recuperá-los por meio do método getAttribute(). pode assumir um valor 4.2.2.2 Se um Tomcat como processo 26 usuário não realizar nenhuma ação durante um certo período de negativo , nesta caso, a 4.3 o servidor Testarirá Tomcat 26 tempo assumir que o usuário está inativo e irá invalidar a sessão. O 4.4 Criar contexto de desenvolvimento 26 sessão nunca expira . web.xml pode ser utilizado para configurar o tempo máximo, em minutos, de 4.4.1 Estrutura de diretórios 26 uma sessão: 4.4.2 Criar contexto de aplicação web 27 4.4.3 </web-app> Configurar contexto: web.xml 27 ... 4.4.4 Ativar contexto 29 <session-config> 4.4.5 Testar contexto 29 <session-timeout>30</session-timeout> 4.5 Bibliotecas Servlet 29 </session-config> 4.6 30 ...Testar seus servlets 4.7 Testar seus JSPs 31 </web-app> 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 65 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 73 www.3way.com.br Java WEB Java WEB O tempo de duração da sessão, também, pode ser alterado por meio do método Sumário setMaxInactiveInterval(int segundos), ele afetará somente a sessão em que for invocado. Observe que o método trabalha como tempo em segundos enquanto a tag <session-timeout> é configurada em minutos. 1 JDBC 8 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 8.4 Invalidando uma sessão 1.2.1 java.sql.DriverManager 8 Você viu na seção anterior que uma sessão é finalizada automaticamente quando o usuário permanece 1.3 Fábrica de Conexões 9 inativo porCriar um Banco período de tempo específico. Em alguns casos você poderá desejar encerrar uma sessão 1.4 de Dados e Tabelas 10 programaticamente. Por exemplo, num programa de carrinho virtual de compra é desejável terminar a sessão após 1.5 Classes Javabeans – Entidades 10 o processo de pagamento ter completado, assim, ao enviar uma nova requisição o usuário terá uma nova sessão 1.6 Inserindo Dados 11 com de compras sem nenhum item. HttpSession fornece o método invalidade() para este propósito, 1.7 um carrinho Fechando a Conexão 12 veja na Listagem 8.2: ou Statement 1.8 seu uso PreparedStatement 12 1.9 Design Patterns 13 class LogoutServlet extends HttpServlet { 1.9.1 public DAO – Data Access Object 13 protected void doGet(HttpServletRequest request, 1.9.2 Pesquisando 14 HttpServletResponse response) throws ServletException, IOException { 1.9.3 Recurso avaçando: O Cursor 15 // supondo que alguém tenha invocado este 1.9.4 Alteração // método a partir de um Hyperlink 16 request.getSession().invalidate(); 1.9.5 Exclusão 16 Os métodos encodeURL() // encaminha para pagina principal do usuário 2 Introdução a Java Enterprise Edition 17 e encodeRedirectURL() } Java EE tem sido tão utilizado? 2.1 Porque 17 } primeiro verifica se algum 2.2 O que é Java Enterprise Edition? 18 Listagem 8.2 – Invalidando uma Sessão ID de sessão necessita ser 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 anexado verificando se 2.3.2 Contêiners 19 houve o envio de um 8.5 Sessão sem cookies 2.3.3 Gerenciamento Deployment de de aplicações 21 header cookie na21 3 Análise de arquiteturas Dissemos anteriormente que se o suporte a Cookies não estiver habilitado requisição. 21 3.1 devemos Arquitetura Física Arquitetura Lógica de URL. Para tanto usamos os então recorrer ao e método de reescrita 3.2 Tipos de aplicações na WEB 21 métodos encodeURL() e encodeRedirectURL() para facilitar nosso trabalho. 3.3 Arquitetura MVC para a Web 21 A Listagem 8.3 ilustra como este métodos podem ser usados. 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 import javax.servlet.*; 4.1 Tomcat 23 import javax.servlet.http.*; 4.1.1 Instalar Java JSE SDK (JDK) 24 class de ReescreveURLServlet extends HttpServlet { 4.1.2 public Qual versão JDK utilizar 24 public void doGet(HttpServletRequest req, HttpServletResponse res) 4.1.2.1 JAVA_HOME 24 throws ServletException, IOException { 4.2 Instalar Tomcat 25 // recupera a sessão 4.2.1 Qual versão HttpSession de Tomcat utilizar 25 s = req.getSession(); 4.2.2 Iniciar e parar o Tomcat 25 PrintWriter pw = res.getWriter(); pw.println("<html>"); 4.2.2.1 [Windows] Tomcat como serviço 25 pw.println("<head></head>"); 4.2.2.2 Tomcat como processo 26 pw.println("<body>"); 4.3 Testar Tomcat 26 pw.println("Uma pagina de teste mostrando duas URLs:<br>"); 4.4 Criar contexto de desenvolvimento 26 pw.println("<a href=\"" + res.encodeURL("/cap7/SessionServlet") 4.4.1 Estrutura de diretórios 26 + "\">Servlet de sessão</a><br>"); //de anexa o ID de sessão 4.4.2 Criar contexto aplicação web 27 pw.println("<a 4.4.3 Configurar contexto: web.xml href=\"" + res.encodeURL("/cap7/logout") 27 + "\">Logout</a><br>"); 4.4.4 Ativar contexto 29 pw.println("</body>"); 4.4.5 Testar contexto 29 pw.println("</html>"); 4.5 Bibliotecas Servlet 29 } } Testar seus servlets 4.6 30 4.7 Testar seus JSPs 31 Listagem 8.3 – Gerenciando sessão sem cookies 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 66 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 74 www.3way.com.br Java WEB Java WEB 9 ServletContext e Filtros Sumário 8 1.1 Banco Dados Relacional 8 Você podede imaginar a interface ServletContext como uma janela por 1.2 você vê JDBC – Java Database Connectivity onde o ambiente do servlet. Um servlet usa essa interface para obter Toda aplicação web tem 8 1.2.1 java.sql.DriverManager 8 informação sobre a aplicação, tais como: parâmetros de inicialização para a um e somente um 1.3 Fábrica Conexões 9 aplicação ou versãode do servlet contêiner. Ele pode ser usado pelos servlets para ServletContext, ele está 10 1.4 Criar Banco Dados e Tabelas compartilhar dados unsde com os outros, assim como fizemos com ServletRequest Classes Javabeans – Entidades e1.5 HttpSession ; a diferença entre eles está no escopo destes dados. acessível a todos os 10 1.6 Inserindo Dados 11 recursos ativos da 1.7 Fechando a Conexão 12 9.1.2 Parâmetros de inicialização aplicação. 1.8 PreparedStatement ou Statement 12 O contexto é de uma aplicação web é inicializado no momento em que a 1.9 Design Patterns 13 aplicação está sendo carregada. Assim como tem parâmetros de inicialização 1.9.1 DAO – Data Access Object 13 para um servlet, também os temos para o contexto. Estes parâmetros são 1.9.2 Pesquisando 14 definidos no deployment descriptor da sua aplicação web. 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 9.1.2.1 Adicionando parâmetros de inicialização no Deployment Descriptor 1.9.5 Exclusão 16 (web.xml) 2 Introdução a Java Enterprise Edition 17 Veja este exemplo: 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 <web-app> 2.3 A plataforma Java Enterprise Edition 18 ... 2.3.1 APIs 19 <context-param> 2.3.2 Contêiners 19 2.3.3 Deployment<param-name>dburl</param-name> de aplicações 21 <param-name>jdbc:basedadosurl</param-name> 3 Análise de arquiteturas 21 </context-param> 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 .... 3.3 Arquitetura MVC para a Web 21 </web-app> 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 O servlet de uma aplicação web pode recuperar os parâmetros definidos acima, utilizando os métodos 4.1 Tomcate getInitParameterNames() da interface ServletContext. 23 getInitParameter() 4.1.1 Os parâmetros Instalar Java JSE SDK (JDK) do contexto são usados para especificar informações para toda a aplicação, 24 de inicialização 4.1.2 Qual versão de JDK utilizar 24 tais como: conecção com banco de dados, e-mail do desenvolvedor, etc. Claro, antes usar estes métodos você 4.1.2.1 deJAVA_HOME 24 precisará uma referência para um objeto ServletContext. O trecho de código demonstra como fazer isto dentro 4.2 Instalar 25 do método init() . Tomcat 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 public Iniciar e parar o Tomcat 25 void init() throws ServletException { 4.2.2.1 [Windows] Tomcat como serviço 25 //use SevletConfig para obter ServletContext 4.2.2.2 Tomcat como processo 26 ServletContext contexto= getServletConfig().getServletContext(); 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 //ou use 4.4.1 Estrutura de diretórios 26 //GenericServlet.getServletContext //ServletContext getServletContext(); 4.4.2 Criar contexto de aplicaçãocontexto= web 27 4.4.3 Configurar contexto: web.xml 27 String dburl = contexto.getInitParameter("dburl"); 4.4.4 Ativar contexto 29 //use dburl para criar conecçõs com banco de dados 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 } 4.6 Testar seus servlets 30 Listagem 9.1 – Exemplo de recuperação de parâmetros com ServletContext 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 67 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 75 www.3way.com.br 9.1 1 ServletContext JDBC Java WEB Java WEB 9.1.3 Utilizando atributos do ServletContext Sumário Você pode adicionar informações a objetos de contexto, objetos de sessão e objetos da requisição. Felizmente cada 1 JDBCuma dessas classes contém os mesmos quatro métodos para realizar esta operação de atribuição: 8 getAttribute(String), getAttibuteNames(String), setAttribute(String,Object), removeAttribute(String) . 1.1 Banco de Dados Relacional 8 Por JDBC fim, há um outro método da classe ServletContext que vale a pena conhecer: o método log() permite 1.2 – Java Database Connectivity 8 que você adicione mensagens em um arquivo de log do Servidor de Aplicações. Você poderá utilizar esse método 1.2.1 java.sql.DriverManager 8 para depurar seus Servlets, gerar alertas de problemas na sua execução etc. 1.3 Fábrica de Conexões 9 Em Criar alguns Servidores de Aplicação você pode também tentar usar as saídas-padrão (“System.out”, 1.4 Banco de Dados e Tabelas 10 “System.err”) para Javabeans gerar suas mensagens de log, porém, é muito mais interessante que você use o método 1.5 Classes – Entidades 10 anterior, de maneira que o ServletContainer possa separar as suas mensagens em um log diferenciado. 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 9.2 Filtros 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 9.2.1 1.9.2 Introdução Pesquisando 14 1.9.3 Filtros Recurso avaçando: O Cursor 15 são componentes que se interpõem entre uma requisição do cliente e um determinado recurso. 1.9.4 Alteração 16 Qualquer tentativa de recuperar o recurso deve passar pelo filtro. Um recurso pode ser qualquer conteúdo estático 1.9.5 16 ou dinâmicoExclusão (HTML, JSP, GIF, etc.). 2 Introdução a Java Enterprise Edition 17 Filtros interceptão as requisições do cliente ao servidor antes de chegar ao Servlet ou JSP de destino para 2.1 Porque Java EE tem sido tão utilizado? 17 processamento. Quando a requisição passa pelo filtro, esse filtro pode processar os dados contidos na requisição e 2.2 O que é Java Enterprise Edition? 18 também decidir sobre o próximo passo da requisição – que pode ser encaminhada para um outro filtro, acessar o 2.3 A plataforma Java Enterprise Edition 18 recurso diretamente ou impedir que o usuário acesse o recurso desejado. 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo Figura 9.1 - Ilustração de requisição de passagem por filtros 26 4.3 Testar Tomcat 26 A figura acima apresenta a maneira pela qual as requisições passam através de filtros, antes de acessar seu 4.4 final Criar contexto de recurso desenvolvimento 26 ponto (EndPoint) – um atravessa um encadeamento de filtros. Ou seja, existe uma série de filtros, 4.4.1 Estrutura de diretórios 26 através dos quais uma requisição passa, antes de, finalmente, acessar um determinado recurso. 4.4.2 EsseCriar de aplicação web é possível de ser implementado através do redirecionamento 27 tipocontexto de funcionalidade também de 4.4.3 Configurar contexto: web.xml 27 Servlets e requisições. Entretanto, o uso de redirecionamento é bem menos elegante, porque exige que o 4.4.4 Ativar contexto 29 encadeamento dos processos seja programado diretamente no código dos Servlets que compõem a aplicação – e 4.4.5 Testar contexto 29 cada vez que esse encadeamento mudar, serão necessárias modificações no código das Servlets para reconfigurar o 4.5 Bibliotecas Servlet o contêiner pode ser reconfigurado alterando-se a quantidade e a ordem dos 29 encadeamento. Eventualmente, 4.6 sem que Testar seus servlets de alterações no código-fonte da aplicação. 30 filtros, haja necessidade 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 68 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 77 www.3way.com.br Java WEB Java WEB Filtros podem realizar muitos tipos diferentes de funções, como exemplo: Sumário Autenticação – bloqueio de requisições baseados na identidade do usuário. Auditoria e registro – monitorando usuários de uma aplicação web. 1 JDBC de imagem – redimensionamento de mapas entre outros. 8 Conversão 1.1 Banco de Dados Relacional 8 Compressão de dados – empacotamento de downloads 1.2 JDBC – Java Database Connectivity 8 Localização – configurando as requisições e respostas para uma localização (uso de formatos específicos de 1.2.1 java.sql.DriverManager 8 uma determinada região como hora, moeda, idioma, etc) em particular. 1.3 Fábrica de Conexões 9 Transformações XSL/T para conteúdo XML – convertendo as repostas de um ou mais tipos de clientes. 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 9.2.2 Criando um filtro 1.7 Fechando a Conexão 12 Filtros, são gerenciados 1.8 PreparedStatement ou Statement 12 Uma classe Filtro deve implementar a interface javax.servlet.Filter que pelo contêiner. 1.9 os seguintes Design Patterns 13 define métodos: 1.9.1 void DAO – Data Access config) Object throws ServletException – esse método é 13 init(FilterConfig 1.9.2 Pesquisando 14 invocado pelo contêiner durante a primeira vez que o filtro é 1.9.3 Recurso avaçando: O Cursor 15 carregado na memória. Códigos de inicialização devem ser colocados 1.9.4 Alteração 16 aqui, incluindo o uso de parâmetros de inicialização contidos no 1.9.5 Exclusão 16 arquivo web.xml – recebidos no parâmetro FilterConfig. 2 Introdução Javamétodo Enterprise Edition pelo contêiner quando o filtro é 17 void destroy –aesse é invocado 2.1 Porque Java EE tem sido tão utilizado? 17 descarregado da memória. Isso ocorre normalmente quando a 2.2 Oaplicação que é Java Enterprise Edition? O código de liberação de recursos 18 WEB é encerrada. 2.3 A utilizados plataforma Java Enterprise Edition 18 pelo filtro deve ser inserido aqui – o encerramento de uma conexão ao banco de dados, por 2.3.1 APIs 19 exemplo. 2.3.2 void Contêiners 19 doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, 2.3.3 Deployment de aplicações 21 ServletException – esse método contém toda a funcionalidade do filtro, ou seja, as regras que devem 3 Análise de arquiteturas 21 ser verificadas, antes que uma requisição possa continuar seu caminho até um recurso. Esse método é 3.1 Arquitetura Física e Arquitetura Lógica 21 chamado pelo contêiner quando o servidor decide que o filtro deve interceptar uma determinada 3.2 Tipos de aplicações na WEB 21 requisição ou resposta ao usuário. Os parâmetros passados para esse método são instâncias das 3.3 Arquitetura MVC para a Web 21 classes ServletRequest e ServletResponse do pacote javax.servlet.http e da classe FilterChain do 3.4 Vantagens da arquitetura 22 pacote javax.servlet . Se MVC o filtro estiver sendo usado por uma aplicação web (o caso mais comum), o 4 Ambiente de desenvolvimento 23 desenvolvedor pode realizar o casting entre esses objetos para instâncias das classes 4.1 Tomcat 23 HttpServletRequest e HttpServletResponse do pacote javax.servlet.http, respectivamente. Isso 4.1.1 Instalar Java JSE SDK (JDK) 24 permite a recuperação de informações específicas do protocolo HTTP. 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 Assim JAVA_HOME 24 como um servlet, o contêiner irá criar uma única instância da classe Filter e criar threads, para lidar 4.2 Instalar Tomcat 25 com as requisições concorrentes de vários clientes. Isso significa que esse método deve ser programado no modo 4.2.1 Qual versão de Tomcat utilizar 25 thread-safe. Um exemplo de classe implementando um filtro é apresentado abaixo. Esse filtro usa o recurso de 4.2.2 disponível Iniciar e parar o Tomcat entrada na classe ServletContext, para registrar todas as requisições do usuário que passam pelo filtro.25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 import java.io.IOException; import java.util.logging.Filter; 4.3 Testar Tomcat 26 import java.util.logging.LogRecord; 4.4 Criar contexto de desenvolvimento 26 import 4.4.1 javax.servlet.FilterChain; Estrutura de diretórios 26 import javax.servlet.FilterConfig; 4.4.2 javax.servlet.ServletContext; Criar contexto de aplicação web 27 import 4.4.3 Configurar contexto: web.xml 27 import javax.servlet.ServletException; 4.4.4 javax.servlet.ServletRequest; Ativar contexto 29 import import 4.4.5 javax.servlet.ServletResponse; Testar contexto 29 4.5 Bibliotecas Servlet 29 public class RegistroFilter implements Filter { 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 private FilterConfig config; 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 69 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 78 www.3way.com.br Java WEB Java WEB public void init(FilterConfig config) { this.config = config; Sumário } 1 JDBC 8 public void doFilter(ServletRequest request, ServletResponse response, 1.1 Banco de Dados Relacional chain) throws ServletException, IOException { 8 FilterChain 1.2 JDBC – Java Database Connectivity 8 // recupera o objeto ServletContext que 1.2.1 java.sql.DriverManager 8 // será usado para realizar o logging ServletContext context = config.getServletContext(); 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 // cria um registro da URL acessada pelo usuário 1.5 Classes Javabeans – Entidades 10 StringBuffer log = new StringBuffer(); 1.6 Inserindo Dados 11 log.append(request.getServerName() + ":"); Filtros são aplicados 12 1.7 Fechando a Conexão log.append(request.getServerPort() + "/"); log.append(request.getLocalAddr() + "/" ); 1.8 PreparedStatement ou Statement apenas a requisições 12 log.append(request.getLocalName()); 1.9 Design Patterns feitas diretamente pelo 13 log.append("--> acessado pelo usuário em "); 1.9.1 DAO – Data Access Object 13 log.append( new java.util.Date()); cliente ao contêiner.. 14 1.9.2 Pesquisando 1.9.3 Recurso avaçando: O Cursor 15 // utilizando o recurso de logging disponível 1.9.4 Alteração 16 // na classe ServletContext context.log(log.toString()); 1.9.5 Exclusão 16 // chama o Enterprise próximo Edition filtro na cadeia de filtros 2 Introdução a Java 17 chain.doFilter(request, response); 2.1 Porque Java EE tem sido tão utilizado? 17 } 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise 18 public void destroy() { Edition 2.3.1 } APIs 19 2.3.2 Contêiners 19 public boolean isLoggable(LogRecord arg0) { 2.3.3 Deployment de aplicações 21 throw new UnsupportedOperationException("Não implementado!."); 3 Análise de arquiteturas 21 } 3.1 Arquitetura Física e Arquitetura Lógica 21 } 3.2 Tipos de aplicações na WEB 21 Listagem 9.2 – Exemplo de implementação de um filtro 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 9.2.3 Configuração Descriptor 4 Ambiente do de Deployment desenvolvimento 23 4.1 Tomcat 23 A configuração de filtros é muito parecida com a configuração de Servlets. Existe uma sessão necessária 4.1.1 Instalar Java JSE SDK (JDK) 24 para configurar cada filtro utilizado na aplicação bem como sessões para configurar o mapeamento entre os filtros 4.1.2 Qual versão de JDK utilizar e os padrões de URLs aos quais as cadeias de filtros serão aplicadas. Um exemplo de configuração de filtro24 é 4.1.2.1 JAVA_HOME 24 apresentado abaixo: 4.2 Instalar Tomcat 25 4.2.1 <filter> Qual versão de Tomcat utilizar 25 <filter-name>RegistroFilter</filter-name> 4.2.2 Iniciar e parar o Tomcat 25 <filter-class>cap8.RegistroFilter</filter-class> 4.2.2.1 [Windows] Tomcat como serviço 25 </filter> 4.2.2.2 <filter-mapping> Tomcat como processo 26 4.3 Testar Tomcat 26 <filter-name>RegistroFilter</filter-name> 4.4 Criar contexto de desenvolvimento 26 <url-pattern>/*</url-pattern> 4.4.1 </filter-mapping> Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 vez que a interpretação do arquivo web.xml sofre influência da ordem em que os elementos são 4.4.3 Uma Configurar contexto: web.xml 27 declarados, é recomendada a declaração dos filtros após os elementos <context-param> e antes de qualquer 4.4.4 Ativar contexto 29 definição deTestar servlets. Não se esqueça de colocar os elementos <filter-mapping> após a definição dos filtros. 4.4.5 contexto 29 Por Bibliotecas padrão, filtros não são aplicados a componentes web (outros servlets, JSP, etc.) acessados pela classe 4.5 Servlet 29 RequestDispatcher através de chamadas include ou forward. Esse comportamento, entretanto, pode ser 4.6 Testar seus servlets 30 modificado, incluindo-se um ou mais elementos <dispatch> ao mapeamento do filtro. 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 70 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 79 www.3way.com.br Java WEB Java WEB ... Sumário </context-param> <filter> <filter-name>RegistroFilter</filter-name> 1 JDBC 8 <filter-class>cap8.RegistroFilter</filter-class> 1.1 Banco de Dados Relacional 8 </filter> 1.2 JDBC – Java Database Connectivity 8 <filter-mapping> 1.2.1 java.sql.DriverManager 8 <filter-name>RegistroFilter</filter-name> 1.3 Fábrica de Conexões 9 <url-pattern>/*</url-pattern> <dispatch>REQUEST</dispatch> 1.4 Criar Banco de Dados e Tabelas 10 <dispatch>INCLUDE</dispatch> 1.5 Classes Javabeans – Entidades 10 </filter-mapping> 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 Elementos <dispatch> possue um dos seguintes valores: REQUEST, INCLUDE, FORWARD e ERROR. Isso 1.8 PreparedStatement ou Statement 12 indica quando um filtro deve ser aplicado apenas a requisições do cliente, apenas em includes, apenas em 1.9 Design Patterns 13 requisições, apenas em Access caso deObject erro ou na combinação desses quatro valores. 1.9.1 DAO – Data 13 1.9.2 Pesquisando 14 Listener é utilizado para 1.9.3 Recurso avaçando: O Cursor 15 9.3 Listeners capturar eventos que 16 1.9.4 Alteração ocorrem em uma 1.9.5 A partir Exclusão 16 da especificação Servlet 2.3 define eventos que ocorrem 2 Introdução a Java Enterprise Edition 17 durante a vida de uma aplicação, fornecendo aos desenvolvedores de aplicação Web. 2.1 Porque Java EE tem sido tão utilizado? 17 aplicativos Web mais interação com o objeto ServletContext e HttpSession. Os 2.2 O quede é Java Enterprise Edition? 18 desenvolvedores WebApplication pode escrever ouvintes de evento, ou seja, 2.3 A plataforma Java Enterprise Edition 18 Listeners, para que eles possam agora ser notificado quando ocorrer algum 2.3.1 APIs 19 evento, como a criação ou destruição, ou quando os atributos são modificados 2.3.2 Contêiners 19 no ServletContext ou HttpSession. 2.3.3 Existem Deployment de aplicações 21 dois tipos de ouvintes de evento, e ambos os tipos se aplicam 3 Análise de arquiteturas 21 aos objetos ServletContext e HttpSession. Os dois tipos são eventos de ciclo de 3.1 e mudanças Arquitetura Física e Arquitetura 21 vida de atributos de eventos: Lógica 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 Ciclo de Vida 3.4 Vantagens da arquitetura MVC 22 ServletContext – acabou de ser criado e está disponível para atender seu pedido, ou está prestes a ser 4 Ambiente de desenvolvimento 23 encerrado. 4.1 Tomcat – acabou de ser criado, ou foi encerrado/expirou. 23 HttpSession 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Alteração de Atributos 4.1.2.1 JAVA_HOME 24 ServletContext – foi adicionado, removido ou substituído. 4.2 Instalar Tomcat 25 HttpSession – foi adicionado, removido ou substituído. 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 ponto interessante é queserviço pode haver múltiplos Listeners para cada tipo de evento e o desenvolvedor 4.2.2.1 Um [Windows] Tomcat como 25 tem a flexibilidade para definir a ordem de eventos serão chamados. O container gerencia o ciclo de vida dos 4.2.2.2 Tomcat como processo 26 Listeners. É de responsabilidade do servidor instanciar cada uma das classes registradas como Listener antes da 4.3 Testar Tomcat 26 execução do primeiro pedido para a aplicação. Além disso, cada uma das classes deve ser referenciado até a última 4.4 Criar contexto de desenvolvimento 26 solicitação. 4.4.1 Estrutura de diretórios 26 Quando uma aplicação web é iniciada, um objeto de contexto do servlet, ServletContext , é criado e 4.4.2 Criar contexto de aplicação web 27 associado com a aplicação web. Existe um relacionamento um-para-um entre um objeto de contexto do servlet e 4.4.3 Configurar contexto: web.xml 27 da aplicação web. Todos os recursos dentro da aplicação web, como Servlets e JSPs , pode recuperar todas as 4.4.4 Ativar contexto 29 informações armazenadas no contexto do servlet. 4.4.5 Testar contexto 29 Pode ser inicializado objetos e colocá-los no contexto do servlet quando ele é criado e destruir os objetos 4.5 Bibliotecas Servlet 29 quando o contexto do servlet é destruído. Por exemplo, você pode decidir criar uma conexão com um banco de 4.6 Testar seus servlets 30 dados o contexto do servlet é criado e fechar a conexão quando o contexto do servlet for destruído. 4.7 quando Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 71 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 80 www.3way.com.br Java WEB Java WEB Para escrever um Listener que será executado quando o contexto do servlet for criado e destruído, escreva Sumário uma classe Java que implementa a interface javax.Servlet.ServletContextListener. Esta classe tem dois métodos que precisam ser implementados: 1 JDBC 8 1.1 Banco de Dados Relacional 8 void contextDestroyed (SCE ServletContextEvent) 1.2 JDBC – Java Database Connectivity 8 Notificação que o contexto está prestes a ser destruído. 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 void contextInitialized (SCE ServletContextEvent) 1.4 Criar Banco de Dados e Tabelas 10 Notificação de que a aplicação está pronta para processar solicitações. 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 Veja o código abaixo, de uma implementação simples, que imprime no log do servidor mensagens quando 1.7 Fechando a Conexão 12 o evento ocorre: 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 public final class MyContextListener implements ServletContextListener { 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 public void contextDestroyed(ServletContextEvent event) { System. .println("A aplicação parou!"); 1.9.3 Recurso avaçando: O out Cursor 15 } 1.9.4 Alteração 16 1.9.5 Exclusão 16 public void contextInitialized(ServletContextEvent event) { 2 Introdução a Java Enterprise Edition 17 System.out.println("A aplicação iniciou!"); 2.1 Porque Java EE tem sido tão utilizado? 17 } 2.2 18 } O que é Java Enterprise Edition? 2.3 A plataforma Java Enterprise Edition 18 2.3.1 Listeners APIs precisão ser registrados no deployment descriptor, web.xml, da aplicação. São definidos usando 19 2.3.2<listener> Contêiners 19 tags e serão executados na ordem que você especificar. A tag <listener> tem um elemento filho, 2.3.3 Deployment de aplicações 21 <listener-class>, que define a classe que implementa a interface. 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 <listener> <listener-class> 3.2 Tipos de aplicações na WEB 21 As tags Listener tem que 3.3 Arquitetura com.listeners.MyContextListener MVC para a Web 21 </listener-class> 3.4 Vantagens da arquitetura MVC 22 ser adicionadas antes das </listener> 4 Ambiente de desenvolvimento 23 definições de servlets, ou 4.1 Tomcat 23 A especificação Servlet 2.3 permite uma maior interação entre o seja, antes das tags de24 4.1.1 Instalar Java JSE SDK (JDK) programador, a aplicação e o ServletContext. O programador pode agora escrever servlet. 4.1.2 Qual versão de JDK utilizar 24 uma classe que é executado quando os atributos do objeto ServletContext foram 4.1.2.1 JAVA_HOME 24 modificados. Se você quiser executar algum código quando os atributos do objeto 4.2 Instalar Tomcat 25 ServletContext for modificado, escreva uma classe Java que implementa a 4.2.1 Qual versão de Tomcat utilizar 25 interface javax.Servlet.ServletContextAttributesListener. Esta interface define 4.2.2 Iniciar e parar o Tomcat 25 três métodos que precisam ser implementados: 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 void attributeAdded (sarna ServletContextAttributeEvent) 4.3 Testar Tomcat 26 Notificação de que um novo atributo foi adicionado. 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 void attributeRemoved (sarna ServletContextAttributeEvent) 4.4.2 Criar contexto de aplicação web 27 Notificação de que um atributo existente foi removido. 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 attributeReplaced (sarna ServletContextAttributeEvent) 4.4.5 void Testar contexto 29 Notificação de que um atributo foi substituído ou alterado. 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 VejaTestar um exemplo de uma classe que implementa de forma simples, imprimindo mensagens no log 31 do 4.7 seus JSPs servidor, e precisa 4.8 Logs ser registrada no DD da aplicação da mesma forma mostrada anteriormente. 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 72 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 81 www.3way.com.br Java WEB Java WEB public class ServletContextAttribListener implements Sumário ServletContextAttributesListener { 1 JDBC 8 public void attributeAdded(ServletContextAttributeEvent scab) { 1.1 Banco de Dados Relacional 8 System.out.println("Um atributo foi adicionado."); 1.2 JDBC – Java Database Connectivity 8 } 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 public void attributeRemoved(ServletContextAttributeEvent scab) { System. .println("Um atributo foi removido."); 1.4 Criar Banco de Dados out e Tabelas 10 } Javabeans – Entidades 1.5 Classes 10 1.6 Inserindo Dados 11 public void attributeReplaced(ServletContextAttributeEvent scab) { 1.7 Fechando a Conexão 12 System.out.println("Um atributo foi alterado."); 1.8 PreparedStatement ou Statement 12 } } Design Patterns 1.9 13 1.9.1 DAO – Data Access Object 13 1.9.2 Os Listeners Pesquisando também podem fazer as notificações quando um objeto HttpSession é criado, destruído, 14 ou 1.9.3 Recursomodificados. avaçando: OÉ Cursor tem seus atributos possível escrever um listener que controla todas as notificações de mudanças 15 do 1.9.4 HttpSession Alteração 16 objeto . Isso poderia ser feito com as notificações ServletContext, mas os exemplos anteriores 1.9.5 Exclusãopara mostrar cada método. 16 mantinha separado 2 Introdução a Java Enterprise Edition é necessário escrever uma classe Java que implementa a interface 17 Para receber notificações do HttpSession 2.1 Porque Java EE tem sido tão utilizado? javax.Servlet.http.HttpSessionListener . Essa interface define dois métodos que precisam ser implementados: 17 2.2 O que é Java Enterprise Edition? 18 2.3 AsessionCreated plataforma Java Enterprise EditionSE) 18 void (HttpSessionEvent 2.3.1 APIsNotificação de que uma sessão foi criada. 19 2.3.2 Contêiners 19 2.3.3 void Deployment de aplicações 21 sessionDestroyed (HttpSessionEvent SE) 3 Análise de arquiteturas 21 Notificação de que uma sessão foi invalidada. 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 Para receber as notificações que os atributos de HttpSession foram modificados deve implementar a 3.3 Arquitetura MVC para a Web 21 interface javax.servlet.http.HttpSessionAttributesListener. Esta interface define três métodos que devem ser 3.4 Vantagens da arquitetura MVC 22 implementados: 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 void attributeAdded (HttpSessionBindingEvent SE) 4.1.1 Instalar Java JSE SDK (JDK) 24 Notificação de que um atributo foi adicionado. 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 void attributeRemoved (HttpSessionBindingEvent SE) 4.2 Instalar Tomcat 25 Notificação de que um atributo foi removido. 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 attributeReplaced (HttpSessionBindingEvent SE) 4.2.2.1 void [Windows] Tomcat como serviço 25 Notificação de que um atributo foi substituído. 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 VejaCriar um exemplo que recebe todas as notificações de HttpSession, se foi criada ou destruída e 26 se 4.4 contexto abaixo de desenvolvimento um atributoEstrutura foi adicionado, removido ou alterado. 4.4.1 de diretórios 26 4.4.2 Criar contexto de aplicação web 27 final class web.xml MySessionListener implements HttpSessionAttributesListener,27 4.4.3 public Configurar contexto: HttpSessionListener { 4.4.4 Ativar contexto 29 public void sessionCreated(HttpSessionEvent event) { 4.4.5 Testar contexto 29 System.out.println("HttpSession criada."); 4.5 Bibliotecas Servlet 29 } 4.6 Testar seus servlets 30 public void sessionDestroyed(HttpSessionEvent event) { 4.7 Testar seus JSPs 31 System.out.println("HttpSession destruida."); 4.8 Logs 31 } 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 73 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 82 www.3way.com.br Java WEB Java WEB Sumário 1 8 1.1 Banco de Dados Relacional 8 public void attributeRemoved(HttpSessionBindingEvent event) { 1.2 JDBC – Java Database Connectivity 8 System.out.println("Atributo removido."); 1.2.1 java.sql.DriverManager 8 } 1.3 Fábrica de Conexões 9 public void attributeReplaced(HttpSessionBindingEvent event) { 1.4 Criar Banco de Dados e Tabelas 10 System.out.println("Atributo alterado"); 1.5 Classes Javabeans – Entidades 10 } 1.6 11 } Inserindo Dados 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 Listeners deve ser utilizados para lidar com notificações sobre alterações 1.9 objetos Design Patterns e HttpSession, permite mais controle embora os 13 nos ServletContext 1.9.1 DAO – Data Access Object 13 exemplos tenha sido simples. JSP é um Servlet. 14 1.9.2 Pesquisando 1.9.3 Recurso avaçando: O Cursor 15 Ele é criado e compilado 1.9.4 Alteração 16 na sua primeira chamada 10 JavaServer Pages 1.9.5 Exclusão 16 no servidor. 2 Introdução a Java Enterprise Edition 17 10.1 2.1 Introdução Porque Java EE tem sido tão utilizado? 17 2.2 O que Java Enterprise 18 Servlets éé uma boa idéia,Edition? mas dá para imaginar montar uma página 2.3 A plataforma Java Enterprise Edition 18 complexa usando println()? Muitas vezes o desenvolvimento de um site é uma 2.3.1 APIs 19 tarefa complexa que envolve vários profissionais. A tarefa de projeto do layout da 2.3.2 fica Contêiners 19 página a cargo do Web Designer, incluindo a diagramação dos textos e 2.3.3 Deployment de aplicações 21 imagens, aplicação de cores, tratamento das imagens, definição da estrutura da 3 Análise de arquiteturas 21 informação apresentada no site e dos links para navegação pela mesma. Já o 3.1 Arquitetura Física e Arquitetura Lógica 21 Desenvolvedor Web é responsável pela criação das aplicações que vão executar 3.2 Tipos de aplicações na WEB 21 em um site. 3.3 Arquitetura MVC para a Web O trabalho destes dois profissionais é somado na criação de um único produto, mas durante21 o 3.4 Vantagens da arquitetura MVC 22 desenvolvimento a interferência mútua deve ser a mínima possível. Ou seja, um profissional não deve precisar 4 Ambiente de desenvolvimento 23 alterar o que é foi feito pelo outro profissional para cumprir sua tarefa. A tecnologia Servlet não nos permite atingir 4.1 ideal. Por Tomcat 23 esse exemplo, suponha que um Web Designer terminou o desenvolvimento de uma página e a entregou 4.1.1 Instalar Java JSE SDK (JDK) 24 para o Desenvolvedor Web codificar em um Servlet. Se após a codificação o Web Designer desejar realizar uma 4.1.2 Qual versão de JDK utilizar 24 alteração na página será necessário que ele altere o código do Servlet (do qual ele nada entende) ou entregar uma 4.1.2.1 JAVA_HOME 24 nova página para o Desenvolvedor Web para que ele a codifique totalmente mais uma vez. Quaisquer umas dessas 4.2 Instalar Tomcat 25 alternativas são indesejáveis e foi devido a esse problema a Sun desenvolveu uma tecnologia baseada em Servlets 4.2.1 Qual versão de Tomcat utilizar 25 chamada de JSP. 4.2.2 A id Iniciar parar Tomcat 25 éia deese usaroscripts de linguagens de programação em páginas HTML que são processados no lado 4.2.2.1 [Windows] Tomcat como serviço 25 servidor para gerar conteúdo dinâmico não é restrita à linguagem Java. Existem várias soluções desse tipo fornecida 4.2.2.2 Tomcat como processo 26 por outros fabricantes, tais como: PHP, ASP, ColdFusion. 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 10.1.1 de vida do JSP 4.4.1 Ciclo Estrutura de diretórios 26 Java Server Pages são páginas HTML que incluem código Java e outras tags especiais. Desta forma as partes 4.4.2 Criar contexto de aplicação web 27 estáticas daConfigurar página não precisam ser geradas por println(). Elas são fixadas na própria página. A parte dinâmica é 4.4.3 contexto: web.xml 27 4.4.4 peloAtivar contexto 29 gerada código JSP. Assim a parte estática da página pode ser projetada por um Web Designer que nada sabe 4.4.5 Testar contexto 29 de Java. 4.5 Bibliotecas Servlet 29 A primeira vez que uma página JSP é carregada pelo container JSP o código Java é compilado gerando um 4.6 seus servlets 30 Servlet que Testar é executado, gerando uma página HTML que é enviada para o navegador. As chamadas subseqüentes 4.7 Testar seus JSPs 31 são enviadas diretamente ao Servlet gerado na primeira requisição, não ocorrendo mais às etapas de geração e 4.8 Logs 31 compilação do Servlet. 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 74 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 83 www.3way.com.br public void attributeAdded(HttpSessionBindingEvent event) { System.out.println("Atributo adiciado."); } JDBC Java WEB Java WEB A Figura 10.1 mostra um esquema das etapas de execução de uma página JSP na primeira vez que é Sumário requisitada. 1 JDBC 8 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 Figura 10.1Etapas da primeira execução de uma página JSP. 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 Na etapa APIs (1) a requisição é enviada para um container Servlet/JSP. Na etapa (2) o container verifica que não 19 2.3.2 nenhuma Contêiners 19 existe instância de Servlet correspondente à página JSP. Neste caso, a página JSP é traduzida para código 2.3.3 Deployment de aplicações 21 fonte de uma classe Servlet que será usada na resposta à requisição. Na etapa (3) o código fonte do Servlet é 3 Análise de arquiteturas 21 compilado, e na etapa (4) é criada uma instância da classe. Finalmente, na etapa (5) é invocado o método service() 3.1 Física Lógica 21 da instânciaArquitetura Servlet para gerareaArquitetura resposta à requisição. 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 10.2 Estrutura de diretórios 3.4 Vantagens da arquitetura MVC 22 Aplicações emde JSP são escritas com uma linguagem de script a ser traduzida para um arquivo de código 4 Ambiente desenvolvimento 23 fonte java. O arquivo de código fonte contém a implementação de um Servlet que é compilado e registrado 4.1 Tomcat 23 automaticamente pelo web 4.1.1 Instalar Java JSE contêiner. SDK (JDK) 24 forma você não 4.1.2 Desta Qual versão de JDKprecisa utilizarconfigurar o CLASSPATH, não precisa compilar seu código JSP, utilizar pacotes 24 para resolver conflito de nomes, não precisa colocar sua página JSP em um diretório especial, não precisa usar URL 4.1.2.1 JAVA_HOME 24 especiais para invocar sua página JSP, use as mesmas URLs usadas para páginas HTML (exceto pela extensão 25 do 4.2 Instalar Tomcat arquivo). 4.2.1 Qual versão de Tomcat utilizar 25 Do ponto de vista da publicação de um aplicativo em JSP, você pode colocar todos as suas páginas na 4.2.2 Iniciar e parar o Tomcat 25 document da aplicação. Por exemplo (para o servidor Tomcat): 4.2.2.1 root [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 diretório_instalação/webapps/contexto 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Nem Estrutura de diretórios 26 tudo é perfeito, você ainda precisará das regras anteriores sobre CLASSPATH, diretórios de instalação, 4.4.2 Criar contexto de aplicação web Java utilizadas por uma página JSP. 27 etc.; estas regras são necessárias para classes 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Elementos Testar contexto 29 10.3 utilizados em JSPs 4.5 Bibliotecas Servlet 29 Como qualquer outra linguagem a linguagem de scripting, JSP tem uma gramática bem definida e inclui 4.6 Testar seus servlets 30 elementos sintáticos para realizar várias tarefas, tais como: declaração de variáveis e métodos, expressões de 4.7 Testar seus JSPs 31 impressão e invocação de outra página JSP. Os elementos sintáticos, também chamados de tags JSP, estão 4.8 Logs 31 agrupados em seis categorias, veja Tabela 10.1 para uma rápida visão deste elementos. 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 75 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 84 www.3way.com.br Java WEB Java WEB Sumário Tag JSP Descrição Sintaxe da tag 1 JDBC 8 Diretiva Especifica instruções de tradução para o motor JSP <%@ Diretivas%> 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity Declaração Declara e define métodos e variáveis <%! Declarações Java%> 8 1.2.1 java.sql.DriverManager 8 1.3 de Conexões 9 Scriptlet Fábrica Permite ao desenvolvedor escrever código Java de forma livre na <% Código Java %> 1.4 Criarpágina Banco JSP de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 1.6 Dados ExpressãoInserindo Usado para imprimir conteúdo de variáveis na saída HTML gerada <%= uma expressão%> 11 1.7 Fechando a Conexão 12 por uma página JSP 1.8 PreparedStatement ou Statement 12 Ação Fornece instruções em tempo de requisição para o motor JSP <jsp:nome_da_ação /> 13 1.9 Design Patterns 1.9.1 DAO – Data Access Object 13 Comentário Usado para comentar partes do código JSP e para documentação <%-- qualquer texto --%> 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 Tabela 10.1 – Tipos de elementos JSP 1.9.4 Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 10.3.1 Diretivas JSP 2.1 Porque Java EE tem sido tão utilizado? 17 Existem dois tipos principais de diretivas. Diretiva page que permite situações como importação de classes, 2.2 O que é Java Enterprise Edition? 18 customização de super classes servlet entre outras. Diretiva include que permite que seja inserido o conteúdo 18 de 2.3 A plataforma Java Enterprise Edition um arquivoAPIs no servlet no momento em que o arquivo JSP é traduzido para servlet. 2.3.1 19 2.3.2 Contêiners 19 2.3.3 Deployment 21 10.3.1.1 Diretiva Page de aplicações 3 Análise de arquiteturas 21 <%@page atributo1=valor1 atributo2=valor2 atributo3=valor3 ... %> 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 Abaixo relacionamos os atributos mais utilizados nas diretivas page: 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 contentType 4 Ambiente de desenvolvimento 23 <%@page contentType="text/html" %> 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 Este atributo indicará qual o tipo de conteúdo que a página JSP estará gerando e enviando para o browser. 4.1.2 Qual versão de JDK utilizar 24 O valor deste atributo pode variar, text/html indica que o conteúdo a ser enviado para o browser será HTML. Se 4.1.2.1 JAVA_HOME 24 trocarmos por text/plain indicará que o conteúdo é texto puro e o browser não deverá interpretar o mesmo. 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 import 4.2.2 Iniciar e parar o Tomcat 25 <%@page import="java.util.*" %> 4.2.2.1 [Windows] Tomcat como serviço 25 SingleThreadModel foi 4.2.2.2 Permite Tomcat como processo 26 que seja especificado qual o pacote a ser importado. O atributo depreciado na API Servlet 4.3 Testarque Tomcat 26 import é o único pode aparecer várias vezes. 4.4 Criar contexto de desenvolvimento 26 2.4, deve-se evitar utilizar 4.4.1 Estrutura de diretórios 26 esse atributo como false. isThreadSafe 4.4.2 isThreadSafe Criar contexto= de aplicação web 27 "true|false" 4.4.3 Configurar contexto: web.xml 27 4.4.4 O valor Ativarde contexto 29 true (default) indica o processamento normal do servlet 4.4.5 Testar contexto 29 quando múltiplas requisições podem ser acessadas simultaneamente na mesma 4.5 Bibliotecas Servlet 29 instância de servlet. O valor false indica que o servlet deve implementar 4.6 Testar seus servlets 30 SingleThreadModel , como requisição para cada requisição sinalizada ou com 4.7 Testar seus JSPs 31 requisições simultâneas sendo uma em cada instância. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 76 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 85 www.3way.com.br Java WEB Java WEB session Sumário session = "true|false" 1 JDBC O valor de true (default) indica que a variável predefinida session (do tipo HttpSession) deve estar ligada 8 a 1.1 existente, Bancocaso de Dados Relacional 8 sessão não exista uma sessão, uma nova sessão deve ser criada para ligá-la. O valor false indica que 1.2 – Java Database Connectivity 8 sessões nãoJDBC devem ser usadas. 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 buffer 1.4 Criar Banco de Dados e Tabelas 10 buffer = "sizekb|none" 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados do buffer para o JspWriter out. O buffer padrão é definido pelo servidor. 11 Especifica o tamanho 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 autoFlush 1.9 Design Patterns 13 autoFlush = "true|false" 1.9.1 DAO – Data Access Object 13 1.9.2 O valor Pesquisando 14 de true (default) indica se o buffer deve ser esvaziado quando estive cheio. O valor false, indica que 1.9.3exceção Recurso avaçando: Oquando Cursor ocorrer overflows. 15 uma deve ser mostrada 1.9.4 Alteração 16 1.9.5 Exclusão 16 errorPage 2 Introdução a Java Enterprise Edition 17 errorPage = "url" 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? Especifica que a página JSP deve processar algum Throwables, mas não carregá-lo na página corrente. 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 isErrorPage 2.3.2 isErrorPage Contêiners = "true|false" 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas Define se uma página pode atuar como uma página de erro para uma outra página JSP. O default é false. 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 10.3.2 Diretiva include 3.3 Arquitetura MVC para a Web A diretiva include permite a inclusão estática de arquivos na hora em que a página JSP é traduzida 21 no 3.4 Vantagens da arquitetura 22 servlet. A inclusão é estática porque MVC não há processamento do arquivo incluído, somente ocorre a cópia do texto 4 arquivo referenciado Ambiente deno desenvolvimento 23 do local onde se encontra umas das definições: 4.1 Tomcat 23 4.1.1 <%@include Instalar Java JSE SDK (JDK) 24 file="relativeURL" %> ou <jsp:directive.include "relativeURL" %> 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 A Figura JAVA_HOME 24 10.1 demonstra o ciclo de processamento da diretiva include: 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 Figura 10.2 – Processamento da diretiva include – inclusão estática 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 77 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 87 www.3way.com.br Java WEB Java WEB O atributo file é mandatório e deve conter uma URL relativa, não contém informação de protocolo, Sumário hostname ou porta. A URL deve ser relativa o documento JSP corrente (não usa a / no início do caminho), ou relativa ao document root (começa com a / no caminho). Veja exemplo de uso na Listagem 10.1, a página a.jsp 1 JDBC 8 inclui a página b.jsp da Listagem 10.2. 1.1 Banco de Dados Relacional 8 <%@ page language= "java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 1.2.1 java.sql.DriverManager <html> 1.3 Fábrica de Conexões <body> 1.4 Criar Banco de Dados e Tabelas <%@include file="b.jsp" %> 1.5 Classes – Entidades <b>Javabeans Até mais</b> 1.6 Inserindo Dados </body> </html> 1.7 Fechando a Conexão 8 8 9 10 10 11 12 Listagem 10.1 – a.jsp 1.8 PreparedStatement ou Statement 12 Você deve declarar uma 1.9 Design Patterns 13 <pre> 1.9.1 DAO<%= – Data Access Object 13 variável ou um método System.currentTimeMillis() %> 1.9.2 </pre> Pesquisando 14 antes de usá-la. 1.9.3 Recurso avaçando: O Listagem Cursor10.2 – b.jsp 15 Toda declaração deve ser 1.9.4 Alteração 16 finalizada ou separada 1.9.5 Exclusão 16 10.3.3 Declarações 2 Introdução a Java Enterprise Edition por ponto-e-vírgula. 17 As declarações usadas definir variáveis e métodos específicos 2.1 Porque Javasão EE tem sidopara tão utilizado? 17 para uma página JSP. Os métodos e variáveis declaradas podem então ser 2.2 O que é Java Enterprise Edition? 18 referenciados por outrosJava elementos de criação 2.3 A plataforma Enterprise Edition de scriptlets na mesma página. 18 Pode a seguinte sintaxe - <%! Declaração %>, veja Listagem 10.3: 2.3.1assumir APIs 19 2.3.2 Contêiners 19 <%! 2.3.3 Deployment de aplicações 21 Circle {arquiteturas 3 class Análise de 21 public Circle(double r){}; 3.1 }; Arquitetura Física e Arquitetura Lógica 21 3.2 Circle Tipos de aplicações na WEB 21 ca = new Circle(2.0); 3.3 Arquitetura MVC para a Web 21 %> <%! = 0; %>da arquitetura MVC 3.4 int iVantagens 22 <%! b; double c; %> 4 int a, Ambiente de desenvolvimento 23 Listagem 10.3 – Declaração em JSP, declarado.jsp 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 O escopo de uma declaração é geralmente o arquivo JSP, mas se for 4.1.2.1 JAVA_HOME 24 incluído outros arquivos com a diretiva include, o escopo se expande para o 4.2 Instalar Tomcat 25 escopo do arquivo incluído, isto é, passa a fazer parte de uma única página JSP. Javade é Tomcat utilizar 4.2.1 A expressão Qual versão 25 4.2.2 Iniciar e parar o Tomcat 25 avaliada da esquerda 10.3.4 Expressões 4.2.2.1 [Windows] Tomcat como serviço 25 para a direita, convertida Pode conter alguma expressão válida da linguagem de script usada nessa 4.2.2.2 Tomcat como processo 26 em String e depois página, no caso a linguagem é Java, mas sem ponto-e-vírgula. 4.3 Testar Tomcat 26 na página. de desenvolvimento 4.4 inserida Criar contexto 26 <%= Expressão %> 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml Veja exemplos de uso na listagem 10.4, 27 <%= new String() %> 4.4.4 Ativar contexto 29 <%= aux1 + aux2 + aux3 %> 4.4.5 Testar contexto 29 <%= array[i] %> 4.5 Bibliotecas Servlet 29 <%= Math.sqrt(2) %> 4.6 Testar seus servlets 30 Listagem 10.4 – expressao.jsp 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 78 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 88 www.3way.com.br 1.2 JDBC – Java Database Connectivity Java WEB Java WEB Essa avaliação é feita em tempo de execução, quando a página é solicitada, permitindo fácil e rápido acesso Sumário a 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 na 1 JDBC 8 Especificação da Linguagem Java. Ao contrário dos scriptlets (que veremos a seguir), uma expressão não aceita 1.1 e vírgula Banco de Dados Relacional 8 ponto e define somente uma expressão da Linguagem. 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 10.3.5 Scriptlets 1.3 Fábrica de Conexões 9 Scriptlets permite inserir trechos de código em Java na página JSP. Uma vez que scriptlets podem conter 1.4 Criar Banco de Dados e Tabelas 10 qualquer código Java, eles são comumente usados para agregar lógica computacional dentro da página JSP. A 1.5 Classes Javabeans – Entidades 10 Listagem 10.5 demonstra o uso. 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 12 1.9 Design Patterns 13 <html> 1.9.1 <body> DAO – Data Access Object 13 <% 1.9.2 Pesquisando 14 String option; 1.9.3 Recurso avaçando: O Cursor 15 int numberOption = Integer.parseInt(request.getParameter("option")); 1.9.4 Alteração if (numberOption == 1) { 16 1.9.5 Exclusão 16 option = "Compra"; }Java else if (numberOption == 2) { 2 Introdução a Enterprise Edition 17 = "Venda"; 2.1 Porque Java EE tem option sido tão utilizado? 17 } else { 2.2 O que é Java Enterprise Edition? 18 option = "Aluguel"; 2.3 A plataforma Java Enterprise Edition 18 } Lembre-se que em um 2.3.1 APIs%> 19 2.3.2 Contêiners script você deve finalizar 19 <font face= "verdana, arial" size=5> 2.3.3 Deployment de aplicações as expressões através do 21 Opção Escolhida: <%=option%> 3 Análise de arquiteturas 21 </font> uso de ponto-e-vírgula . 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 </body> 3.3 Arquitetura MVC para a Web 21 </html> Listagem 10.5 – scriptlets.jsp 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 Quando você escreve um script, você pode usar os objetos implícitos 4.1.1 Instalar Java JSE SDK (JDK) 24 do JSP ou das classes importadas através da diretiva page, variáveis ou 4.1.2 Qual versão de JDK utilizar 24 métodos (declarados entre as tags <%! e %>) ou objetos nomeados através 4.1.2.1 JAVA_HOME 24 da tag <jsp:useBean>. 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 10.3.6 Ações 4.2.2 Iniciar e parar o Tomcat 25 permitem que você execute 4.2.2.1 Ações [Windows] Tomcat como serviçotarefas sofisticadas como instanciação de objetos, comunicação com 25 recursos lado docomo servidor como Servlets e JSP, sem que para isto seja necessária codificação Java. Entretanto o 4.2.2.2 doTomcat processo 26 mesmo pode ser obtido usando código Java dentro dos scriptlets como visto anteriormente. Todas as tags de ação 4.3 Testar Tomcat 26 são a sintaxe XML. 4.4 construídas Criarcom contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 10.3.6.1 <jsp:include> 4.4.2 Criar contexto de aplicação web 27 <jsp:include> pode ser utilizada para redirecionar o pedido para qualquer recurso estático 27 ou 4.4.3 A tag Configurar contexto: web.xml dinâmico a partir de uma página JSP principal. Os recursos podem ser desde um servlet, um arquivo HTML e 4.4.4 Ativar contexto 29 também outra JSP. 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 <jsp:include page = ”url” flush= ”true” /> 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 79 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 89 www.3way.com.br Java WEB Java WEB Veja exemplo da Listagem 10.6: Sumário <html> 1 JDBC <body bgcolor="white"> <font color= "red"> 1.1 Banco de Dados Relacional <%@ page buffer= "5kb" autoFlush="false"%> 1.2 JDBC – Java Database Connectivity 1.2.1 java.sql.DriverManager <p>A hora corrente retornada por outro JSP: 1.3 Fábrica Conexõesfile="b.jsp"%> <%@de include 1.4 Criar Banco de Dados e Tabelas 1.5 Classes Javabeans – Entidades <p> <jsp:include page="/mensagem.html" flush="true"/> 1.6 Inserindo Dados pela inclusão 1.7 Fechando a Conexão da saída do outro JSP: <jsp:include page="b.jsp" flush="true" /> 1.8 PreparedStatement ou Statement 12 </body> 1.9 Design Patterns 13 </html> 1.9.1 DAO – Data Access Object 13 Listagem 10.6 – acaoInclude.jsp 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 <p>Hora em milesegundos</p> 1.9.4 Alteração 16 1.9.5 Exclusão 16 Listagem 10.7 – mensagem.html 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 A tag possui dois atributos page e flush. O atributo page informa a URL para onde irá ocorrer a chamada. O 2.2 O que é Java Enterprise Edition? 18 atributo flush serve para informar a página JSP principal que o seu buffer de conteúdo de saída será descarregado 2.3 A plataforma Java Enterprise Edition 18 antes de se passar o controle para a página referenciada na tag, permitindo que a página incluída possa adicionar 2.3.1 APIs 19 seu conteúdo de saída corretamente. Por esse motivo ele deve sempre ser utilizado com o valor true. 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 10.3.6.2 <jsp:forward> 3 Análise de arquiteturas 21 A tag <jsp:forward> serve para redirecionar pedidos para qualquer JSP, Servlet ou página HTML , dentro do 3.1 Arquitetura Física e Arquitetura Lógica 21 mesmo contexto o qual a página que disparou a ação se encontra. A página que realiza o desvio tem seu 3.2 Tipos de aplicações na WEB 21 processamento finalizado exatamente no ponto onde o redirecionamento acontece embora todo o processamento 3.3 Arquitetura MVC para a Web 21 até este ponto ainda aconteça. Se houver dados no buffer de saída colocados por esta página, estes serão apagados 3.4 Vantagens da arquitetura MVC 22 antes do desvio de controle. 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 <html> Instalar Java JSE SDK (JDK) 24 <% 4.1.2 Qual versão de JDK utilizar 24 double freeMem = Runtime.getRuntime().freeMemory(); 4.1.2.1 JAVA_HOME 24 double totlMem = Runtime.getRuntime().totalMemory(); 4.2 Instalar Tomcat 25 double percent = freeMem/totlMem; if (percent < 0.5) { 4.2.1 Qual versão de Tomcat utilizar 25 %> 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 <jsp:forward page="/a.jsp"/> 4.2.2.2 Tomcat como processo 26 <% } else { %> 4.3 Testar Tomcat 26 <jsp:forward page="mensagem.html"/> <% } %> de desenvolvimento 4.4 Criar contexto 26 4.4.1 </html> Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web Listagem 10.8 – jspForward.jsp 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 10.3.7 Comentários 4.4.5 Testar contexto 29 Existem dois tipos principais de comentários que podem ser usados em uma página JSP. Comentário de 4.5 Bibliotecas Servlet 29 Conteúdo: esses comentários são transmitidos de volta para o navegador como parte da resposta de JSP e são 4.6 Testar seus servlets 30 visíveis na visualização do código da página. 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 80 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 90 www.3way.com.br A página principal pode 8 enviar ou não parâmetros 8 para o recurso incluído, o 8 qual irá processar o 8 pedido retornando o 9 10 conteúdo de saída junto 10 com a saída da página 11 que realizou a chamada. 12 Java WEB Java WEB Aqueles familiarizados com HTML percebem que é a mesma sintaxe de comentário para essa linguagem de Sumário Tais comentários não produzem qualquer output visível, mas podem ser visualizados pelo usuário final marcação. através do item view source do navegador. 1 JDBC 8 Comentários JSP não são enviados para o cliente e são visíveis apenas 1.1 arquivos Banco de Dados Relacional 8 nos fontes JSP originais. O corpo do comentário é ignorado pelo Durante a fase de 1.2 JDBC – Java Database Connectivity 8 container JSP. Os comentários JSP podem assumir duas sintaxes: 1.2.1 java.sql.DriverManager 8 compilação do JSP é 1.3 Fábrica de Conexões <%-- comentário jsp --%> declarado e inicializado 9 1.4 Criar Banco de Dados e Tabelas 10 E / OU nove variáveis comumente <% /* comentário scriptlet */ %> 1.5 Classes Javabeans – Entidades 10 usadas dentro do método 1.6 Inserindo Dados 11 1.7 Fechando Conexão é introduzido dentro da página através de _jspService() do servlet 12 Esse segundo acomentário 1.8 scriptlets, PreparedStatement um usando a sintaxe ou de Statement comentário nativa da linguagem de criação gerado a partir da página 12 1.9scripts, no Design 13 de caso Patterns Java. JSP. 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Objetos Recurso avaçando: O Cursor 15 10.4 implícitos 1.9.4 Alteração 16 Assim como todo objeto em Java, cada objeto implícito é uma 1.9.5 Exclusão 16 instância de uma classe interface e segue uma API correspondente. Abaixo 2 Introdução a ou Java Enterprise Edition 17 segue implícitos disponíveis em JSP, suas respectivas 2.1 um resumo Porque dos Javaobjetos EE tem sido tão utilizado? 17 classes/interfaces e uma pequena descrição do objeto. 2.2 O que é Java Enterprise Edition? 18 Objetos implícitos de JSP e suas APIs para aplicações de HTTP. 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 Objeto Classe ou Interface Descrição 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 page java.lang.Object Instância de servlet da página. 3config Análise de arquiteturas 21 javax.servlet.ServletConfig Dados de configuração de servlet. 3.1 Física e Arquitetura Lógica request Arquitetura javax.servlet.http.HttpServletRequest Dados de solicitação, incluindo parâmetros. 21 3.2 Tipos de aplicações na WEB 21 response javax.servlet.http.HttpServletResponse Dados de resposta. 3.3 Arquitetura MVC para a Web 21 out javax.servlet.jsp.JspWriter Fluxo de saída para conteúdo da página. 3.4 Vantagens da arquitetura MVC 22 javax.servlet.http.HttpSession Dados de sessão específicos de usuário. 4session Ambiente de desenvolvimento 23 application javax.servlet.ServletContext Dados compartilhados por todas as páginas 4.1 Tomcat 23 de aplicação. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 pageContext javax.servlet.jsp.PageContext Dados de contexto para execução da página. 4.1.2.1 24 exception JAVA_HOME javax.lang.Throwable Erros não capturados ou exceção. 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 Tabela 10.2 - Descrição resumida dos objetos implícitos. 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 10.4.1 page 4.3 Testar Tomcat 26 O objeto page representa a própria página JSP ou, mais especificamente, uma instância da classe de servlet 4.4 Criar contexto de desenvolvimento 26 gerada na tradução da página JSP. O objeto page é do tipo java.lang.Object. 4.4.1 Estrutura de diretórios 26 Esta variável raramente é utilizada. De fato, uma vez que esta variável é do tipo Object, ela não pode ser 4.4.2 Criar contexto de aplicação web 27 usada diretamente por invocações de servlets. 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 <%= page.geServletInfo() %> <------- Erro 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 <%= ((Servlet)page).getServletInfo() %> <------- Ok, typecast 4.6 Testar seus servlets 30 <%= thisseus .geServletInfo() %> <------- OK 4.7 Testar JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 81 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 91 www.3way.com.br Java WEB Java WEB A primeira expressão dá erro de compilação indicando que getServletInfo() não é um método de Sumário java.lang.Object . Na segunda há um cast da referencia page para Servlet. Uma vez que page refere-se ao servlet gerado, que 1 sua vez JDBC 8 por implementa a interface Servlet. Perceba que neste caso a variável page pode sofrer casting para 1.1 Banco de Dados Relacional 8 JspPage ou HttpJspPage , porque as duas interfaces são derivadas de Servlet. 1.2 JDBC – Java Database Connectivity 8 A terceira expressão nós usamos a referencia this que é uma instância da servlet gerada. 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 10.4.2 config 1.4 Criar Banco de Dados e Tabelas 10 O objeto config armazena dados de configuração do servlet, em forma de parâmetros de inicialização para 1.5 Classes Javabeans – Entidades 10 o servlet de uma página JSP quando compilada. Pelo fato das páginas JSP raramente serem escritas para interagir 1.6 parâmetros Inserindo Dados 11 com de inicialização, este objeto implícito raramente é usado na prática. 1.7 Fechando a Conexão 12 O objeto config é uma instância da interface javax.servlet.ServletConfig. Veja exemplo: 1.8 PreparedStatement ou Statement 12 1.9 Design 13 <web-app ....> Patterns 1.9.1 <display-name>cap9</display-name> DAO – Data Access Object 13 1.9.2 Pesquisando 14 <servlet> 1.9.3 Recurso avaçando: O Cursor 15 <description></description> 1.9.4 Alteração 16 <display-name>InitTestServlet</display-name> 1.9.5 Exclusão 16 <servlet-name>InitTestServlet</servlet-name> 2 Introdução a Java Enterprise Edition 17 <jsp-file>initTeste.jsp</jsp-file> 2.1 Porque Java EE tem sido tão utilizado? 17 <init-param> <param-name>regiao</param-name> 2.2 O que é Java Enterprise Edition? 18 <param-value>centro 2.3 A plataforma Java Enterprise Edition oeste</param-value> 18 </init-param> 2.3.1 APIs 19 2.3.2 </servlet> Contêiners 19 2.3.3 Deployment de aplicações 21 </web-app> 3 Análise de arquiteturas 21 Listagem 10.9 – web.xml parâmetros de inicialização 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 <%@ contentType= "text/html; charset=UTF-8" pageEncoding="UTF-8"%> 21 3.3 page language= Arquitetura"java" MVC para a Web <html> 3.4 Vantagens da arquitetura MVC 22 <body> 4 Ambiente de desenvolvimento 23 Nome Servlet = <%=config.getServletName()%><br> 4.1 Tomcat 23 Parametro regiao = <%=config.getInitParameter("regiao")%> 4.1.1 </body> Instalar Java JSE SDK (JDK) 24 </html> 4.1.2 Qual versão de JDK utilizar 24 Listagem 10.10 – initTeste.jsp recuperando parâmetros de inicialização 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 10.4.3 request e response 4.2.2 Iniciar e parar o Tomcat 25 O objeto request e response representa a solicitação e resposta, respectivamente. O objeto request 4.2.2.1 [Windows] Tomcat como serviço 25 implementa a interface javax.servlet.http.HttpServletRequest enquanto response implementa a interface 4.2.2.2 Tomcat como processo 26 javax.servlet.http.HttpServletResponse. Esses objetos são passado ao método _jspService() no momento em que 4.3 Testar Tomcat 26 um cliente faz uma requisição à página JSP. Este objetos funcionam da mesmo forma que utilizados em servlets, ou 4.4 Criar contexto de desenvolvimento 26 seja, analisando a requisição e enviando a resposta: 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 4.4.3 Configurar contexto: web.xml 27 <html> 4.4.4 <body> Ativar contexto 29 4.4.5 Testar contexto 29 Seu IP :<%=request.getRemoteAddr()%><br> Seu Host :<%=request.getRemoteHost()%><br> 4.5 Bibliotecas Servlet 29 <% 4.6 Testar seus servlets 30 response.setHeader("Expires", "0"); 4.7 Testar seus JSPs 31 response.setHeader("Pragme", "no-cache"); 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 82 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 92 www.3way.com.br Java WEB Java WEB if (request.getProtocol().equals("HTTP/1.1")) { response.setHeader("Cache-Control", "no-cache"); } Sumário %> 1 JDBC 8 </body> 1.1 Banco de Dados Relacional 8 </html> 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 Listagem 10.11 – RequestResponse.jsp 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 10.4.4 Objeto out 1.5 Classes Javabeans – Entidades 10 Este objeto implícito representa o fluxo de saída para a página, cujo conteúdo será enviado para o 1.6 Inserindo Dados 11 navegador com o corpo de sua resposta. O objeto out é uma instância da classe javax.servlet.jsp.JspWriter. Esse 1.7 Fechando a Conexão 12 objeto implementa todos os métodos print() e println() definidos por java.io.Writer. 1.8 PreparedStatement ou Statement 12 Por exemplo, o objeto out pode ser usado dentro de um script para adicionar conteúdo à página gerada. 1.9 Design Patterns 13 Veja o listagem 10.12 abaixo. 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 <% 1.9.3 intRecurso avaçando: O Cursor 15 i = (int) (Math.random() * 10); 1.9.4 if Alteração 16 (i % 2 == 0) { 1.9.5 Exclusão 16 out.print("O Número escolhido " + i + " é par!"); } else { 2 Introdução a Java Enterprise Edition 17 out.print("O Número escolhido " + i + " é impar!"); 2.1 Porque Java EE tem sido tão utilizado? 17 } 2.2 O que é Java Enterprise Edition? 18 %> 2.3 A plataforma Java Enterprise Edition 18 Listagem 10.12 – imprime.jsp 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Esse Deployment de aplicações 21 objeto é muito utilizado para gerar conteúdo dentro do corpo de um script, sem ter que fechá-lo 3 Análise de arquiteturas temporariamente para inserir conteúdo de página estático. Contudo, deve-se evitar usar os métodos print() 21 ou 3.1 Arquitetura Física e Arquitetura 21 println() para inserir cadeias de caracteresLógica muito grandes, é aconselhável fechar o script e inserir o conteúdo 3.2 Tipos de aplicações na WEB 21 estático. 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 10.4.6 session 4 Ambiente de desenvolvimento 23 Este objeto representa a sessão atual de um usuário individual. Todas as 4.1 Tomcat 23 solicitações feitas por um usuário são consideradas parte de uma sessão. Desde que Um dos principais 24 4.1.1 solicitações Instalarpor Javaaqueles JSE SDK usuários (JDK) novas continuem a ser recebidas pelo servidor, a 4.1.2 persiste. QualSe, versão de JDK utilizar usos para o objeto 24 sessão no entanto, um certo período de tempo passar sem que qualquer 4.1.2.1 JAVA_HOME 24 nova solicitação do usuário seja recebida, a sessão expira. O objeto session armazena session é armazenar 4.2 Instalar Tomcat 25 informações a respeito da sessão. e recuperar valores 25 4.2.1 O objeto Qual versão de Tomcat utilizar session é uma instância de javax.servlet.http.HttpSession, funciona de atributos, a fim de 4.2.2 Iniciar e parar o Tomcat 25 da mesma maneira que vimos em servlets. Uma sessão só estará ativa se existir a 4.2.2.1 [Windows] Tomcat como serviço transmitir as 25 diretiva : 4.2.2.2 Tomcat como processo <%@ page session=”true” %> informações 26 4.3 Testar Tomcat 26 específicas de 26 4.4 Criar contexto de desenvolvimento 10.4.7 application usuários entre as 26 4.4.1 EsteEstrutura de diretórios objeto representa a aplicação à qual a página JSP pertence. Ele é uma 4.4.2 Criar contexto de aplicação web 27 instância da interface javax.servlet.ServletContext . Os containers JSP tipicamente páginas. 4.4.3 do primeiro Configurar contexto: web.xml 27 tratam nome de diretório em uma URL como o nome de uma aplicação. 4.4.4 Ativar contexto 29 4.4.5 pageContext Testar contexto 29 10.4.8 4.5 Bibliotecas Servlet 29 O objeto pageContext fornece várias facilidades como gerenciamento de 4.6 Testar seus servlets 30 sessões, atributos, páginas de erro, inclusões e encaminhamento de requisições de 4.7 seus JSPs 31 fluxo de Testar resposta. O objeto pageContext é uma instância da classe 4.8 Logs 31 javax.servlet.jsp.PageContext. 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 83 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 93 www.3way.com.br Java WEB Java WEB Sumário 10.4.9 Exception O objeto exception não está automaticamente disponível em todas as páginas JSP. Este objeto está 1 JDBC nas páginas que tenham sido designadas como páginas de erro, usando o atributo isErrorPage 8 disponível apenas 1.1 Banco Dados Relacional 8 configurado como de true na diretiva page. 1.2 JDBC – Java Database Connectivity 8 1.2.1 <%@java.sql.DriverManager 8 page isErroPage=”true” %> 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 O objeto exception é uma instância da classe java.lang.Throwable correspondente à exceção não tratada 1.5 Classes Javabeans 10 ou repassada que fez com que– oEntidades controle fosse transferido para a página de erro. 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 <%@ page isErrorPage="true"%> <h1>Erro Encontrado</h1> 1.8 PreparedStatement ou Statement 12 O seguinte erro foi encontrado: 1.9 Design Patterns 13 1.9.1 <br> DAO – Data Access Object 13 <b><%=exception.toString() %></b> 1.9.2 <br> Pesquisando 14 1.9.3 <% Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 exception.printStackTrace(); %> 1.9.5 Exclusão 16 2 Introdução a Java Enterprise EditionListagem 10.13 – excecao.jsp 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 10.5 JavaBeans 2.3.1 APIs 19 JavaBeans são classes Java reutilizáveis que seguem algumas regras bem definidas para nomeação de seus 2.3.2 Contêiners 19 métodos e variáveis. Embora a definição exata de JavaBeans fuja ao escopo desse material, para efeitos de uso 21 do 2.3.3 Deployment de aplicações 3 Análise de arquiteturas 21 uso dessas classes em páginas JSP, é necessário que se siga algumas regras básicas no seu desenvolvimento: 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 1. O construtor Tipos de aplicações na WEB 21 da classe, se declarado, não deve receber nenhum argumento. 3.3 2. Podem Arquitetura MVC para a Web 21 existir um ou mais métodos públicos para a definição de valores de propriedades do Bean; esses 3.4 Vantagens da arquitetura MVC setter. 22 métodos são chamados de métodos 4 3. Podem Ambiente de desenvolvimento 23 existir um ou mais métodos públicos para a obtenção de valores de propriedades do Bean; esses 4.1 Tomcat 23 métodos são chamados de métodos getter. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Temos, a seguir, uma exemplo de classe JavaBean, listagem 10.14: A idéia por trás do 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 uso de JavaBeans em 4.2.1 package Qual versão de Tomcat utilizar 25 apostila.cap9; nossas páginas JSP, é 4.2.2 Iniciar e parar o Tomcat 25 que eles encapsulem class Alguem { serviço 4.2.2.1 public [Windows] Tomcat como 25 private String nome; a lógica de nossa 26 4.2.2.2 Tomcat como processo private 4.3 Testar Tomcat byte idade; 26 aplicação, private String hobies[]; 4.4 Criar contexto de desenvolvimento private boolean brasileiro; separando-a do 26 4.4.1 Estrutura de diretórios 26 restante da página. 4.4.2 Criar contexto de aplicação web 27 // construtor padrão public Alguem() { 4.4.3 Configurar contexto: web.xml 27 } 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 // getter métodos 4.5 Bibliotecas Servlet 29 public String getNome() { 4.6 Testar seus servlets 30 return nome; } seus JSPs 4.7 Testar 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 84 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 94 www.3way.com.br Java WEB Java WEB public byte getIdade() { return idade; } Sumário 1 JDBC 8 public String[] getHobies() { 1.1 Banco de Dados Relacional 8 return hobies; 1.2 JDBC – Java Database Connectivity 8 } 1.2.1 java.sql.DriverManager 8 public boolean isBrasileiro() { 1.3 Fábrica de Conexões 9 return 1.4 Criar Banco de Dados brasileiro; e Tabelas 10 } 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados métodos 11 // setter 1.7 Fechando a Conexão 12 public void setNome(String nome) { this.nome = nome; 1.8 PreparedStatement ou Statement 12 } 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 public void setIdade(byte idade) { 1.9.2 Pesquisandothis.idade = idade; 14 1.9.3 Recurso 15 } avaçando: O Cursor 1.9.4 Alteração 16 public void setHobies(String[] hobies) { 1.9.5 Exclusão 16 hobies; 2 Introdução athis Java .hobies Enterprise= Edition 17 } 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 public void setBrasileiro( boolean brasileiro) { 2.3 A plataforma Java.brasileiro Enterprise Edition 18 this = brasileiro; 2.3.1 APIs} 19 2.3.2 Contêiners 19 2.3.3 } Deployment de aplicações 21 Listagem 10.14 – Alguem.java 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 10.5.1 <jsp:useBean> 3.4 Vantagens da arquitetura MVC 22 A tag <jsp:useBean> te permite acessar métodos de um JavaBean em sua página JSP. A tag vem em duas 4 Ambiente de desenvolvimento 23 formas: 4.1 Tomcat 23 4.1.1 <jsp:useBean Instalar Java JSE SDK (JDK) 24 id="varBean" class="package.beanClasse" scope="page"> 4.1.2 Qual//algum versão de html JDK utilizar 24 ou JSP aqui 4.1.2.1 </jsp:useBean> JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 ou Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 O atributo scope é 25 4.2.2.1 <jsp:useBean [Windows] Tomcat como serviçoclass="package.beanClasse" id="varBean" scope= "page" /> 4.2.2.2 Tomcat como processo opcional, porém não 26 4.3 Testar Tomcat deve ser ignorado. 26 4.4 Criar contexto de desenvolvimento 26 O atributo id especifica qual o nome da instância do bean dentro da aplicação. Ele tem a função de 26 4.4.1 Estrutura de diretórios O atributo Criar scope possui um dos valores de escopo já vistos anteriormente: page, determinar o tempo 27 4.4.2 contexto de aplicação web request, session ou application E por último o atributo class que define o nome da 4.4.3 Configurar contexto:. web.xml de vida de um 27 4.4.4 a qual Ativar contexto 29 classe o bean será instanciado. componente 4.4.5 Sope Testar contexto 29 determina quanto tempo o objeto irá existir como variável de programa. JavaBean em uma 29 4.5 Bibliotecas Servlet Para que um bean possa ser instanciado não poderá existir objetos anteriores com página JSP. 4.6 Testar seus servlets 30 mesmo identificador em id e scope, caso contrário, se já existir uma instância para o 4.7 esta Testar seus JSPs 31 objeto será usada. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 85 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 95 www.3way.com.br Java WEB Java WEB 10.5.2 <jsp:setProperty> Sumário 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. 1 JDBC 8 1.1 Banco de Dados Relacional 8 Sintaxe JDBC – Java Database Connectivity Descrição 1.2 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 Usando este formato a propriedade especificada será <jsp:setProperty 1.4 Criarname=”nomeBean” Banco de Dados e Tabelas 10 setada com o valor que será passado como property=”nomePropriedade” /> 1.5 Classes Javabeans – Entidades 10 parâmetro no pedido HTTP(request). 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 Usando esta forma cada parâmetro enviado no 1.8 PreparedStatement ou Statement 12 pedido HTTP request será avaliado a fim de se 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 encontrar um método correspondente combinando <jsp:setProperty name=”nomeBean” property=”*” /> 1.9.2 Pesquisando 14 com seu nome, caso isto aconteça o método set é 1.9.3 Recurso avaçando: O Cursor 15 invocado com o valor do parâmetro recebido no 1.9.4 Alteração 16 pedido HTTP. 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? Usando esta forma a propriedade do bean será 17 2.2 O que é Java Enterprise Edition? 18 configurada com o valor do parâmetro do pedido <jsp:setProperty name=”nomeBean” 2.3 A plataforma Java Enterprise Edition 18 property=”nomePropriedade” especificado na tag, invocando-se o método set 2.3.1 APIs 19 param=“nomeParametro” /> apropriado com o valor do parâmetro como 2.3.2 Contêiners 19 argumento. 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 Usando esta forma o valor especificado será 3.1 Arquitetura Física e Arquitetura Lógica 21 atribuído a propriedade do bean em questão. Este 3.2 Tipos de aplicações na WEB 21 <jsp:setProperty property=”nomePropriedade” 3.3 Arquitetura MVC para a Web 21 valor poderá ser uma cadeia de caracteres ou até value=“String|<%= ... %>” /> 3.4 Vantagens da arquitetura MVC 22 mesmo o resultado de uma expressão JSP (<%= ... 4 Ambiente de desenvolvimento 23 %>). 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar Tabela 10.3 – formas possíveis para <jsp:setProperty> 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 10.5.3 4.2.1 <jsp:getProperty> Qual versão de Tomcat utilizar 25 A tag <jsp:getProperty> é utilizada para recuperar valores de uma propriedade de um componente 4.2.2 Iniciar e parar o Tomcat 25 JavaBean, o valor recuperado em uma cadeia de caracteres (String) e insere no conteúdo de saída. Os dois 4.2.2.1 converte [Windows] Tomcat como serviço 25 atributos para esta tag são o nome do Bean (propriedade name) já referenciado anteriormente na tag 4.2.2.2 necessários Tomcat como processo 26 <jsp:useBean> , e o que indica a propriedade (property) que se deseja recuperar o valor. O atributo property deve 4.3 Testar Tomcat 26 possuir um Criar método getXXX() correspondente no Bean. 4.4 contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 <jsp:getProperty name= ”nomeBean” property= ”nomePropriedade” /> 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Usando Ativar contexto 29 10.5.4 JavaBeans com Ações JSP 4.4.5 Veja Testar contextode como utilizar o que foi dito até aqui sobre manipulação de JavaBeans com JSP. 29 um exemplo A 4.5 Bibliotecas Servlet Listagem 10.15 apresenta um formulário HTML contendo objetos caixa de texto, checkbox e radio, todos 29 os 4.6 Testar seus servlets 30 componentes de entrada de dados no formulário são nomeados (atributo name) com os mesmos nomes dados aos 4.7 Testar seus JSPs a Listagem 10.14, observe os nomes dos atributos e os métodos setter e getter. 31 campos do JavaBean. Reveja 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 86 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 96 www.3way.com.br Siga-nos também no Twitter! twitter.com/3waynet Java WEB Java WEB <html> <body> Sumário Favor preencha com seus dados:<br> <form action="trataFormAlguem.jsp"> 1 JDBC Nome: <input type="text" name="nome"><br> 1.1 BancoIdade: de Dados Relacional <input type="text" name="idade"><br> 1.2 JDBC – Java Database Connectivity Hobbies: <br> 1.2.1 java.sql.DriverManager <input type="checkbox" name="hobbies" value="truco">Truco<br> <input type="checkbox" name="hobbies" value="peteca">Peteca<br> 1.3 Fábrica de Conexões <input type= name="hobbies" value="garrafao">Garrafão<br> 1.4 Criar Banco de Dados "checkbox" e Tabelas É Brasuca:<input type="radio" name="brasileiro" value="true"><br> 1.5 Classes Javabeans – Entidades <input type="submit"><br> 1.6 Inserindo </form> Dados 1.7 Fechando a Conexão </body> </html> 1.8 PreparedStatement ou Statement 8 8 8 8 9 10 10 11 12 12 1.9 Design Patterns 13 Listagem 10.15 – formAlguem.html, formulário de submissão 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 Na Listagem 10.16 fazemos o tratamento dos dados submetidos pelo formulário HTML formAlguem.html. Na 1.9.3 Recurso avaçando: O Cursor 15 linha (2) declaramos um bean do tipo apostila.cap10.Alguem no escopo da sessão. Veja na linha (4) que toda as 1.9.4 Alteração 16 operação necessárias para atribuir os dados capturados do formulário formAlguem.html será processado por uma 1.9.5 Exclusão 16 única ação JSP <jsp:setProperty>, essa ação vinculará cada campo do formulário HTML ao respectivo atributo do 2 Introdução a Java Enterprise Edition 17 bean Alguem pela invocação dos métodos setXXX() definidos na classe Alguem. O compilador JSP é responsável 2.1 Porque Java EE tem sido tão utilizado? 17 pela conversão dos dados vindos do formulário para o bean. 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 <%@page session="true"%> 2.3.1 APIs 19 <jsp:useBean id="umCara" class="apostila.cap9.Alguem" scope="session" /> 2.3.2 configura Contêiners 19 <%-propriedades do bean --%> 2.3.3 Deployment de aplicações 21 <jsp:setProperty name= "umCara" property="*" /> <html> 3 Análise de arquiteturas 21 <body> 3.1 Arquitetura Física e Arquitetura Lógica 21 Esse cara tem o seguinte perfil: 3.2 Tipos de aplicações na WEB 21 <br> 3.3 Arquitetura MVC para a Web 21 Nome: <jsp:getProperty name="umCara" property="nome" /><br> 3.4 Vantagens da <jsp:getProperty arquitetura MVC 22 idade: name="umCara" property="idade" /><br> É brasuca: <jsp:getProperty name="umCara" property="brasileiro" /><br> 23 4 Ambiente de desenvolvimento hobbies: 4.1 Tomcat 23 <br> 4.1.1 Instalar Java JSE SDK (JDK) 24 <% String hb[] = umCara.getHobbies(); 4.1.2 Qual versão if de JDK utilizar 24 (hb != null) 4.1.2.1 JAVA_HOME 24 for (int i = 0; i < hb.length; i++) out.print(i + " - " + hb[i]); 4.2 Instalar Tomcat 25 4.2.1 Qual%> versão de Tomcat utilizar 25 </body> 4.2.2 Iniciar e parar o Tomcat 25 </html> 4.2.2.1 [Windows] Tomcat como serviço 25 Listagem 10.16 – trataFormAlguem.jsp, configura e imprime dados do bean Alguém 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 10.6 Componentes Reutilizáveis 4.4 Criar contextoWeb de desenvolvimento 26 4.4.1 No Estrutura de diretórios 26 mundo JSP re-usar componentes web significa essencialmente que você vai incluir o conteúdo ou o 4.4.2 Criar contexto de aplicação 27 resultado do processamento de outroweb componente web na página JSP. Isto pode ser feito de duas maneiras: 4.4.3 ou dinâmica. ConfigurarInclusão contexto: web.xml 27 estática estática envolve incluir o conteúdo do componente web no arquivo JSP no momento 4.4.4 Ativar contexto 29 em que o arquivo JSP está sendo traduzido, enquanto na inclusão dinâmica a saída gerada por outro componente é 4.4.5 juntamente Testar contexto 29 incluída como a saída da página JSP que recebe a requisição. 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 10.6.1 Fragmentos JSP 4.7 seus JSPs 31 UmTestar fragmento de página é a parte de uma página, como o cabeçalho, o rodapé ou a barra de navegação, 4.8 pode ser Logs 31 que reutilizada em outras páginas. Por exemplo, você pode colocar um elemento comum, como um 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 87 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 98 www.3way.com.br Java WEB Java WEB gráfico ou um campo Pesquisa, em um fragmento de página e inclui-lo como um cabeçalho em todas as páginas do Sumário Você pode também incluir o nome da sua companhia e informações sobre direitos autorais em um aplicativo. fragmento de página e usar tal fragmento como o rodapé do seu aplicativo. Assim como a página principal, o 1 JDBC 8 fragmento de página é uma página JSP com seu próprio Bean de página associado. Entretanto, a extensão de 1.1 Banco de Dados Relacional arquivo de um fragmento de página normalmente será algo como jspf em vez de jsp (isto é só uma convenção 8 – 1.2 JDBC – Java Database Connectivity 8 mas também evita o processamento dos fragmentos). 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 10.6.2 Diretiva include 1.4 Criar Banco de Dados e Tabelas 10 Conforme visto em 10.3.2, a diretiva <@ include file=”URL”> nos permite fazer inclusão estática de 1.5 Classes Javabeans – Entidades 10 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, 1.6 páginaInserindo Dadosacessar as variáveis e métodos definidos na outra página. Elas também compartilham 11 cada incluída pode 1.7 Fechando a Conexão 12 todos os objetos implícitos, como mostra a Listagem 10.17. 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 <html> 1.9.1 <body> DAO – Data Access Object 13 <% 1.9.2 Pesquisando 14 //Pega um criterio de classificacao a partir do request. 1.9.3 Recurso avaçando: O Cursor 15 String criterio = request.getParameter("criterio"); 1.9.4 Alteração 16 //Busca produtos na base de dados e recupera seu ID. 1.9.5 Exclusão 16 String productId[] = getProdutos(criterio); 2 Introdução a Java Enterprise Edition 17 %> O seguintes produtos encontrados pelo criterio de comparação:<br> 2.1 Porque Java EE tem sido tão foram utilizado? 17 <!-2.2 O que é Java Enterprise Edition? 18 Deixa para descricaoProduto.jsp a geracao da descricao 2.3 A plataforma Java Enterprise Edition 18 para cada produto 2.3.1 APIs 19 --> 2.3.2 Contêiners 19 <%@ include file="descricaoProduto.jsp" %> Nova busca 2.3.3 Deployment de aplicações 21 <!-- de arquiteturas 3 Análise 21 FORMULARIO para outra consulta 3.1 Arquitetura Física e Arquitetura Lógica 21 --> 3.2 Tipos de aplicações na WEB 21 <form>...</form> 3.3 Arquitetura MVC para a Web 21 </body> 3.4 Vantagens da arquitetura MVC 22 </html> 4 Ambiente de desenvolvimento Listagem 10.17 – buscaProduto.jsp 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 10.17 o arquivo e 4.1.2 Na Listagem Qual versão de ,JDK utilizar buscaProduto.jsp processa a busca pelo critério informado pelo usuários 24 retorna da base de dados. Ele inclui o arquivo descricaoProduto.jspf para gerar a descrição. O código 4.1.2.1 os produtos JAVA_HOME 24 para buscaDescricao.jsp é mostrado na Listagem 10.18. 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 <% Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 // A variavel implicita request usada aqui 4.2.2.2 Tomcat como processo 26 // pertence à página incluída String ordenaPor = request.getParameter("ordenadoPor"); 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 // Usa o array produtoId definido por buscaProduto.jsp 4.4.1 Estrutura de diretórios 26 // para classificar e gerar a descrição do produto 4.4.2 Criar contexto aplicação web 27 produtoId =de sort(produtoId, ordenaPor); 4.4.3 Configurar contexto: web.xml 27 for(int i=0; i<produtoId.length; i++) { 4.4.4 Ativar contexto 29 //contexto Gera uma descrição tabulada para os produtos 4.4.5 Testar 29 } 4.5 Bibliotecas Servlet 29 %> 4.6 Testar seus servlets 30 Listagem 10.18 – buscaDescricao.jsp 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 88 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 99 www.3way.com.br Java WEB Java WEB Quando uma diretiva include inclui um arquivo as seguintes regras devem Sumário ser observadas: A ação jsp:include é - Nenhum processamento pode ser feito em tempo de tradução, assim o 1 JDBC valor do atributo file não pode ser uma expressão. O seguinte uso de simplesmente uma 8 1.1 Banco Dados Relacional 8 include é de invalido: diretiva include 1.2 JDBC – Java Database Connectivity 8 diferente. A vantagem 8 1.2.1 java.sql.DriverManager <% String umaURL ="copyright.html"; %> <%@ 1.3 Fábrica deinclude Conexõesfile="<%= umaURL %>" %> da jsp:include é que ela 9 1.4 Criar Banco de Dados e Tabelas sempre irá verificar por 10 - Como parâmetros requisição são propriedades da requisição e não 1.5 Classes Javabeansde – Entidades 10 mudanças no arquivo têm qualquer significado em tempo de tradução, o atributo file não pode 1.6 Inserindo Dados 11 incluído. passar quaisquer parâmetros à página incluída. Desta forma o valor do 1.7 Fechando a Conexão 12 atributo file no seguinte exemplo é inválido: 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 <%@ include file="outro.jsp?abc=pqr" %> 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 A página incluída pode ou não ser compilada independentemente. Se 1.9.3 Recurso avaçando: O Cursor 15 a Listagem 10.18, o arquivo buscaDescricao.jsp não pode ser 1.9.4 observar Alteração 16 compilado, uma vez que ele não define a variável produtoID. Em geral, é 1.9.5 Exclusão 16 melhor evitara Java estas dependências 2 Introdução Enterprise Edition e usar uma variável implícita 17 pageContext compartilhar objetos entre as páginas incluídas 2.1 Porque Javapara EE tem sido tão utilizado? 17 estaticamente pelo uso dos métodos pageContext.setAttribuet() e 2.2 O que é Java Enterprise Edition? 18 pageContext.getAttribute() . 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 10.6.3 Ação <jsp:include> 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 Figura 10.3 – Inclusão dinâmica 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 O elemento jsp:include é processado quando uma página JSP é executada. A ação include permite que 4.8 Logs você inclua um recurso estático ou um recurso dinâmico em um arquivo JSP. Os resultados entre a inclusão 31 de 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 89 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 100 www.3way.com.br Java WEB Java WEB recurso estático ou dinâmico são ligeiramente diferente. Se o recurso é estático seu conteúdo é inserido na Sumário do arquivo JSP. Se o recurso é dinâmico a requisição é enviada para o recurso incluído, a página incluída é invocação executada e então o resultado é incluído na resposta da página JSP includente. A Figura 10.2 demonstra o 1 JDBC 8 funcionamento da ação padrão jsp:include. 1.1 Banco de Dados Relacional 8 A ação jsp:include nos fornece em JSP o que no Servlet é obtido com a invocação do método 1.2 JDBC – Java Database Connectivity 8 RequestDispatcher.include(ServletRequest,ServletResponse) . 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 10.6.4 Ação <jsp:param> 1.4 Criar Banco de Dados e Tabelas 10 Você pode Javabeans passar parâmetros para componentes incluídos dinamicamente usando a tag <jsp:param/>.10 O 1.5 Classes – Entidades seguinte exemplo ilustra o uso da tag <jsp:param> para passar dois parâmetros para página incluída: 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 <jsp:include page="alguma.jsp"> 1.8 PreparedStatement ou Statement 12 <jsp:param name="nome1" value="valor1" /> 1.9 Design Patterns 13 <jsp:param name="nome2" value="valor2" /> 1.9.1 DAO – Data Access Object 13 </jsp:include> 1.9.2 Pesquisando 14 1.9.3 Pode Recurso avaçando: O Cursor haver qualquer número de elementos <jsp:param> aninhados com <jsp:include> ou <jsp:forward>15 .O 1.9.4 Alteração 16 valor do atributo value também pode ser especificados usando expressões em tempo-de-execução da seguinte 1.9.5 Exclusão 16 maneira: 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 <jsp:include page="alguma.jsp"> <jsp:param name= "nome1" value= "valor1" /> 2.2 O que é Java Enterprise Edition? 18 <jsp:param name= 2.3 A plataforma Java"nome2" Enterprisevalue= Edition "valor2" /> 18 </jsp:include> 2.3.1 APIs 19 2.3.2 Contêiners 19 10.8.5 <jsp:foward> 2.3.3 Ação Deployment de aplicações 21 A ação <jsp:forward> realiza um encaminhamento da requisição para outro recurso web da mesma forma 3 Análise de arquiteturas 21 que no Servlet, podemos utilizar RequestDisptcher.forward(ServletResquest,ServletResponse) . A Figura 10.3 3.1 Arquitetura Física e Arquitetura Lógica 21 demonstra o processamento dana ação forward. 3.2 Tipos de aplicações WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 Figura 10.4 – Encaminhamento a partir do JSP 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 90 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 101 www.3way.com.br Java WEB Java WEB 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 11.2 Sintaxe de EL 1.9 Design Patterns 13 A Expression Language oferece 1.9.1 DAO – Data Access Object 13 A melhor maneira de compreendermos as expressões EL é uma sintaxe para definir 1.9.2 Pesquisando 14 compara-las com expressões em scripts JSP. Por exemplo, se você quiser 1.9.3 Recurso avaçando: O Cursor 15 expressões que pode ser imprimir o valor de uma variável temperatura na sua página você o faria 1.9.4 Alteração utilizada em texto estático ou 16 utilizando expressão JSP como se segue: 1.9.5 Exclusão 16 como valor de qualquer atributo 2 Introdução a Java Enterprise Edition 17 Temperatura externa é de <%= temperatura%> graus. de uma tag que aceite uma 17 2.1 Porque Java EE tem sido tão utilizado? 2.2 O que é Java Enterprise Edition? 18 expressão JSP. ou, você pode usar EL 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 Temperatura externa é de ${temperatura} graus. 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 Agora image que tivesse usando uma ação <jsp:useBean> para 3.1 Arquitetura Física e Arquitetura Lógica 21 retornar o estado de objeto tempo. Clima que mantenha a informação 3.2 Tipos de aplicações na WEB 21 da temperatura, então você usaria a seguinte sentença usando ações 3.3 Arquitetura MVC para a Web 21 JSP: 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 <jsp:useBean id="c" class="tempo.Clima" scope="session" /> 4.1 Tomcat 23 Temperatura externa é de <jsp:getProperty name="c" property="temperatura"/> graus 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 ou, você pode usar EL 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 <jsp:useBean id="c" class="tempo.Clima" scope="session" /> 4.2.1 Qual versão de Tomcat utilizar 25 Temperatura externa é de ${temperatura} graus. 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 Você pode usar uma expressão EL em um atributo de uma tag que aceite expressões: 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 - Associada a uma só expressão: 4.4 Criar contexto de desenvolvimento 26 <qualquer:tag value="${expr}"/> 4.4.1 Estrutura de diretórios 26 A expressão é avaliada e o resultado é convertido para o tipo esperado como valor do atributo. 4.4.2 Criar contexto de aplicação web 27 - Intercalando texto com várias expressões: 4.4.3 Configurar contexto: web.xml 27 <qualquer:tag value="algum${expr}${expr}texto${expr}"/> 4.4.4 Ativar contexto 29 As expressões são avaliadas da esquerda para a direita. Cada expressão é convertida para uma 4.4.5 Testar contexto 29 string e ligada com o texto. A string final é convertida para o tipo esperado pelo atributo. 4.5 Bibliotecas Servlet 29 - Somente texto: 4.6 Testar seus servlets 30 <qualquer:tag value="algumtexto"/> 4.7 Testar seus JSPs 31 A string é convertida no tipo esperado pelo atributo. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 91 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 102 www.3way.com.br 1 JDBC 8 1.1 Banco de Dados Relacional 8 11.1 O que é EL 1.2 JDBC – Java Database Connectivity 8 Expression Language (EL), ou simplesmente EL, foi adicionada na especificação JSP 2.0 para 1.2.1 A Unified java.sql.DriverManager 8 diminuir os problemas na interação entre JavaServer Pages (JSP) EL com JavaServer Faces (JSF) EL . 1.3 Fábrica de Conexões 9 A sintaxe e o alcance da e linguagem se 1.4 Criar Banco de Dados Tabelas são bem simples. Apesar da EL se parecer bastante com Java ela10 comporta de forma diferente. vai perceber tais diferenças assim que começar a usar o operador [ ]. Você 1.5 Classes Javabeans – Você Entidades 10 encontrará coisas que não funcionariam em Java mas que funcionam com EL e vice-versa. 1.6 Inserindo Dados 11 11 Expression Language Sumário Java WEB Java WEB Veja outras equivalências da EL na Listagem 11.1: Sumário Toda expressão deve começar ${produto} 1 JDBC com ${expr} ou #{expr}, a 8 1.1 Banco de Dados Relacional 8 equivale a: primeira forma é definida como 8 1.2 JDBC – Java Database Connectivity sendo de avaliação imediata 8 1.2.1 java.sql.DriverManager <%= pageContext.findAttribute(“produto") %> 1.3 Fábrica de Conexões utilizada com scripts em JSP, a 9 1.4 Criar Banco de Dados e Tabelas 10 segunda forma é definida como 1.5 Classes Javabeans – Entidades 10 que por sua vez equivale a: de avaliação atrasada, pois 1.6 Inserindo Dados 11 sofrerá avaliação em outras 12 1.7 Fechando a Conexão <jsp:useBean id="produto" 1.8 PreparedStatement ou Statement fase do ciclo de vida da página,12 type="algumPackage.algumaClass" scope="..."> 1.9 Design Patterns ela é utilizada em JSF (ou outra13 produto %> 1.9.1 DAO<%= – Data Access Object 13 tecnologia similar). Listagem 11.1 – Exemplo equivalência EL 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 11.2.1 e Operadores 1.9.4 Literais Alteração 16 A EL define os seguintes literais: 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 Boolean: true e false 2.1 Porque Java EE tem sido tão utilizado? 17 Integer: como em Java 2.2 O que é Java Enterprise Edition? 18 String: com aspas simples ou duplas; aspas duplas (“) é escapada 2.3 A plataforma Java Enterprise Edition 18 \” e aspas simples (') é escapada com \' e \ é escapada com 2.3.1 com APIs 19 \\ 2.3.2 Contêiners 19 null 2.3.3 Null: Deployment de aplicações 21 3 Análise de arquiteturas 21 Se você precisar utilizar uma expressão literal que inclua os 3.1 Arquitetura Física e Arquitetura Lógica 21 caracteres ${} , reservados pela sintaxe EL, você precisa escapar estes caracteres como segue: 3.2 Tipos de aplicações na WEB 21 - Criando um expressão composta 3.3 Arquitetura MVC para a Web como em: ${'${'}exprA} 21 Ou o caractere de escape \ pode ser usado para evitar a avaliação de uma expressão: \${exprA} 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 Em termos de operadores, na EL estão disponíveis os mesmos operadores e com as mesmas precedências 4.1 Tomcat 23 que se utilizam em Java. Foram seu congêneres: 4.1.1 Instalar Java JSE SDKacrescentados (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Aritméticos: +, (binario), *, / e div, % e mod, (unário) 4.1.2.1 JAVA_HOME 24 Lógicos: and ou &&, or ou ||, not ou ! 4.2 Instalar Tomcat 25 == ou eq, != ou utilizar ne, < ou lt , > ou gt, <= ou ge, >= ou le 4.2.1 Relacional: Qual versão de Tomcat 25 Vazio: empty , operação prefixada para determinar se um valor é null ou empty 4.2.2 Iniciar e parar o Tomcat 25 A Tomcat ? B : C, como Java. 4.2.2.1 Condicional: [Windows] comoem serviço 25 4.2.2.2 Tomcat como processo 26 Exemplos: 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 Expressão EL Resultado 4.4.1 Estrutura de diretórios 26 4.4.2 web 27 ${1 > (4/2)}Criar contexto de aplicação false 4.4.3 Configurar contexto: web.xml 27 ${4.0 >= 3} true 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 ${100.0 == 100} true 4.5 Bibliotecas Servlet 29 ${(10*10) ne 100} false 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 ${'a' < 'b'} true 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 92 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 103 www.3way.com.br Java WEB Java WEB ${'hip' gt 'hit'} false Sumário ${4 > 3} true 1 JDBC 8 ${1.2E4 + 1.4} 12001.4 1.1 Banco de Dados Relacional 8 ${3 0.75 1.2 div 4} JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 ${10 mod 4} 2 1.3 Fábrica de Conexões 9 ${!empty param.Add} True se o parâmetro Add for null ou uma String vazia 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 11.2.2 Variáveis 1.6 Inserindo Dados 11 A EL é SOMENTE LEITURA, uma expressão como ${produto.nome=”algumacoisa”} não é válida. Na EL 12 as 1.7 Fechando a Conexão seguintes variáveis podem ser referenciadas: 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 JavaBeans 1.9.1 Componentes DAO – Data Access Object 13 1.9.2 Collections Pesquisando 14 Enumerados 1.9.3 Tipos Recurso avaçando: O Cursor 15 Implícitos 1.9.4 Objetos Alteração 16 1.9.5 Exclusão 16 11.2.3 Navegação em a variáveis 2 Introdução Java Enterprise Edition 17 Para usar variáveis com EL tão você pode usar operadores combinados. Usamos operadores para acessar 2.1 Porque Java EE tem sido utilizado? 17 coleções ouOpropriedades. Os operadores 2.2 que é Java Enterprise Edition?de acesso a propriedades permitem acesso aos membros de objetos, 18 enquanto os coleções retornam elementos de Map, List ou Array. 2.3 Aoperadores plataforma de Java Enterprise Edition 18 estes operadores são descritos por: 2.3.1 Na EL APIs 19 2.3.2 Contêiners 19 retorna a propriedade de a associada com identificador b. 2.3.3 a.b – Deployment de aplicações 21 a[b]Análise – retorna valor de a associado com a chave ou índice b. 3 de o arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 11.2.3.1 Operador (.) na WEB 3.2 Tipos deponto aplicações 21 EsteArquitetura operador possui algumas restrições de uso. O literal à esquerda do ponto (.) , deve ser um Map ou um 3.3 MVC para a Web 21 JavaBean. OVantagens segundo literal, à direita de ponto (.), deve ser uma propriedade do bean ou uma chave do Map e deve 3.4 da arquitetura MVC 22 obedecer aos padrão de de variáveis em Java (não iniciar com número, etc…). Veja exemplo: 4 Ambiente denomenclatura desenvolvimento 23 4.1 Tomcat 23 4.1.1 ${pessoa.nome} Instalar Java JSE //atributo SDK (JDK) 24 do bean pessoa invoca getNome() //chave do map 4.1.2 ${map.chave} Qual versão de JDK utilizar 24 do objeto no escopo request 4.1.2.1 ${requestScope.pessoa.nome}//atributo JAVA_HOME 24 ${pessoa.1} // não funciona pois não obedece o padrão de nomenclatura Java 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 11.2.3.2 ] 4.2.2 operador Iniciar e[ parar o Tomcat 25 operador é mais poderoso e flexível. O literal à esquerda de [] também pode ser um List ou um array 4.2.2.1 Este[Windows] Tomcat como serviço 25 de qualquerTomcat tipo. A como variável à esquerda pode ser um número ou ainda qualquer valor que não respeite as regras 26 de 4.2.2.2 processo nomenclatura do Java. Veja exemplos do operador []: 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 mesmo que ${pessoa.nome} 4.4.1 ${pessoa["nome"]} Estrutura de diretórios 26 4.4.2 ${map["chave"]} Criar contexto de mesmo aplicação web 27 que ${map.chave} 4.4.3 ${map["br.com.servlet"]} Configurar contexto: web.xml// agora funciona 27 4.4.4 ${minhaLista["1"]} Ativar contexto 29 // agora funciona, porém… 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 11.2.4 Navagação em Arrays e Listas 4.6 Testar seus servlets 30 Quando a variável for um array ou lista, tudo que se coloca dentro do [] é convertido para um inteiro, ou 4.7 Testar seus JSPs 31 seja, a chave ou índice deve ser um literal numérico, exemplo: 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 93 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 104 www.3way.com.br Java WEB Java WEB Sumário ${minhaLista["0"]} 1 JDBC 8 ${minhaLista[0]} 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 Algo como, ${minhaLista["posicaoDois"]} não será aceito pelo contêiner, ele não converterá a chave 1.2.1 java.sql.DriverManager 8 “posicaoDois” para um inteiro e lançará uma exceção. 1.3 Fábrica de Conexões 9 1.4 Navegação Criar Banco de Dados e Tabelas 10 11.2.5 em Mapas 1.5 Classes Javabeans – Entidades 10 Se o literal na expressão EL for um Map, o contêiner buscará em todos os escopos um atributo com o nome 1.6 Inserindo Dados 11 especificado para variável e retornará o valor associado à chave colocada dentro dos [] e cercada por “” ou '' 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 ${meuMap["chave"]} 1.9 Design Patterns 13 ${meuMap['chave']} 1.9.1 DAO – Data Access Object 13 1.9.2 Observe Pesquisando 14 a próxima expressão, ${meuMap[chave]} perceba que nesta expressão EL o literal da chave dentro 1.9.3 Recurso avaçando: Cursor 15 dos colchetes não está cercadoO por “”. Supondo que a seguinte declaração tenha ocorrido dentro da página, 1.9.4 Alteração 16 <% request.setAttribute(”chave”, “minhaChave”) %> 1.9.5 Exclusão 16 ${meuMap[chave]} 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 a última expressão EL será traduzida para ${meuMap["minhaChave"]}. 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 <%@page APIs import="java.util.HashMap"%> 19 <% 2.3.2 Contêiners 19 HashMap pessoa= new HashMap(); 2.3.3 Deployment de aplicações 21 pessoa.put("nome","river"); 3 Análise de arquiteturas 21 pessoa.put("idade",24); request.setAttribute("pessoa",pessoa); 3.1 Arquitetura Física e Arquitetura Lógica 21 request.setAttribute("chave","idade"); 3.2 Tipos de aplicações na WEB 21 %> Arquitetura MVC para a Web 3.3 21 ${pessoa["nome"]} 3.4 Vantagens da arquitetura MVC 22 ${pessoa[chave]} 4 Ambiente de desenvolvimento 23 Listagem 11.2 – Iterando sobre Mapas com EL 4.1 Tomcat 23 4.1.1 Objetos Instalar Java JSE SDK (JDK) 24 11.2.6 implícitos 4.1.2 Em Qual versão deimplícitos JDK utilizar EL, os objetos que estão disponíveis na JSP surgem através de expressões com recurso a: 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 Nome Descrição 4.2.1 Qual versão de Tomcat utilizar 25 param Um Map contendo os parâmetros ( String ) da requisição. 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 paramValues Um Map contendo os parâmetros ( String[] ) da requisição 4.2.2.2 Tomcat como processo 26 header Um Map contendo os cabeçalhos ( String ) da requisição. 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 headerValues Um Map contendo os cabeçalhos ( String[] ) da requisição 4.4.1 Estrutura de diretórios 26 cookie Um Map contendo os campos de um Cookie como um objeto simples 4.4.2 Criar contexto de aplicação web 27 4.4.3 27 initParam Configurar contexto: Um Mapweb.xml contendo os parâmetros de inicialização do contexto 4.4.4 Ativar contexto 29 pageScope Um Map contendo os atributos do escopo da página ( page ) 4.4.5 Testar contexto 29 requestScope Um Map contendo os atributos do escopo da requisição ( request ) 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 sessionScope Um Map contendo os atributos do escopo da sessão ( session ) 4.7 Testar seus JSPs 31 applicationScope Um Map contendo os atributos do escopo do contexto ( application ) 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 94 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 105 www.3way.com.br ${minhaLista['0']} Java WEB Java WEB Sumário Veja os seguintes exemplos: 8 Banco de Dados Relacional 8 String vars[] = { "JSP", "JSTL", "Servlet", "JSF" }; 1.2 JDBC – Java Database Connectivity 8 na EL devem estar em pageContext ou session ou request 1.2.1 //variáveis java.sql.DriverManager 8 session.setAttribute("vars", vars); 1.3 Fábrica de Conexões 9 %> 1.4 Criar Banco de Dados e Tabelas 10 <%-- cria form --%> 1.5 Classes Javabeans – Entidades 10 <html> <body> 1.6 Inserindo Dados 11 <form action="ELObjetosImplicitos.jsp"> 1.7 Fechando a Conexão 12 Informe parametro: 1.8 PreparedStatement ou um Statement 12 <input type="text" name="foo"><br> 1.9 Design Patterns 13 Multiplos: 1.9.1 DAO – Data Access Object 13 <input type="checkbox" name="tecno" value="${vars['0']}" 1.9.2 Pesquisando 14 checked="checked">${vars[0]}</input><br> <input type= "checkbox" name= "tecno" value= " ${vars['1']} " 1.9.3 Recurso avaçando: O Cursor 15 checked="checked">${vars['1']}</input><br> 1.9.4 Alteração 16 <input type="checkbox" name="tecno" value="${vars['2']}" 1.9.5 Exclusão 16 checked="checked">${vars["2"]}</input><br> 2 Introdução a Java Enterprise Edition 17 <input type="checkbox" name="tecno" value="${vars['3']}" 2.1 Porque Java EE tem checked= sido tão utilizado? 17 "checked">${vars["3"]}</input><br> <input type= "submit" > 2.2 O que é Java Enterprise Edition? 18 </form>Java Enterprise Edition 2.3 A plataforma 18 2.3.1 APIs 19 <%-- imprime variaveis implicitas --%> 2.3.2 Contêiners 19 \${param.foo} => ${param.foo} 2.3.3 Deployment de aplicações 21 <br> \${param["foo"]} => ${param["foo"]} 3 Análise de arquiteturas 21 <br> 3.1 Arquitetura Física e Arquitetura Lógica 21 \${param['foo']} => ${param['foo']} 3.2 Tipos de aplicações na WEB 21 <br> 3.3 Arquitetura MVC para a Web 21 \${paramValues.tecno[0]} => ${paramValues.tecno[0]} 3.4 Vantagens 22 <br> da arquitetura MVC 4 Ambiente de desenvolvimento 23 \${paramValues.tecno["1"]} => ${paramValues.tecno["1"]} <br> 4.1 Tomcat 23 \${paramValues.tecno['2']} => ${paramValues.tecno['2']} 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual<br> versão de JDK utilizar 24 \${paramValues.tecno['3']} => ${paramValues.tecno['3']} 4.1.2.1 JAVA_HOME 24 <br> 4.2 Instalar Tomcat 25 \${header["host"]} => ${header["host"]} 4.2.1 Qual<br> versão de Tomcat utilizar 25 \${header["accept"]} => ${header["accept"]} 4.2.2 Iniciar e parar o Tomcat 25 <br> Tomcat como serviço 4.2.2.1 [Windows] 25 \${header["user-agent"]} => ${header["user-agent"]} 4.2.2.2 Tomcat como processo 26 <br> 4.3 Testar Tomcat 26 </body> 4.4 Criar contexto de desenvolvimento 26 </html> 4.4.1 Estrutura de diretórios 26 Listagem 11.3 – ELObjetosImplicitos.jsp 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Habilitando Ativar contexto 29 11.3 e Desabilitando EL e scriptlets 4.4.5 Testar contexto 29 ${} não é símbolo reservado na especificação anterior a JSP 2.0, portanto pode haver aplicações em 4.5 O padrão Bibliotecas Servlet 29 4.6 este símbolo Testar possa seus servlets 30 que utilizados com outro intuito. A fim de prevenir a avaliação destes padrões dentro de uma 4.7 Testar seus JSPs 31 página você tem três opções: 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 95 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 106 www.3way.com.br 1 <%-1.1 <% JDBC variavel --%> declara Java WEB Java WEB 1. Escapar o caracteres ${} : Sumário\${expr} 1 2. Configurar JDBC sua aplicação (web.xml) com o grupo de propriedade JSP: 8 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 1.2.1 <jsp-config> java.sql.DriverManager 8 <jsp-property-group> 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 <url-pattern>*.jsp</url-pattern> 1.5 Classes Javabeans – Entidades 10 <el-ignored>false</el-ignored> 1.6 Inserindo Dados 11 </jsp-property-group> 1.7 Fechando a Conexão 12 </jsp-config> 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 3. Configurar a página com diretiva page: 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 <%@ page isELIgnored= ”true” %> 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 1.9.5 Exclusão 16 12 Pages Tag Library ( JSTL ) 2 JavaServer Introdução a Java Standard Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 12.1 é JSTL 2.2 O que O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 JSTL significa JSP Standard Tag Library e consiste essencialmente, num conjunto de tags, que oferecem 2.3.1 APIs 19 controle sobre o processamento das páginas sem aumento de complexidade. 2.3.2 Contêiners 19 Permitem substituir os scriptlets e assim estimular a separação entre apresentação e lógica, resultando 2.3.3 Deployment de aplicações 21 num investimento significativo no sentido de conseguir seguir o modelo MVC. 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 12.2 Instalação da JSTL 3.2 Tipos de aplicações na WEB 21 As uri's sofrem 3.3 Arquitetura MVC para a Web 21 Para instalar a JSTL você precisa: 3.4 Vantagens da arquitetura MVC do site da Sun ou outro fornecedor . 22 - Fazer o download da última versão variações de acordo 4 Ambiente de desenvolvimento - Se você tiver os exemplos do Tomcat instalado, procure pelo arquivo jstl.jar com a a versão da 23 4.1 Tomcat , dentro do diretório ../webapps/jsp-exemplos/WEB-INF/lib 23 e standard.jar biblioteca em relação24 à 4.1.1 - Copiar Instalar SDK (JDK) desejadas para o diretório WEB-INF/lib/ da os Java JARsJSE das bibliotecas especificação JSTL 24 4.1.2 sua Qual versão de e JDK aplicação Web os utilizar arquivos TLD para o diretório WEB-INF/ 4.1.2.1 - Declarar JAVA_HOME implementada pelo24 cada taglib e associá-la com seu TLD no deployment descriptor 4.2 Instalar Tomcat web.xml. contêiner web. 25 4.2.1 - Incluir Qualem versão de Tomcat utilizar 25 cada página que usa as marcas: 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 <%@ [Windows] Tomcat como serviço 25 taglib uri= "uri_da_taglib" prefix="prefixo" %> 4.2.2.2 Tomcat como processo 26 - Usar as marcas da biblioteca com o prefixo definido no passo anterior 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 atributo="...">...</prefixo:nomeTag> 4.4.1 <prefixo:nomeTag Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 12.3 Como usar JSTL em uma página JSP 4.4.4 Ativar contexto 29 4.4.5 O prefixo Testar contexto 29 definido para utilização da tag pode ter qualquer valor mas no caso da taglib core da jstl a 4.5 Bibliotecas Servlet 29 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 uma 4.6 Testar seus servlets 30 requisição pelo protocolo http, mas sim um nome a ser utilizado numa busca entre os arquivos descritores de tags 4.7 Testar seus JSPs 31 (TDL). A URI está para a tag, nos arquivos tlds, assim como <servlet-name> está para um servlet, no arquivo 4.8 Logs 31 web.xml. 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 96 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 108 www.3way.com.br Java WEB Java WEB Existem cinco bibliotecas de tags JSTL (versão 1.1), para incluir uma taglib em sua aplicação proceda como: Sumário Core library: tags para condicionais, iterações, urls, ...: 1 JDBC <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" /> 8 Exemplo: 1.1 Sempre Banco de Dados Relacional 8 que formos <c:if test="..." ... >...</c:if> 1.2 utilizar JDBC – Java Database Connectivity 8 uma taglib 1.2.1 java.sql.DriverManager 8 devemos primeiro XML library: tags para processamento XML: 1.3 Fábrica de Conexões 9 escreverCriar um cabeçalho 1.4 Banco de Dados<%@taglib e Tabelas uri="http://java.sun.com/jsp/jstl/xml" prefix="x" /> 10 Exemplo: 1.5 10 através Classes de umaJavabeans tag jsp – Entidades <x:parse>...</x:parse> 1.6que define Inserindo Dados 11 qual taglib 1.7 Fechando a Conexão Internationalization library I18N: 12 utilizar e 1.8 iremos PreparedStatement ou Statement <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" 12 definimos um nome 1.9 Design Patterns 13 /> Exemplo: 1.9.1 para DAO – Data Access Object 13 o mesmo, o <fmt:message key="..." /> 1.9.2 chamado Pesquisando 14 prefixo. 1.9.3 Recurso avaçando: O Cursor 15 SQL library: manipular banco de dados 1.9.4 Alteração 16 <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" 1.9.5 Exclusão 16 /> 2 Introdução a Java Enterprise Edition 17 Exemplo: 2.1 Porque Java EE tem sido tão utilizado? 17 <sql:update>...</sql:update> 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 Fuctions: Manipulação de string e <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" 19 2.3.1 APIs /> 2.3.2 Contêiners 19 Exemplo: 2.3.3 Deployment de aplicações 21 <sql:update>...</sql:update> 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 12.4 Biblioteca Core 3.4 Vantagens da arquitetura MVC 22 A lista completa tags da versão 1.1 da JSTL core pode ser facilmente compreendida: 4 Ambiente de das desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK Descrição (JDK) 24 Tag 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 24 c:catch JAVA_HOME bloco do tipo try/catch 4.2 Instalar Tomcat 25 c:choose Qual versão de Tomcat bloco do tipo switch 4.2.1 utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 c:forEach [Windows] Tomcat como um for para iterar sobre coleções 4.2.2.1 serviço 25 4.2.2.2 Tomcat como processo 26 c:forTokens for em tokens (ex: “a,b,c” separados por vírgula) 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 c:if if 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 c:import Configurar contexto: web.xml import 4.4.3 27 4.4.4 Ativar contexto 29 c:otherwise default do switch 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 c:out saída 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 c:param parâmetro 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 97 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 109 www.3way.com.br Java WEB Java WEB c:redirect Sumário redirecionamento c:remove remoção de variável 1 JDBC 8 1.1 Banco de Dados Relacional 8 c:set criação de variável 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 c:url veja adiante 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 c:when teste para o switch 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 Tabela 12.1 – Tags JSTL Core 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 12.4.1 Suporte a variáveis c:set e c:remove 1.9 Design Patterns 13 de tags que permite configura valores de variáveis EL ou propriedades de uma variável EL em 1.9.1 O conjunto DAO – Data Access Object 13 qualquer scope JSP (page, request, session ou application). Se a variável não existir ela é criada. 1.9.2 Pesquisando 14 A variável EL ou propriedade pode receber valor através do atributo value: 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 <c:set var=”num” scope=”session” value=”${4*5}”/> 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 ou dentro do corpo da tag: Na tag <c:set> o atributo 17 2.1 Porque Java EE tem sido tão utilizado? target, ao contrário do que 18 2.2 O que é Java Enterprise Edition? <c:set var=”num” scope=”session” > 2.3 A plataforma Java Enterprise Edition 18 possa pareçer, NÃO recebe um ${8*2} 2.3.1 <c:set/> APIs literal String com o id do 19 2.3.2 Contêiners 19 <jsp:useBean>. Diferentemente 2.3.3 Para Deployment de aplicações 21 configurar propriedades de um JavaBean ou um java.util.Map, de <jsp:setProperty> o atributo 3 Análise de arquiteturas 21 mas só isso, você não pode usá-lo para adicionar elementos em uma lista 3.1em arrays. Arquitetura Física e Arquitetura Lógica ao invés de var, quando 21 target necessita da referência ou Você deve usar o atributo target 3.2 configurando Tipos de aplicações na WEB estiver um JavaBean ou um Map veja como: do objeto bean, isto significa21 3.3 Arquitetura MVC para a Web 21 que você deve usar uma target= 3.4 <c:set Vantagens da”${carrinho}” arquitetura MVC property=”items” 22 value= ”${lista}” />desenvolvimento expressão EL (${idBean}) ou23 4 Ambiente de 4.1 Tomcat 23 uma expressão de <c:remove> é usada para remover uma variável de seu escopo. 4.1.1 A tag Instalar Java JSE SDK (JDK) 24 script(<%=idBean %>) ou uma O atributo var tem que de ser umutilizar literal String não pode ser uma expressão. 4.1.2 Qual versão JDK 24 ação <jsp:attribute> . Veja um simples exemplo: 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 var= ”num” scope= ”session”/> 4.2.1 <c:remove Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 Veja Listagem 12.1 : 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4.3 Testar Tomcat 26 4.4 <jsp:useBean Criar contexto de desenvolvimento 26 id="contato" class="apostila.cap11.Contato" scope="session"/> 4.4.1 Estrutura de diretórios 26 <c:set var= "variavel" value= "uma valor para variavel" scope= "page" /> 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 <c:set target="${contato}" property="nome" value="propriedade do bean" /> 4.4.4 <html> Ativar contexto 29 4.4.5 UmaTestar contexto 29 variável => ${variavel}<br> 4.5 Bibliotecas Servlet 29 Uma propriedade de bean => ${contato.nome}<br> 4.6 Testar seus servlets 30 <c:remove var= "contato" scope="session"/> 4.7 Testar seus JSPs 31 4.8 Logs 31 Ainda tem Uma variavel => ${variavel}<br> 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 98 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 110 www.3way.com.br Java WEB Java WEB Não tem mais bean => ${contato.nome}<br> </html> Sumário Listagem 12.1 – VariaveisJSTL.jsp Usando <c:set> e <c:remove> 1 JDBC 8 1.1 Banco de Dados Relacional 8 12.4.2 Controle de Fluxo 1.2 JDBC – Java Database Connectivity 8 12.4.2.1 Condicional <c:if>,<c:choose> 1.2.1 java.sql.DriverManager 8 Você pode usar a tag <c:if> para construir expressões condicionais simples. Por exemplo: 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 <c:if test="${ empty param.nome}"> 1.5 Classes Javabeans – Entidades 10 Voce nao preencheu o campo nome. 1.6 Inserindo Dados 11 </c:if> 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 A tag <c:if> tem uma condição e um “bloco” de código (qualquer coisa aceitável em JSP). Caso a condição 1.9 Design Patterns 13 da tag seja satisfeita o “bloco” código é executado. A Listagem 12.2 demonstra o uso <c:if>. 1.9.1 DAO – Data Access de Object 13 1.9.2 Pesquisando 14 1.9.3taglib Recurso avaçando: O Cursor 15 <%@ uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> 1.9.4 Alteração 16 <c:if test="${ empty param.nome}"> 1.9.5 Exclusão 16 <form action="IfJSTL.jsp"> 2 Introdução a Java Enterprise Edition 17 Nome: <input name="nome"/> <input type="submit"/> 2.1 Porque Java EE tem sido tão utilizado? 17 </form> 2.2 O que é Java Enterprise Edition? 18 </c:if> <c:if test="${ not empty param.nome}"> 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs Você preencheu ${param.nome}. 19 Se existe <c:if> logo existe a tag </c:if> 2.3.2 Contêiners 19 </html> <c:else>, certo? 2.3.3 Deployment de aplicações 21 Listagem 12.2 – IfJSTL.jsp 3 Análise de arquiteturas ERRADO, essa tag não existe na 21 3.1 Arquitetura Física e Arquitetura Lógica 21 JSTL Core. 3.2 Tipos de aplicações naparceiras WEB 21 A tag <c:choose> e suas <c:when> e <c:otherwise>, 3.3 Arquitetura MVC para a Web 21 funcionam como uma estrutura if/else, permitindo contornar a 3.4 Vantagens 22 limitação da tag <c:if>.da arquitetura MVC 4 Ambiente de desenvolvimento 23 4.1 Tomcaturi="http://java.sun.com/jsp/jstl/core" 23 <%@ taglib 4.1.1 Instalar Java JSE SDK (JDK) 24 prefix="c"%> 4.1.2 Qual versão de JDK utilizar 24 <html> 4.1.2.1 <c:if JAVA_HOME 24 test="${empty param.userpref}"> 4.2 Instalar Tomcat 25 <form action="ChooseJSTL.jsp"> 4.2.1 Qual versão de Tomcat utilizar 25 Preferencia: 4.2.2 Iniciar e parar o Tomcat 25 <select name="userpref"> 4.2.2.1 [Windows] Tomcat como serviço 25 <optgroup 4.2.2.2 Tomcat como processo label="Carros Suecos"> 26 <option value="volvo">Volvo</option> 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 <option value="saab">Saab</option> 4.4.1 Estrutura de</optgroup> diretórios 26 4.4.2 Criar contexto de aplicação web 27 <optgroup label="Carros Germanicos"> 4.4.3 Configurar contexto: web.xml 27 <option value="mercedes">Mercedes</option> 4.4.4 Ativar contexto 29 <option value="audi">Audi</option> 4.4.5 Testar contexto 29 </optgroup> 4.5 Bibliotecas Servlet 29 </select> <input type="submit" /></form> 4.6 Testar seus servlets 30 </c:if> 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 99 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 111 www.3way.com.br Java WEB Java WEB <c:choose> <c:when test="${param.userpref eq 'volvo'}"> A Volvo é uma empresa sueca fundada em 1927 Sumário 1 JDBC 8 </c:when> 1.1 Banco de Dados Relacional 8 <c:when test="${param.userpref eq 'saab'}"> 1.2 JDBC – Java Database Connectivity 8 Saab Automobile AB é uma subsidiária da General Motors. 1.2.1 java.sql.DriverManager 8 </c:when> 1.3 Fábrica de Conexões 9 <c:when eq 'mercedes'}"> 1.4 Criar Banco de test="${param.userpref Dados e Tabelas 10 1.5 ClassesA Javabeans – Entidades Mercedes-Benz é uma marca alemã de automóveis pertencente ao grupo 10 1.6 Inserindo Dados AG criada em 1924. 11 Daimler 1.7 Fechando a Conexão 12 </c:when> 1.8 PreparedStatement ou Statement 12 <c:when test="${param.userpref eq 'audi'}"> 1.9 Design Patterns 13 As quatro argolas unidas representam as marcas alemãs que formaram a Auto 1.9.1 DAO – Data Access Object 13 Union, 1.9.2 Pesquisando 14 fundada em 1947. 1.9.3 Recurso avaçando: O Cursor 15 </c:when> 1.9.4 Alteração 16 <c:otherwise> 1.9.5 Exclusão 16 2 Introdução a Java um Enterprise Edition da lista. 17 Escolha dos veículos 2.1 Porque Java EE tem sido tão utilizado? 17 </c:otherwise> 2.2 O que é Java Enterprise Edition? 18 </c:choose> 2.3 A plataforma Java Enterprise Edition 18 </html> 2.3.1 APIs 19 Listagem 12.3 – ChooseJSTL.jsp 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 12.4.2.4 Iteradores <c:forEach> e <c:forTokens> 3.1 Arquitetura Física Arquitetura Lógica 21 A tag <c:forEach> ée capaz de iterar por uma coleção. O exemplo a seguir mostra o uso de expression 3.2 Tipos aplicações WEB 21 language de uma de maneira mais na limpa que o script JSP. 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 Script JSP: 4 Ambiente de desenvolvimento 23 4.1 23 <% Tomcat 4.1.1 // Instalar Java JSE SDK (JDK) 24 ... 4.1.2 Qual versão de JDK utilizar 24 List contatos = lstContatos.getLista(); 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 (int i =de 0; i < contatos.size(); i++ ) { 4.2.1 forQual versão Tomcat utilizar 25 Contato contato = (Contato) contatos.get(i); 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 %> [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 <li> 4.4 Criar contexto de desenvolvimento 26 <%=contato.getNome()%>, 4.4.1 Estrutura de diretórios 26 <%=contato.getEmail()%>: 4.4.2 Criar contexto de aplicação web 27 <%=contato.getEndereco()%> 4.4.3 Configurar contexto: web.xml 27 </li> 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 <% Bibliotecas Servlet 4.5 29 4.6 30 } Testar seus servlets 4.7 Testar seus JSPs 31 %> 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 100 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 112 www.3way.com.br Java WEB Java WEB Tag <c:forEach>: Sumário <c:forEach var="contato" items="${lstContatos.lista}"> 1 JDBC 8 <li>${contato.nome}, ${contato.email}: ${contato.endereco}</li> 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 </c:forEach> 1.2.1 java.sql.DriverManager 8 1.3 Fábrica Conexões Também é de possível criar um contador do tipo int no corpo da tag <c:forEach>. Para isso basta definir 9 o 1.4 Criar Banco de Dados e Tabelas 10 atributo chamado varStatus para a variável desejada e utilizar a propriedade count dessa variável. 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 <c:forEach var="contato" items="${dao.lista}" varStatus="id"> 1.7 Fechando a Conexão 12 <li>${id.count} é ${contato.nome}</li> 1.8 PreparedStatement ou Statement 12 </c:forEach> 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 Listagem 12.4, exemplo de uso da tag <c:forEach>: 1.9.2 Veja Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 page language="java" contentType="text/html" %> 1.9.4 <%@Alteração 16 1.9.5 <%@Exclusão 16 page import="java.util.*" %> 2 Introdução a Java Enterprise Edition 17 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 <% 2.3 A plataforma Java Enterprise Edition 18 // Criar um ArrayList com dados de teste 2.3.1 APIs 19 ArrayList list = new ArrayList(); 2.3.2 Contêiners 19 Map autor1 de = aplicações new HashMap(); 2.3.3 Deployment 21 autor1.put("nome", 3 Análise de arquiteturas "Austragesilo"); 21 3.1 Arquitetura Física e Arquitetura Lógica 21 autor1.put("id", new Integer(1)); 3.2 Tipos de aplicações na WEB 21 list.add(autor1); 3.3 Arquitetura MVC para a Web 21 Map autor2 = new HashMap(); 3.4 Vantagens da arquitetura MVC 22 autor2.put("nome", "Bismark"); 4 Ambiente de desenvolvimento 23 autor2.put("id", new Integer(2)); 4.1 Tomcat 23 list.add(autor2); 4.1.1 Instalar Java JSE SDK (JDK) 24 Map = JDK new HashMap(); 4.1.2 Qualautor3 versão de utilizar 24 autor3.put("nome", "Caipora"); 4.1.2.1 JAVA_HOME 24 autor3.put("id", new Integer(3)); 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 list.add(autor3); 4.2.2 Iniciar e parar o Tomcat 25 pageContext.setAttribute("autores", list); 4.2.2.1 %> [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 <html> 4.4 Criar contexto de desenvolvimento 26 <head> 4.4.1 Estrutura de diretórios 26 <title>Resultado da Busca: Autores</title> 4.4.2 Criar contexto de aplicação web 27 </head> 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 <body bgcolor="white"> 4.4.5 Testar contexto 29 Aqui todos os autores que casam com critério de busca: 4.5 Bibliotecas Servlet 29 <table> 4.6 Testar seus servlets 30 <TH>nome</th> 4.7 Testar seus JSPs 31 <TH>Id</th> 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 101 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 113 www.3way.com.br Java WEB Java WEB <c:forEach items="${autores}" var="current"> <tr> <td><c:out value="${current.nome}" /><td> Sumário 1 JDBC 8 <td><c:out value="${current.id}" /><td> 1.1 Banco de Dados Relacional 8 1.2 JDBC – </tr> Java Database Connectivity 8 </c:forEach> 1.2.1 java.sql.DriverManager 8 </table> 1.3 Fábrica de Conexões 9 </body> 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 </html> 1.6 Inserindo Dados 11 Listagem 12.4 – ForEachJSTL.jsp 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 Na tag <c:forTokens> o atributo items é uma String constituída por tokens separados por algum 1.9 Design Patterns 13 delimitador. Se você imaginar uma String como um coleção de substrings é possível notar a semelhança com 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 <c:forEach>. Veja Listagem 12.5. 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 <c:set var="nomes" value="A:B;C|D" scope="page" /> 2.1 Porque Java EE tem sido tão utilizado? 17 <html> 2.2 O que é Java Enterprise Edition? 18 <head> 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 <title>JSTL forTokens</title> 2.3.2 Contêiners 19 </head> 2.3.3 Deployment de aplicações 21 <body> 3 Análise de arquiteturas 21 <c:forTokens items="${pageScope.nomes}" 3.1 Arquitetura Física e Arquitetura Lógica 21 delims=":;|" 3.2 Tipos de aplicações na WEB 21 var="nomeAtual" 3.3 Arquitetura MVC para a Web 21 varStatus="status" > 3.4 Vantagens da arquitetura MVC 22 Membro família #<c:out value="${status.count}" /> is 4 Ambiente de desenvolvimento 23 <c:out value="${nomeAtual}" /> <br /> 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 </c:forTokens> 4.1.2 Qual versão de JDK utilizar </body> A JSTL é uma forma24 4.1.2.1 </html> JAVA_HOME 24 padrão de trabalhar com 4.2 Instalar Tomcat 25 Listagem 12.5 – ForTokensJSTL.jsp internacionalização,25 4.2.1 Qual versão de Tomcat utilizar 4.2.2 Iniciar e parar o Tomcat 25 definida na especificação 4.2.2.1 [Windows] Tomcat como serviço 25 do Java EE, através da JSP 12.5 de Internacionalização 4.2.2.2 Biblioteca Tomcat como processo 26 Standard TagLibs. 4.3 Testar Tomcataplicações é cada vez mais uma tarefa corriqueira de 26 Internacionalizar 4.4 Criar contexto de desenvolvimento 26 todo desenvolvedor web. A maioria dos frameworks web tem a sua maneira 4.4.1 Estrutura de diretórios 26 particular de prover esse mecanismo. 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 12.5.1 Locale 4.4.4 A tag Ativar contexto 29 <fmt:setLocale> é utiliza para fazer com que o sistema passe a ser 4.4.5 Testar contexto 29 exibido em uma língua diferente da que está previamente definida pelo browser 4.5 Bibliotecas Servlet 29 cliente. 4.6 Testar seus servlets 30 4.7 <fmt:setLocale Testar seus JSPs 31 value="${param.lingua}" scope="session"/> 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 102 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 114 www.3way.com.br Java WEB Java WEB Você também poderia utilizar a classe javax.servlet.jsp.jstl.core.Config em um Servlet. Esta classe permite Sumário as configurações da JSTL programaticamente, deixando transparente o controle da localização para suas controlar páginas JSP. 1 JDBC trecho de código mostra como a tag <fmt:setLocale> é utilizada para especificar explicitamente 8 O seguinte 1.1 Banco de Dados Relacional 8 a configuração de localização na sessão do usuário: 1.2 JDBC – Java Database Connectivity 8 1.2.1 <fmt:setLocale java.sql.DriverManager 8 value="pt_BR" scope="session"/> 1.3 Fábrica de Conexões 9 Após a execução 1.4 Criar Banco de deste Dadosfragemento e Tabelas JSP as preferências de idioma especificadas pelo usuário para seu 10 browser serão ignoradas. 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 12.5.2 Mensagens 1.7 Fechando a Conexão 12 Textos de localização deou idiomas são utilizadas na JSTL com uso da tag <fmt:message>. Esta tag permitirá a 1.8 PreparedStatement Statement 12 você mensagens e textos de um arquivo de recurso (resource bundle) e mostrá-lo em sua página. 1.9 retornar Design Patterns 13 arquivo resource bundle é um arquivo contendo todas as mensagens (e rótulos) a serem utilizados pelo 1.9.1 Um DAO – Data Access Object 13 sistema. 12.7 mostra um arquivo resource bundle, messages.properties: 1.9.2 A Listagem Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 site.titulo Alteração = Sistema com i18n 16 1.9.5 saudacao Exclusão= Bem vindo ao sistema 16 2 Introdução a Java Enterprise Edition 17 campo.nome = Nome: 2.1 Porque Java EE tem sido tão utilizado? 17 campo.email = Email: 2.2 O que é Java Enterprise Edition? 18 campo.rua = Rua: 2.3 A plataforma Java Enterprise Edition 18 = Cidade: 2.3.1 campo.cidade APIs 19 botao.enviar = Enviar 2.3.2 Contêiners 19 = Cancelar 2.3.3 botao.cancelar Deployment de aplicações 21 3 Análise de arquiteturas 21 erro.campo.obrigatorio = Por favor, preencha o campo 3.1 Arquitetura Física e Arquitetura Lógica 21 Listagem 12.7 – Exemplo de um arquivo Resource Bundle 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 Para usar este arquivo contendo as mensagens do seu sistema você referenciá-lo em sua página para que a 3.4 Vantagens da arquitetura MVC 22 tag onde encontrar os recursos. Isto pode ser feito de duas formas: usando a tag 4 <fmt:message> Ambientesaiba de desenvolvimento 23 <fmt:setBundle> ou <fmt:bundle>: 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 basename= "br.com.empresa.pacote.messages"> 4.1.2 <fmt:bundle Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 Adicionando a seguinte configuração ao seu web.xml: 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 <web-app ...> 4.2.2 Iniciar e parar o Tomcat 25 <context-param> 4.2.2.1 [Windows] Tomcat como serviço 25 <param-name> 4.2.2.2 Tomcat como processo 26 javax.servlet.jsp.jstl.fmt.localizationContext </param-name> 4.3 Testar Tomcat 26 <param-value>messages</param-value> 4.4 Criar contexto de desenvolvimento 26 </context-param> 4.4.1 Estrutura de diretórios 26 </web-app> 4.4.2 Criar contexto de aplicaçãoListagem web 12.6 – Configurando arquivo de Mensagens 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 A segunda Ativar contexto 29 a opção é mais flexível e também mais desejável, já que não precisamos alterar as páginas JSP 4.4.5 Testar contexto 29 caso venhamos mudar localização do resource. Este arquivo de mensagens deve estar no classpath da sua 4.5 Bibliotecas Servlet 29 aplicação web e deve possuir a extensão .properties. Existem várias formas de se fazer isso. A mais simples, é criar 4.6 Testar seus servlets 30 o arquivo messages.properties no diretório onde estão os fontes (*.java) da sua aplicação. 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 103 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 115 www.3way.com.br Java WEB Java WEB Caso queira deixá-lo dentro de algum pacote, a configuração no web.xml deverá conter o nome completo Sumário do arquivo: 1 JDBC 8 <param-value>br.com.empresa.pacote.messages</param-value> 1.1 Banco de Dados Relacional 8 1.2 JDBC Java mensagens Database Connectivity 8 Para usar– essas nas suas páginas JSP você basta usar a tag <fmt:message> da JSTL, 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 <fmt:message key=”chave”/> 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades configuração do resource bundle no web.xml: 10 Veja o exemplo, não considerando 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 1.8 PreparedStatement ou Statement 12 <fmt:setLocale value="en_US" scope="session"/> 1.9 Design Patterns 13 <fmt:bundle 1.9.1 DAObasename="messages"> – Data Access Object 13 1.9.2 <html> Pesquisando 14 1.9.3 <head> Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 <title><fmt:message key="site.titulo"/></title> 1.9.5 </head> Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 <body> 2.2 O que é Java Enterprise Edition? 18 <h1><fmt:message key="site.titulo"/></h1> 2.3 A plataforma Java Enterprise Edition 18 <p><fmt:message key="saudacao"/></p> 2.3.1 APIs 19 2.3.2 Contêiners 19 <form> 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 <fmt:message key="campo.nome"/> 3.1 Arquitetura Física e Arquitetura Lógica 21 <input type="text" name="nome" /><br/> 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 <fmt:message key="campo.email"/> 3.4 Vantagens da arquitetura MVC 22 <input type="text" name="email" /><br/> 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 <fmt:message key="campo.rua"/> 4.1.1 Instalar Java JSE SDK (JDK) 24 <input type="text" 4.1.2 Qual versão de JDK utilizar name="rua" /><br/> 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat key="campo.cidade"/> 25 <fmt:message 4.2.1 Qual versão de Tomcat utilizar 25 <input type="text" name="cidade" /> 4.2.2 Iniciar e parar o Tomcat 25 <p><input type="submit" O Locale padrão é o do 4.2.2.1 [Windows] Tomcat como serviço 25 value='<fmt:message key="botao.enviar"/>'></p> 4.2.2.2 Tomcat como processo 26 usuário, aquele que está 4.3 Testar Tomcat 26 configurado no browser. </form> 4.4 Criar contexto de desenvolvimento 26 4.4.1 </body> Estrutura de diretórios 26 4.4.2 </html> Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 </fmt:bundle> 4.4.4 Ativar contexto 29 Listagem 12.8 – fmtMessageJSTL.jsp 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 A tag <fmt:message> sempre procura o arquivo de mensagens mais 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 adequado para o Locale associado ao usuário. Os navegadores enviam no cabeçalho 4.8 Logs 31 das requisições com informações sobre os idiomas configurados pelo usuário em seu 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 104 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 116 www.3way.com.br Java WEB Java WEB browser. Experimente mudar essas configurações no seu navegador e veja que o sistema passa a ser exibido em Sumáriodiferentes. idiomas Se o Locale associado usuário for en_US (inglês dos EUA), a tag fmt:message irá tentar buscar as 1 JDBC 8 mensagens nos seguintes arquivos (contendo o texto para o locale desejado) , em ordem : 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 1.2.1 messages_en_US.properties java.sql.DriverManager 8 messages_en.properties 1.3 Fábrica de Conexões 9 messages.properties 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 O primeiro a ser encontrado será usado. Portanto, a boa prática é ter o arquivo messages.properties com a 1.6 Inserindo Dados 11 língua do sistema e um arquivo específico para cada língua adicional. 1.7 padrão Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 12.5.3 Formatação de Números e Datas 1.9 Design Patterns 13 fmt inclui tags para manipular Data e Números: <fmt:formatDate>, <fmt:parseDate>, 1.9.1 A biblioteca DAO – Data Access Object 13 <fmt:formatNumber>. Como o próprio nome sugere, <fmt:formatDate> faz formatação de datas e mostra datas e 1.9.2 Pesquisando 14 horas (saída dados), enquanto <fmt:parseDate> é usada para fazer análise de valores de datas e horas (entrada de 1.9.3 Recurso avaçando: O Cursor 15 dados). exemplo: 1.9.4 Veja Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 <c:set var="usDateString">4/1/03 7:03 PM</c:set> 2.1 Porque Java EE tem sido tão utilizado? 17 <fmt:parseDate value="${usDateString}" parseLocale="en_US" 2.2 O que é Javatype="both" Enterprise Edition? dateStyle="short" timeStyle="short" var="usDate"/><br>18 2.3 A plataforma Java Enterprise Edition 18 <c:set var="brDateString">4/1/03 19:03</c:set> 2.3.1 APIs 19 <fmt:parseDate value="${brDateString}" parseLocale="pt_BR" 2.3.2 Contêiners 19 2.3.3 Deploymenttype="both" de aplicações dateStyle="short" timeStyle="short" var="brDate"/><br>21 <ul> 3 Análise de arquiteturas 21 <li> Analise <c:out value="${usDateString}"/> dado localização U.S. 3.1 Arquitetura Física e Arquitetura Lógica 21 English 3.2 Tipos de aplicações na WEB 21 resultando na data <c:out value="${usDate}"/>.</li> 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 <li> Analise <c:out value="${brDateString}"/> dado localização Pt Brasil 4.1 Tomcat resultando na data <c:out value="${brDate}"/>.</li> 23 4.1.1 </ul> Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Listagem 12.9 – fmtFomatDate.jsp 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat A tag <fmt:formatNumber> é usada para mostrar dados numéricos, incluindo valores monetários25 e 4.2.1 Qual versãocom de Tomcat utilizar especifica. 25 percentuais, de arcodo uma localização 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 <table> [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 <fmt:timeZone value="US/Eastern"> 4.3 Testar Tomcat 26 <c:forEach items="${entryList}" var="blogEntry" varStatus="status"> 4.4 Criar contexto de desenvolvimento 26 test="${status.first}"> 4.4.1 Estrutura de<c:if diretórios 26 <tr><td align="left" class="blogDate"> 4.4.2 Criar contexto de aplicação web 27 <fmt:formatDate value="${blogEntry.created}" 4.4.3 Configurar contexto: web.xml 27 dateStyle="full"/> 4.4.4 Ativar contexto 29 </td></tr> 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 </c:if> 4.6 Testar seus servlets 30 <tr><td align="left" class="blogTitle"> 4.7 Testar seus JSPs 31 <c:out value="${blogEntry.title}" escapeXml="false"/> 4.8 Logs 31 </td></tr> 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 105 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 117 www.3way.com.br Java WEB Java WEB <tr><td align="left" class="blogText"> <c:out value="${blogEntry.text}" escapeXml="false"/> <font class="blogPosted"> Sumário 1 JDBC 8 [My <fmt:formatNumber value="0.02" type="currency"/> 1.1 Banco de Dados Relacional 8 posted at <fmt:formatDate value="${blogEntry.created}" 1.2 JDBC – Java Database Connectivity 8 pattern="h:mm a zz"/>] 1.2.1 java.sql.DriverManager 8 </font> 1.3 Fábrica de Conexões 9 </td></tr> 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes</c:forEach> Javabeans – Entidades 10 1.6 Inserindo Dados 11 </fmt:timeZone> 1.7 Fechando a Conexão 12 </table> 1.8 PreparedStatement ou StatementListagem 12.9 – fmtFomatDate.jsp 12 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 13 Tratamento de erros em aplicações Web 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 13.1 Configuração de páginas de erro 1.9.5 Exclusão 16 Permitir que um usuário visualize a pilha de exceção quando ao algo dá errado ou um mensagem de erro 2 Introdução a Java Enterprise Edition 17 padrão do tipo 404 Not Found , não será um bom cartão de visitas para sua 2.1 Porque Java EE tem sido tão utilizado? 17 página. 2.2 O que é Java Enterprise Edition? 18 Você elaborar página Edition personalizada para manipular os erros, 2.3 A poderá plataforma Java um Enterprise Você não poderá evitar 18 e então usar a diretiva page para configurá-la. 2.3.1 APIs 19 que erros ocorram (não Veja Listagem 13.1 e 13.2 : 2.3.2 Contêiners 19 todos), mas você pode 21 2.3.3 Deployment de aplicações <%@Análise page de isErrorPage="true" %> pelo menos informar esses 3 arquiteturas 21 <html> 3.1 Arquitetura Física e Arquitetura Lógica erros de uma forma mais21 Veja de bem ! Veja Bem ! ... Um erro ocorreu, 3.2 Tipos aplicações na WEB 21 amistosa. por gentileza tente outra vez.<br/> 3.3 Arquitetura MVC para a Web 21 </html> 3.4 Vantagens da arquitetura MVC 22 Listagem 13.1 – erro.jsp , definindo página de erro com JSP 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 Agora qualquer página JSP poderá usar erro.jsp para informar (ou 4.1.2 Qual versão de JDK utilizar 24 omitir) um erro ao usuário, basta que as páginas que possam lançar exceções 4.1.2.1 JAVA_HOME 24 informem qual será Tomcat sua página de erro colocando a diretiva: 4.2 Instalar 25 4.2.1 Qual versão de Tomcat utilizar 25 <%@ page errorPage="erro.jsp" %> 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Como Tomcat como processo 26 nada é perfeito teremos um grande inconveniente ao utilizarmos essa abordagem, se você tiver 4.3 Testar Tomcat muitas paginas que precisem deste tratamento de erro você terá modificar cada uma para que contenham 26 a 4.4 Criar contexto desenvolvimento 26 diretiva errorPage . Tudo de bem, você diria, posso fazer isso! Mas se precisar de um tratamento diferente para 4.4.1 Estrutura de diretórios 26 exceções de tipos diferentes? Então sua abordagem deverá ser mais abrangente, você poderá usar a tag <error4.4.2 do Deployment Criar contexto de aplicação web 27 page> Descriptor . 4.4.3 É possível Configurar contexto: web.xml 27 declarar páginas de erro no web.xml para uma aplicação web inteira, e você pode até mesmo 4.4.4 Ativar contexto 29 configurar páginas de erro para diferentes tipos de exceções, ou diferentes tipos de código de erros HTTP. 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 13.1.1 Declarando uma página de erro geral 4.6 seus servlets 30 EstaTestar declaração se aplica a tudo na sua aplicação web, não apenas para páginas JSPs. As tags internas 4.7 Testar seus JSPs 31 <exception-type> ou <error-code> são usados para indicar o tipo da exceção ou código de erro HTTP que será 4.8 Logs 31 interceptado pelo contêiner. Veja Listagem 13.2. 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 106 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 118 www.3way.com.br Java WEB Java WEB 13.2 – erro geral 1.2 JDBC – Java Database Listagem Connectivity 1.2.1 java.sql.DriverManager 1.3 Fábrica de Conexões 13.1.2 Declarando página de erro para uma exceção mais específica 1.4 Criar Banco de Dados e Tabelas Esta declaração configura uma página de erro que só será invocada quando 1.5 Classes Javabeans – Entidades houver uma SQLException. Se você tiver, ao mesmo tempo, uma declaração geral 1.6 Inserindo Dados como a Listagem 13.1.1 e ocorrer uma declaração diferente de SQLException, ele 1.7 Fechando a Conexão continuará caindo em erro.jsp. 1.8 PreparedStatement ou Statement 1.9 Design Patterns <error-page> 1.9.1 <exception-type>java.sql.SQLException</exception-type> DAO – Data Access Object 13 1.9.2 <location>/erroSQL.jsp</location> Pesquisando 14 </error-page> 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 Listagem 13.3 – exceção mais específica 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 13.1.3 de erro HTTP 2.1 Página Porque Java EE tem sido tão utilizado? 17 Veja como configurar uma página de erro que só é chamada quando o código 2.2 O que é Java Enterprise Edition? 18 HTTP for 404 (arquivo não encontrado). 2.3 de status A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 <error-page> 2.3.2 Contêiners 19 <error-code>404</error-code> 2.3.3 Deployment de aplicações 21 <location>/erroHTTP.jsp</location> 3 Análise de arquiteturas 21 </error-page> 3.1 Arquitetura Física e Arquitetura Lógica 21 Listagem 13.4 – erro http 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 13.2 Tratando erros em Servlets 4 Ambiente de desenvolvimento 23 Se é bom observador deve ter notado que um servlet, através dos métodos service() ou doXXX(), só podem 4.1 Tomcat 23 4.1.1 exceções Instalar JSE SDK (JDK) 24 lançar doJava tipo ServletException e IOException, ou suas subclasses destas. Então como poderíamos 4.1.2 Qual versão de JDK 24 informar para uma página ouutilizar outro servlet a ocorrência de exceções como SQLException ou outra exceção 4.1.2.1 AJAVA_HOME 24 checável? resposta é, não poderíamos. 4.2 Instalar Tomcat 25 4.2.1 Criando Qual versão de Tomcat utilizar 25 13.2.1 nossa Exception 4.2.2 Se você Iniciar e parar o precisar Tomcat de uma exceção você deverá criá-la como uma subclasse de ServletException 25. realmente 4.2.2.1 [Windows] Tomcat13.5. como serviço 25 Veja um exemplo na Listagem 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 import javax.servlet.ServletException; 4.4 Criar contexto de desenvolvimento 26 public class MinhaServletException extends ServletException { 4.4.1 Estrutura de diretórios 26 public MinhaServletException(String message) { 4.4.2 Criar contexto de aplicação web 27 super(message); 4.4.3 Configurar contexto: web.xml 27 } 4.4.4 Ativar contexto 29 4.4.5 } Testar contexto 29 4.5 Bibliotecas Servlet 29 Listagem 13.5 – MinhaServletException 4.6 Testar seus servlets 30 A Listagem 13.6 apresenta um servlet que lança a exceção MinhaServletException: 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 107 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 120 Sumário <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/erro.jsp</location> 1 JDBC </error-page> 1.1 Banco de Dados Relacional O contêiner usa a configuração de 8 <error-pager> no 8 8 web.xml como padrão, ma se uma 8 9 página especificar a 10 diretiva errorPage o 10 contêiner usará a 11 configuração da 12 12 diretiva. 13 www.3way.com.br Java WEB Java WEB public class LancaExceptionServlet extends HttpServlet { Sumário protected void doGet(HttpServletRequest request, HttpServletResponse response) 1 JDBC 8 throw new MinhaServletException("Minha Exceção"); 1.1 Banco de Dados Relacional 8 } JDBC – Java Database Connectivity 1.2 8 1.2.1 java.sql.DriverManager 8 } 1.3 Fábrica de Conexões 9 Listagem 13.6 – Lançando subclasse de ServletException 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 13.2.2 Servlet que dispara Exception 1.6 Inserindo Dados 11 Mas ainda temos um problema como poderemos repassar informações de exceção que não são subclasses 1.7 Fechando a Conexão 12 de e IOException ? A estratégia a ser utilizada neste caso é utilizar a classe ServletException como 1.8ServletException PreparedStatement ou Statement 12 uma classe empacotadora. Você captura a exceção num bloco try...catch e “embrulha” a exceção capturada com o 1.9 Design Patterns 13 construtor ServletException(java.lang.Throwable rootCause) e relança-la com throw. Veja exemplo na Listagem 1.9.1 DAO – Data Access Object 13 13.7. 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 Exception nao ServletException 1.9.4 //uma Alteração 16 1.9.5 public Exclusão 16 class OutraException extends Exception { 2 Introdução a Java Enterprise Edition 17 public OutraException(String msg){ 2.1 Porque Java EE tem sido tão utilizado? 17 super(msg); 2.2 O que é Java Enterprise Edition? 18 } 2.3 A plataforma Java Enterprise Edition 18 2.3.1 } APIs 19 2.3.2 Contêiners 19 2.3.3 public Deployment de aplicações 21 class LancaExceptionServlet extends HttpServlet { 3 Análise de arquiteturas 21 protected void doGet(HttpServletRequest request, HttpServletResponse response) 3.1 Arquitetura Física e Arquitetura Lógica 21 throws ServletException, IOException { 3.2 Tipos de aplicações na WEB 21 throw new ServletException( 3.3 Arquitetura MVC para a Web 21 new MVC OutraException("Um Exception nao ServletException")); 22 3.4 Vantagens da arquitetura 4 Ambiente de desenvolvimento 23 } 4.1 Tomcat 23 } 4.1.1 Instalar Java JSE SDK (JDK) 24 Listagem 13.7 – Injetando uma exceção em ServletException 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Mapeamento Instalar Tomcat 25 13.2.3 no Deployment Descriptor 4.2.1 Da mesma Qual versão de Tomcat utilizar forma que fizemos com JSPs, também podemos configurar nossa exceção gerada pelo servlet 25 no 4.2.2 , de Iniciar edeclarativo. parar o Tomcat 25 web.xml modo Veja na Listagem 13.8. 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 <error-page> Tomcat como processo 26 4.3 Testar Tomcat 26 <exception-type>apostila.cap13.OutraException</exception-type> 4.4 Criar contexto de desenvolvimento 26 <location>/erro.jsp</location> 4.4.1 Estrutura de diretórios 26 </error-page> 4.4.2 Criar contexto de aplicação web 27 Listagem 13.8 – web.xml configurado para capturar OutraException 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 <%@Testar contexto 29 page isErrorPage="true"%> 4.5 Bibliotecas Servlet 29 <h1>Erro Encontrado</h1> 4.6 Testar seus servlets 30 O seguinte erro foi encontrado: 4.7 Testar seus JSPs 31 <br> 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 108 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 121 www.3way.com.br throws ServletException, IOException { Java WEB Java WEB Sumário <b><%=exception.toString() %></b> 1 JDBC 8 <% 1.1 Banco de Dados Relacional 8 exception.printStackTrace(); 1.2 JDBC – Java Database Connectivity 8 1.2.1 %> java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 Listagem 13.9 – Página de erro erro.jsp 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 14 Aplicações 1.7 MVC para Fechando a Conexão Web 12 1.8 PreparedStatement ou Statement 12 14. 1 Por que Combinar Servlets e JSP? 1.9 Design Patterns 13 1.9.1 Colocar DAOtodo – Data Access Object 13 HTML dentro de um Servlet realmente não parece a melhor idéia. O que acontece quando 1.9.2 Pesquisando 14 precisamos mudar o design da página? O seu designer não vai ter tempo de editar sua Servlet, recompilá-la e 1.9.3 Recurso avaçando: O Cursor 15 colocá-la noAlteração servidor. 1.9.4 16 Uma idéia mais interessante é usar o que é bom de cada um dos dois. O JSP foi feito apenas para 1.9.5 Exclusão 16 apresentar o resultado, a ele não deve fazer acessos a bancos e outros. Isso deve estar no Servlet. O ideal então é que 2 Introdução Java Enterprise Edition 17 a Servlet faça o trabalho árduo e o JSP apenas apresente esses resultados. A Servlet possui a lógica 17 de 2.1 Porque Java EEsujo tem e sido tão utilizado? negócios (ou regras de negócio) e o JSP tem a lógica de apresentação. 2.2 O que é Java Enterprise Edition? 18 típico:Java Enterprise Edition 2.3 Em um cenário A plataforma 18 - Use JSP para tornar mais fácil manter e desenvolver o conteúdo HTML 2.3.1 APIs 19 Para códigos dinâmicos simples, chame o código servlet utilizando elementos de script 2.3.2 Contêiners 19 - Para aplicações mais complexas, 2.3.3 Deployment de aplicações utilize classes personalizadas chamadas dentro dos elementos de script 21 bastante complexas, utilize beans e custom tags 3 - Para aplicações Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 nãode é tudo, para na processamento complexo, iniciar com JSP é bastante estranho. Além da facilidade 3.2 Mas, isto Tipos aplicações WEB 21 3.3 Arquitetura MVC para a Web 21 de separar código real em classes separadas, beans e custom tags, a suposição por trás de JSP é que uma página 3.4 da arquitetura 22 fornece um Vantagens aparência básica única. MVC 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 14.2 Sobre MVC 4.1.2 Mal Entendidos Qual versão de JDK utilizar 24 4.1.2.1 Um JAVA_HOME 24 Framework elaborado nem sempre é necessário, frameworks com Struts e JavaServer Faces, são 4.2 Instalar Tomcat 25 muitas vezes úteis. Mas eles não são indispensáveis. Implementar MVC com RequestDispatcher funciona bem para 4.2.1 Qual versão de Tomcat utilizar 25 a maioria das aplicações simples e moderadamente complexas. 4.2.2 Iniciar e parar o Tomcat 25 Usar MVC não mudará totalmente o projeto do sistema. Podemos utilizar MVC para requisições 4.2.2.1 [Windows] Tomcat como serviço 25 individuais. O MVC como deve processo ser encarado como uma abordagem, também conhecido como abordagem Modelo 2 4.2.2.2 Tomcat 26 (4.3 Model 2 approach ), essa abordagem não vai conflitar com sua arquitetura. Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Implementando Criar contexto de aplicação web 27 14.3 MVC com RequestDispatcher 4.4.3 Configurar contexto: web.xml 27 Para modelos de aplicações menos exigentes podemos seguir os seguintes passos na construção de uma 4.4.4 Ativar contexto 29 aplicação web segundo o Modelo 2. 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Defina beans Testarpara seus representar servlets 30 1. os dados. 4.7 Use um Testar seus JSPsmanipular requisições. O servlet lê os parâmetros da requisição, verifica por dados 31 2. Servlet para 4.8 ausentes Logs 31 e malformados, etc. Veja o exemplo de encaminhamento de requisição, Listagem 14.1: 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 109 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 122 www.3way.com.br <br> Java WEB Java WEB Sumário public void doGet(HttpServletRequest request, HttpServletResponse response) 1 JDBC 8 String operation = request.getParameter("operation"); 1.1 Banco de Dados Relacional 8 if (operation == null) { 1.2 JDBC – Java Database Connectivity 8 operation = "unknown"; 1.2.1 java.sql.DriverManager 8 } 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 String address; if Javabeans (operation.equals("order")) { 1.5 Classes – Entidades 10 address = "/WEB-INF/Order.jsp"; 1.6 Inserindo Dados 11 } else if (operation.equals("cancel")) { 1.7 Fechando a Conexão 12 address = "/WEB-INF/Cancel.jsp"; 1.8 PreparedStatement ou Statement 12 } else { 1.9 Design Patterns 13 address = "/WEB-INF/UnknownOperation.jsp"; 1.9.1 DAO}– Data Access Object A página JSP não 13 1.9.2 Pesquisando 14 deve criar os objetos . RequestDispatcher dispatcher = 1.9.3 Recurso avaçando: O Cursor 15 request.getRequestDispatcher(address); É o servlet, não a 16 1.9.4 Alteração página JSP, que deve 1.9.5 Exclusão 16 dispatcher.forward(request, response); 2 Introdução a Java Enterprise Edition criar todos os 17 } Porque Java EE tem sido tão utilizado? 2.1 objetos contendo 17 Listagem 14.1 – Exemplo ecaminhamento de Requsição 2.2 O que é Java Enterprise Edition? 18 dados. 2.3 A plataforma Java Enterprise Edition 18 3. Preencha os beans. O servlet invoca a lógica de negócios (código específico da 2.3.1 APIs 19 aplicação) ou código de acesso a dados para obter os resultados. Os resultados 2.3.2 Contêiners 19 são inseridos em beans que foram definidos no passo 1. Portanto, para garantir 2.3.3 Deployment de aplicações 21 página JSP não irá criar objetos, devemos utilizar: 3 que uma Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 <jsp:useBean ... type="pacote.Classe" /> 3.2 Tipos de aplicações na WEB 21 3.3 ao invés Arquitetura MVC para a Web 21 de 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 <jsp:useBean ... class="pacote.Classe" /> 4.1 Tomcat 23 A página JSP não deve 4.1.1 Instalar Java JSE modificar SDK (JDK) os objetos. Portanto, devemos utilizar ${propriedade} ou <jsp:getProperty> 24 4.1.2 Qual versão de JDK utilizar 24 mas não <jsp:setProperty> dentro da JSP. 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 4. Armazene o bean na requisição, sessão, ou no contexto do servlet. O servlet chama setAttribute no objeto 25 do 4.2.1 Qual versão de Tomcat utilizar 25 tipo requisição, sessão, ou contexto do servlet para armazenar uma referência aos beans que representam os 4.2.2 Iniciar parar o Tomcat 25 resultados da e requisição. 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 ValueObject Tomcat como processo 26 valor = new ValueObject(...); 4.3 Testar Tomcat 26 request.setAttribute(“identificador ", valor); 4.4 Criar contexto de desenvolvimento 26 dispatcher = 4.4.1 RequestDispatcher Estrutura de diretórios 26 request.getRequestDispatcher ("/WEB-INF/SomePage.jsp"); 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 dispatcher.forward(request, response); 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 Listagem 14.2 – armazenando beans 4.5 Bibliotecas Servlet 29 4.6 Encaminhe Testar seus servlets 30 5. a requisição para uma página JSP. O servlet determina qual página JSP é adequada para a situação 4.7 e utilizaTestar seusforward JSPs 31 o método de RequestDispatcher (Listagem 14.1) para transferir controle para a página. 4.8 Logs 31 6. Extraia os dados dos beans. A página JSP acessa os beans com <jsp:useBean> e com um escopo associado com 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 110 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 123 www.3way.com.br throws ServletException, IOException { Java WEB Java WEB o contexto definido no passo 4. A página então usa EL, preferencialmente, ou mesmo uma ação Sumário <jsp:getProperty> para exibir as propriedades dos beans. A página JSP não cria ou modifica o bean; ela meramente extrai e exibe os dados criados pelo servlet. 1 JDBC 8 1.1 <jsp:useBean Banco de Dados Relacional id=“identificador " type="somePackage.ValueObject" scope="request" /> 8 1.2 ${identificador.propriendade} JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 Listagem 14.3 – recuperando beans 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 14.4 Framework MVC STRUTS 1.6 Inserindo Dados 11 Struts é um a framework 1.7 Fechando Conexão de código aberto que é disponibilizado e gerenciado pela Apache Software 12 Foundation . Temos abaixo uma ou representação 1.8 PreparedStatement Statement de como o Struts gerencia a arquitetura Model 2: 12 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Figura 14.4 – Modelo Struts 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 Vamos examinar os objetos fornecidos pelo framework para cada um dos componentes Model, View e 4.2.2 Iniciar e parar o Tomcat 25 Controller. 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 14.4.1. Controller 4.4 Criar contexto de desenvolvimento 26 14.4.1.1. ActionServlet 4.4.1 Estrutura de diretórios 26 4.4.2 No Criar contexto de aplicaçãodo web 27 centro da implementação Controller do framework Struts encontra-se a ActionServlet. Este serve 4.4.3 Configurar contexto: web.xml 27 como um Servlet Front Controller e fornece um único ponto de acesso ao restante da aplicação. Contém também 4.4.4 contexto 29 a lógica de Ativar manipulação da requisição do cliente, através da requisição HTTP do cliente, baseado na requisição, e 4.4.5 Testar contexto 29 redireciona o usuário diretamente à página WEB ou despacha a requisição ao objeto gerenciador chamado Actions 4.5 Bibliotecas Servlet 29 que será, então, responsável por determinar o resultado da resposta. 4.6 Testar seus servlets 30 A ActionServlet conhece todos estes detalhes, qual Action chamar para gerenciar determinada requisição, 4.7 Testar seus JSPs 31 qual 4.8 componente Logs de View deve ser chamado em seguida lendo esta informação de um arquivo de configuração 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 111 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 124 www.3way.com.br Java WEB Java WEB XML, geralmente nomeado struts-config.xml. Esta servlet é fornecida pelo framework Struts. Tudo o que é Sumário para incluí-la em nossa aplicação é configurá-la corretamente no descritor de implementação da necessário aplicação. Abaixo está um trecho de web.xml exibindo como configurar o ActionServlet para o uso: 1 JDBC 8 1.1 Banco de Dados Relacional 8 ...JDBC – Java Database Connectivity 1.2 8 <servlet> 1.2.1 java.sql.DriverManager 8 <servlet-name>action</servlet-name> 1.3 Fábrica de Conexões 9 <servlet-class> 1.4 Criar Banco de Dados e Tabelas 10 org.apache.struts.action.ActionServlet </servlet-class> 1.5 Classes Javabeans – Entidades 10 <init-param> 1.6 Inserindo Dados 11 <param-name>application</param-name> 1.7 Fechando a Conexão 12 <param-value>ApplicationResources</param-value> 1.8 PreparedStatement ou Statement 12 </init-param> 1.9 Design Patterns 13 <init-param> 1.9.1 DAO – Data Access Object 13 <param-name>config</param-name> 1.9.2 Pesquisando<param-value>/WEB-INF/struts-config.xml</param-value> 14 </init-param> 1.9.3 Recurso avaçando: O Cursor 15 </servlet> 1.9.4 ...Alteração 16 1.9.5 <servlet-mapping> Exclusão 16 2 Introdução a Java Enterprise Edition 17 <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> 2.1 Porque Java EE tem sido tão utilizado? 17 </servlet-mapping> 2.2 O que é Java Enterprise Edition? 18 Listagem 14.5 – web.xml configurando struts 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 14.4.1.2. Action 2.3.3 Como Deployment de aplicações 21 mencionamos antes, algumas requisições do cliente são delegadas às instâncias de objetos da Action 3 Análise de arquiteturas 21 por nossa classe servlet Front Controller. Todos os objetos Action definem um método chamado execute() e é este 3.1 Arquitetura Física e ActionServlet Arquitetura Lógica 21 o método que é chamado pela para gerenciar a requisição. 3.2 Tipos de aplicações na WEB 21 O framework Struts fornece aos desenvolvedores somente a classe base Action. Para incluir objetos Action 3.3 Arquitetura MVC para a Web 21 como gerenciadores de requisições em sua aplicação, os desenvolvedores devem estender esta classe base e 3.4 Vantagens da arquitetura MVC execute(). 22 fornecer uma implementação para o método 4 Ambiente de desenvolvimento 23 Uma atividade comum em aplicações WEB é o início de uma sessão do usuário. Abaixo é mostrada uma 4.1 Tomcat 23 implementação da classe LoginAction que poderia ser utilizada para gerenciar tais requisições. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 package Qual versão de JDK utilizar 24 actions; 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 forms.LoginForm; 4.2.1 import Qual versão de Tomcat utilizar 25 import javax.servlet.http.*; 4.2.2 Iniciar e parar o Tomcat 25 org.apache.struts.action.*; 4.2.2.1 import [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testarclass TomcatLoginAction extends Action { 26 public 4.4 Criarpublic contextoActionForward de desenvolvimento 26 execute(ActionMapping mapping, ActionForm form, 4.4.1 Estrutura de diretórios 26 HttpServletRequest request, HttpServletResponse response) 4.4.2 Criar contexto de aplicação web 27 throws Exception { 4.4.3 Configurar contexto: web.xml 27 // faz o cast do objeto genérico ActionForm 4.4.4 Ativar contexto 29 // para a implementação específica ActionForm 4.4.5 Testar contexto 29 // configurada para esta Action 4.5 Bibliotecas Servlet 29 LoginForm loginForm = (LoginForm) form; 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 // Recupera os dados especificados pelo usuário. 4.8 Logs 31 String loginName = loginForm.getLoginName(); 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 112 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 125 www.3way.com.br Java WEB Java WEB String password = loginForm.getPassword(); // Verifica se é o usuário correto if (!(loginName.equals("1234") && password.equals("1234"))) Sumário 1 JDBC 8 return mapping.findForward("failure"); 1.1 Banco de Dados Relacional 8 Armazena o resultado no session scope 1.2 JDBC – Java // Database Connectivity 8 // para uso no restante da aplicação 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 session = request.getSession(); 1.4 Criar Banco HttpSession de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 session.setAttribute("USER", loginName); 1.6 Inserindo Dados 11 1.7 Fechando a // Conexão o usuário efetuou o login com sucesso. Despacha o usuário para 12 1.8 PreparedStatement ou Statement 12 // o restante da aplicação. 1.9 Design Patterns 13 return mapping.findForward("success"); 1.9.1 DAO – Data Access Object 13 } 1.9.2 Pesquisando 14 } 1.9.3 Recurso avaçando: O Cursor 15 Convém lembrar que ao codificar 1.9.4 Alteração 16 Listagem 14.5 – Exemplo ação struts, LoginAction.java 1.9.5 Exclusão os exemplos dos objetos Action, 16 2 Introdução a Java Enterprise Edition que o framework irá criar uma 17 Observe que a implementação acima emprega o uso de um 2.1 Porque Java EE tem sido tão utilizado? 17 única cópia do objeto e usá-lo para objeto de negócio, chamado UserService, para a autenticação do 2.2 O que é Java Enterprise Edition? 18 usuário e não fornece diretamente sua própria implementação no facilitar todas as requisições. 18 2.3 A plataforma Java Enterprise Edition método 2.3.1 execute() APIs . Instâncias de Action que forem criadas desta Isto significa que devemos sempre19 maneira a funcionalidade central deve ser delegada aos objetos de 2.3.2 Contêiners 19 codificar a Action para ser threadnegócio (que podem de ser considerados parte da Model), não 2.3.3 Deployment aplicações 21 implementada na própria Action. As únicas atividades que uma Action safe e certificar em utilizar sempre21 3 Análise de arquiteturas deve são: variáveis locais e não variáveis de 21 3.1 executar Arquitetura Física e Arquitetura Lógica Recuperar as informações 3.2 Tipos de aplicações na WEBfornecidas pelo JavaBean de 21 classe. usuário do ActionForm associado. 3.3 Arquitetura MVC para a Web 21 Traduzir dados do formulário em parâmetros requeridos 3.4 Vantagens da arquitetura MVC 22 pelos objetos de que implementam a funcionalidade. 4 Ambiente de negócio desenvolvimento 23 Recuperar o resultado da operação do objeto de negócio e 4.1 Tomcat 23 a View seguinte 4.1.1 determinar Instalar Java JSE SDK (JDK) para onde o usuário deve ser 24 4.1.2 encaminhado. Qual versão de JDK utilizar 24 Opcionalmente, armazenar os resultados dos dados da 4.1.2.1 JAVA_HOME 24 operação de negócio na sessão ou solicitar objetos que serão 4.2 Instalar Tomcat 25 pelo restante da aplicação. 4.2.1 utilizados Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 de Action são capazes de instruir a ActionServlet para qual componente de View delegar a 4.2.2.1 Instâncias [Windows] Tomcat como serviço 25 resposta instâncias de objetos ActionForward. Actions têm o acesso a estes objetos de ActionForward 4.2.2.2 retornando Tomcat como processo 26 com um objeto ActionMapping, que encapsula os dados de mapeamentos de caminhos lógicos para cada 4.3 o uso de Testar Tomcat 26 Action. Estes mapeamentos são lidos do arquivo de configuração pela ActionServlet, que é responsável por enviar a 4.4 Criar contexto de desenvolvimento 26 ActionMapping necessária à Action. Deste modo, para instruir a ActionServlet a passar o controle para um caminho 4.4.1 Estrutura de diretórios 26 lógico nossa Action executa 4.4.2 chamado Criarsuccess, contexto de aplicação web a seguinte instrução: 27 4.4.3 Configurar contexto: web.xml 27 return mapping.findForward("success"); 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 14.4.1.3. ActionForm 4.5 Bibliotecas Servlet 29 O framework Struts fornece uma classe chamada ActionForm . Instâncias desta classe são usadas para 4.6 Testar seus servlets 30 facilitar a recuperação 4.7 Testar seus dos JSPs dados dos formulários preenchidos pelo usuário através das instâncias de Action que 31 gerenciam os eventos de formulário. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 113 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 126 www.3way.com.br Java WEB Java WEB Cada instância de ActionForm representa um formulário ou um conjunto de formulários, define as Sumário propriedades que correspondem aos elementos do(s) formulário(s) que representam, e as expõem usando métodos setters e getters de acesso publico. Actions que necessitam dos dados dos formulários, simplesmente 1 8 chamam os JDBC métodos getters da instância de ActionForm. 1.1 Banco de Dados Relacional usado no exemplo acima (Listagem 14.5): 8 Abaixo é listado o ActionForm 1.2 JDBC – Java Database Connectivity 8 1.2.1 import java.sql.DriverManager Struts fornece a definição8 org.apache.struts.action.*; 1.3 Fábrica de Conexões base da classe; os 9 1.4 Criar Banco de Dados e Tabelas 10 public class LoginForm extends ActionForm { desenvolvedores têm a10 1.5 Classes Javabeans – Entidades responsabilidade de criar 1.6 Inserindo Dados 11 private String loginName; 1.7 Fechando a Conexão 12 suas próprias 1.8 PreparedStatement ou Statement implementações. 12 private String password; 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 public String getLoginName() { 1.9.3 Recurso avaçando: O Cursor 15 return loginName; 1.9.4 Alteração 16 } 1.9.5 Exclusão 16 public void setLoginName(String loginName) { 2 Introdução a Java Enterprise Edition 17 .loginName = loginName; 2.1 Porque Java this EE tem sido tão utilizado? 17 } 2.2 O que é Java Enterprise Edition? 18 public Java String getPassword() { 2.3 A plataforma Enterprise Edition 18 2.3.1 APIs 19 return password; 2.3.2 Contêiners 19 } 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 public void setPassword(String password) { 3.1 Arquitetura Física e Arquitetura Lógica 21 this.password = password; 3.2 Tipos de aplicações na WEB 21 } 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 } Ambiente de desenvolvimento 4 23 4.1 Tomcat 23 Listagem 14.6 – LoginForm.java 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Ao codificar ActionForms, devemos lembrar de: 4.1.2.1 JAVA_HOME 24 - Definir propriedades com os métodos get e set para cada elemento representado no formulário. 4.2 Instalar Tomcat 25 colocar de negócio no ActionForm. São concebidos meramente para transferir 4.2.1 - Não Qual versão nenhuma de Tomcatlógica utilizar 25 dados entre componentes da View e do Controller e por isso não são utilizados pela lógica de negócio. 4.2.2 Iniciar e parar o Tomcat 25 incluir um método 4.2.2.1 - Opcionalmente, [Windows] Tomcat como serviço de validação dos dados antes que o controle passe para a Action. 25 4.2.2.2 Tomcat como processo 26 14.4.1.4. Arquivo struts-config.xml 4.3 Testar Tomcat 26 Atua como arquivo de configuração para os componentes do framework Struts. Abaixo, temos uma cópia 4.4 Criar contexto de desenvolvimento 26 do arquivo struts-config.xml usado para o exemplo acima: 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 <?xml "1.0" encoding= "UTF-8" ?> 4.4.3 version= Configurar contexto: web.xml 27 <!DOCTYPE struts-config PUBLIC 4.4.4 Ativar contexto 29 "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" 4.4.5 Testar contexto 29 "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"> 4.5 Bibliotecas Servlet 29 <struts-config> <form-beans> 4.6 Testar seus servlets 30 <form-bean "loginForm" type="login.LoginForm"/> 4.7 Testarname= seus JSPs 31 </form-beans> 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 114 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 127 www.3way.com.br Java WEB Java WEB <action-mappings> Sumário 1.2 JDBC – Java Database Connectivity 1.2.1 java.sql.DriverManager <forward name="success" path="/success.jsp"/> <forward name= "failure" path="/failure.jsp"/> 1.3 Fábrica de Conexões 1.4 Criar Banco de Dados e Tabelas </action> 1.5 Classes Javabeans – Entidades 1.6 Inserindo Dados </action-mappings> 1.7 Fechando a Conexão </struts-config> 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 Descreveremos a seguir, cada um desses elementos. 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 <!DOCTYPE ...> 1.9.3 Define Recurso avaçando: Cursor 15 o arquivo XMLO como sendo um arquivo de configuração para 1.9.4 utilização Alteração 16 pelo framework Struts. Excluir esta linha, ou mesmo digitá-la 1.9.5 errado, Exclusão 16 resultará em erros quando a aplicação carregar. 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 <struts-config> 2.2 O que raiz é Java 18 Elemento doEnterprise arquivo deEdition? configuração. Todos os outros elementos são filhos desse elemento. 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 <form-beans> 2.3.2 Marca Contêiners 19 o início e o fim das definições das instâncias de uma classe ActionForms. Elementos <form-beans> 2.3.3 Devem Deployment de aplicações 21 ser colocados como filhos deste elemento. 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 <form-bean> 3.2 Tipos de instância aplicações na WEB 21 Define uma de ActionForm que pode ser utilizada pela aplicação. Tem dois atributos: 3.3 Arquitetura MVC para a Web 21 name – o nome lógico a ser associado com a classe ActionForm 3.4 Vantagens da arquitetura MVC 22 type – o nome completo da classe ActionForm. 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 <action-mappings> 4.1.1 Marca Instalar Java SDK (JDK) 24 o início e JSE o fim das definições de ações e seus mapeamentos. Todos os elementos <action> devem 4.1.2 ser Qual versão de JDK utilizar 24 colocados como filhos deste elemento. 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 <action> 4.2.1 Define Qual versão de Tomcat utilizar uma instância de um objeto Action para utilização pela aplicação. A maior parte dos elementos 25 de 4.2.2 ação Iniciar e parar os o Tomcat 25 implementa seguintes atributos: 4.2.2.1 [Windows] Tomcat como serviço <form-bean> a ser utilizado nesta ação. 25 name – o nome do elemento 4.2.2.2 Tomcat como processo 26 path – o caminho relativo ao contexto a ser utilizado por esta Action. Qualquer requisição a este 4.3 Testar Tomcat 26 caminho resulta na chamada da Action definida. 4.4 Criar scope contexto de desenvolvimento 26 – contexto do escopo onde nossa ActionForm pode ser acessada. Isto informa onde a 4.4.1 Estrutura de diretórios 26 ActionServlet deverá armazenar a instância da classe ActionForm. 4.4.2 Criartype contexto de aplicação web 27 – o nome de classe Action. 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 <forward> 4.4.5 Ações Testar contexto 29 podem ter nenhum ou muitos elementos de redireção. Este elemento define o mapeamento lógico 4.5 Bibliotecas Servlet 29 entre um nome e um caminho na nossa aplicação. Tem os seguintes atributos: 4.6 Testar seus name –servlets o nome lógico do elemento de redireção que pode ser utilizado pela instância de Action. 30 4.7 Testar seus JSPs 31 path –o caminho para o componente de visualização associado a este redirecionador. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 115 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 128 www.3way.com.br <action name="loginForm" 1 path="/login" JDBC scope="request" 1.1 type="login.LoginAction" Banco de Dados Relacional > Podemos definir qual Action é chamada para 8 8 cada requisição, que 8 componente de formulário8 usar para cada Action e o 9 mapeamento de nomes 10 10 lógicos para caminhos 11 reais, entre outros. 12 Java WEB Java WEB 14.4.2. Model (Modelo) Sumário 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 JavaBeans 1 eventualmente, JDBC Entreprise JavaBeans (EJB), ou ainda Springs. 8 ou, 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 14.4.3. View (Visualização) 1.2.1 Struts java.sql.DriverManager 8 pode utilizar qualquer tecnologia da camada de apresentação, apesar de, na maioria dos casos, 1.3 deHTML Conexões 9 utilizar JSP, Fábrica JSF e/ou . O que o Struts fornece para esta camada é um conjunto de bibliotecas de tags que 1.4 Criar Banco de Dados e Tabelas 10 permite utilizar as facilidades do Struts para popular e validar automaticamente os formulários. 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 15. Custom Tags 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 15.1 Introdução 1.9.1 DAO – Data Access Object 13 Podemos reutilizar 1.9.2 Tendo Pesquisando 14 visto o uso e a facilidade de se programar páginas utilizando JSTL 1.9.3provavelmente Recurso avaçando: Cursor 15 você desejaria O utilizar a mesma estratégia para um conjunto de fragmentos JSP utilizando 1.9.4 Alteração funcionalidades, específicas de sua implementação, que não tenham sido a tags <jsp:include> e 16 1.9.5 Exclusão 16 contempladas na JSTL. <jsp:param>, mas 17 2 Introdução a Java Enterprise Edition Escrever novos manipuladores de tags é uma tarefa relativamente certamente o código JSP e 2.1 Java EE JSP/Servlets tem sido tão 17 simples de Porque ser feito com . utilizado? Existem três maneiras de se criar seus 2.2 O que é Java Enterprise Edition? próprios manipuladores de tags. Dessas três, duas foram introduzidas com JSP a organização correm o 18 2.3 para tornar A plataforma Enterprise Edition 2.0 a tarefa Java de desenvolver tags mais simples (Simple Tags e Tag risco de ficar muito 18 2.3.1. MasAPIs 19 Files) ainda assim, você precisará aprender como desenvolver as tags bagunçados. Não seria 2.3.2 Contêiners 19 Clássicas, para as ocasiões absurdamente raras em que nenhuma das outras melhor se pudéssemos 21 2.3.3for capaz Deployment aplicações duas de fazer ode que você quer. 3 Análise de arquiteturas 21 criar tags como as da JSTL 3.1 Como Arquitetura Física Arquitetura Lógica 15.2 funcionam ase Custom Tags? para incrementar nossa 21 3.2 Tipos de aplicações na WEB 21 Ao contrário do que você esteja pensado, construir tags JSP é algo tão aplicação? 3.3 Arquitetura MVC para a Web 21 simples quanto desenvolver uma classe Java normal ou um Servlet. Para usar 3.4 Custom Vantagens da arquitetura 22 JSP Tags, você precisa definirMVC separadamente três componentes: 4 Ambiente de desenvolvimento 23 - a classe tag handler (manipulador da tag) que define o 4.1 Tomcat 23 comportamento da tag 4.1.1 - o Instalar Java JSE SDK (JDK) 24 tag library descriptor (descritor da biblioteca de tag) que define um 4.1.2 arquivo Qual versão de JDK utilizar 24 XML contendo elementos que são mapeados para a 4.1.2.1 implementação JAVA_HOME da tag e 24 4.2 Instalar Tomcat 25 - um arquivo JSP que usa a tag library. 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 15.2.1 A classe Tag Handler 4.2.2.1 [Windows] Tomcat como serviço 25 Quando definimos uma nova tag, sua primeira tarefa é definir uma classe Java que diz ao sistema o que 4.2.2.2 Tomcat como processo 26 fazer quando encontrar a declaração da tag. Esta classe deve implementar a interface javax.servlet.jsp.tagext.Tag. 4.3 Testar Tomcat 26 Você normalmente conseguirá isto, fazendo herança da classe TagSupport ou BodyTagSupport. 4.4 Criar contexto de desenvolvimento 26 A Listagem 15.1 é um exemplo de uma tag simples que insere o texto Exemplo Custom Tag 4.4.1 Estrutura de diretórios 26 (tags.TagExemplo) em uma página JSP que faça uso da mesma. Não se preocupe em entender de imediato o 4.4.2 Criar contexto de aplicação web 27 comportamento exato desta classe – isso será explicado nas próximas seções. Por agora, somente atente para o fato 4.4.3 Configurar contexto: web.xml 27 de que a classe TagExemplo está faz parte do pacote tags. Consequentemente, a classe deverá ser colocada dentro 4.4.4 Ativar contexto 29 de um subdiretório tags dentro de ../WEB-INF/classes, da mesma forma que um servlet. 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 public class TagExemplo extends TagSupport { 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 public int doStartTag() { 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 116 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 129 www.3way.com.br Java WEB Java WEB try { Sumário JspWriter out = pageContext.getOut(); out.print("Exemplo Custom tag " + 1 JDBC 8 "(tags.TagExemplo)"); 1.1 Banco de Dados Relacional 8 } catch(IOException ioe) { 1.2 JDBC – Java Database Connectivity 8 System.out.println("Erro em TagExemplo: " + ioe); 1.2.1 java.sql.DriverManager 8 } 1.3 Fábrica de Conexões 9 (SKIP_BODY ); 1.4 Criarreturn Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 } 1.6 11 } Inserindo Dados 1.7 Fechando a Conexão 12 O arquivo descritor de Listagem 15.1 – Exemplo de Custom Tag 1.8 PreparedStatement ou Statement 12 biblioteca de tags deve ter 1.9 Design Patterns 13 15.2.2 Descritor de Tag Library extensão .tld, 1.9.1 Arquivo DAO – Data Access Object 13 vez definido o tag handler, sua próxima tarefa é identificar a classe 1.9.2 Uma Pesquisando diferentemente do 14 para e associando-a uma tag XML, apropriada, do descritor de 1.9.3o servidor Recurso avaçando: Ocom Cursor 15 web.xml. tags. 15.2 mostra um arquivo (em formato XML), ele contém 1.9.4 A Listagem Alteração 16 algumas informações fixas como: nome da sua biblioteca, uma descrição 1.9.5 Exclusão 16 resumida e Introdução um série de descrição. A parte não negritada da listagem é 2 a tags Java de Enterprise Edition 17 comum, e virtual igual, todos os arquivos descritores de tags, podendo ser 2.1 Porque Java para EE tem sido tão utilizado? 17 copiado para descritores de forma literal. 2.2 O novos que é arquivos Java Enterprise Edition? 18 2.3 A que plataforma Java Enterprise 18 Note o elemento tag defineEdition o nome principal da tag e identifica a 2.3.1 que manipula APIs 19 classe a tag. O nome completamente qualificado da classe deve 2.3.2 Contêiners 19 ser usado. A classe deve ser colocada em qualquer lugar que seu servidor aceite 2.3.3 local de Deployment 21 como instalação de de aplicações beans ou qualquer outra classe de suporte. 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 <?xml version="1.0" encoding="UTF-8" ?> 3.2 Tipos de aplicações na WEB 21 <!DOCTYPE taglib aplicação MVC real o 3.3Em uma Arquitetura para a PUBLIC Web "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" 21 3.4local mais Vantagens dapara arquitetura MVC 22 indicado "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd"> 4 colocação Ambiente de desenvolvimento 23 do TLD será <taglib> 4.1 Tomcat 23 dentroInstalar do subdiretório <tlib-version>1.0</tlib-version> 4.1.1 Java JSE SDK (JDK) 24 WEB-INF , assim o arquivo <jsp-version>1.2</jsp-version> 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 <short-name>exemplo-tags</short-name> poderá ser reutilizado por 4.2 Instalar Tomcat 25 <uri>http://minha.empresa.br/exemplo-taglib</uri> diferentes páginas em 4.2.1 Qual versão de Tomcat utilizar 25 <description> múltiplos diretórios,além 4.2.2 Iniciar e parar o Tomcat 25 Uma simples tag library de previnir que o usuário 4.2.2.1 [Windows] Tomcat como serviço 25 </description> 4.2.2.2 Tomcat como processo 26 final possa acessar o <tag> 4.3 Tomcat 26 arquivo Testar TLD diretamente. <name>exemplo</name> 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios <tag-class>tags.TagExemplo</tag-class> 26 4.4.2 Criar contexto de aplicação web 27 <body-content>empty</body-content> 4.4.3 Configurar contexto: web.xml 27 <description>Exemplo simples: insere uma na saída</description> 4.4.4 Ativar contexto 29 </tag> 4.4.5 Testar contexto 29 </taglib> 4.5 Bibliotecas Servlet 29 4.6 4.7 4.8 4.9 Testar seus servlets Testar seus JSPs Logs Variáveis de Ambiente Listagem 15.2 – Descritor da tag tagexemplo.tld os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 30 31 31 32 117 1 130 Java WEB Java WEB 15.2.3 O Arquivo JSP Sumário Depois 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, precisamos 1 JDBC 8 adicionar a diretiva: 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 <%@ taglib uri="..." prefix="..." %> 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 A diretiva requer um atributo uri que pode ser absoluto ou relativo à URL. Por enquanto, nós iremos utilizar 1.4 Criar Banco de Dados e Tabelas 10 uma URL relativa, bem simples, que corresponde a uma descritor de arquivo TLD colocado no mesmo diretório da 1.5 Classes – Entidades página JSP que faz Javabeans uso da tag. Adicionalmente, você pode usar o arquivo web.xml para mudar o significado 10 do 1.6 Inserindo Dados 11 literal string fornecido ao atributo uri da diretiva taglib, veja o elemento taglib do web.xml. 1.7 Fechando a Conexão O atributo prefix , também obrigatório, especifica um prefixo que será usado como nome da tag definida 12 no 1.8 PreparedStatement Statement 12 descritor de tags. Por exemplo, ou se o arquivo TLD defini uma tag nomeado como tag1 e o atributo prefix tem como 1.9 o literal Design Patterns 13 valor teste, então o nome corrente da tag será teste:tag1. Esta tag será usada, dependendo se ela está 1.9.1 DAO – Data Access Object 13 definida como uma tag que aceita um corpo, de duas das seguintes maneiras: 1.9.2 Pesquisando 14 1.9.3 <test:tag1>Qualquer Recurso avaçando: O Cursor 15 JSP</test:tag1> 1.9.4 Alteração 16 1.9.5 16 ou apenas Exclusão 2 Introdução a Java Enterprise Edition 17 <test:tag1 /> 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 Para o descritor definido na Listagem 15.2 esta nomeado como tagexemplo.tld e reside 18 no 2.3 A demonstrar, plataforma Java Enterprise Edition mesmo 2.3.1 diretório APIs da página JSP mostrada na Listagem 15.3. Daí, o JSP usa a diretiva taglib com uma simples URL 19 relativa, dando somente o nome do arquivo ao atributo uri , como mostrado abaixo: 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 <HTML> 3 Análise de arquiteturas 21 <HEAD>Física e Arquitetura Lógica 3.1 Arquitetura 21 3.2 Tipos de aplicações na WEB 21 <%@ taglib uri="tagexemplo.tld" prefix="mtag" %> 3.3 Arquitetura <TITLE><mtag:example MVC para a Web 21 /></TITLE> 3.4 Vantagens da arquitetura MVC 22 </HEAD> 4 Ambiente de desenvolvimento 23 <BODY> 4.1 Tomcat 23 <H1><mtag:exemplo /></H1> 4.1.1 Instalar Java JSE SDK (JDK) 24 /> 4.1.2 Qual versão <mtag:exemplo de JDK utilizar 24 </BODY> 4.1.2.1 JAVA_HOME 24 </HTML> 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 Listagem 15.3 – JSP usando a custom tag Exemplo 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 16. Tag File 4.2.2.2 Tomcat como processo 26 4.3 O que Testar Tomcat 26 16.1 é um Tag File 4.4 Criar demais desenvolvimento 26 Uma Tagcontexto File nada é do que um pequeno código de arquivo JSP. A sua função é justamente criar 4.4.1 Estrutura de diretórios 26 pequenos fragmentos de códigos para um determinado fim. Ela ajuda na organização e design da sua aplicação, 4.4.2 Criar contexto de aplicação web 27, retirando uma fatia de códigos comuns e repetitivos das suas páginas JSP. Suporta EL, JSTL e qualquer tag libs 4.4.3 Configurar contexto: web.xml 27 incluindo tags de frameworks, como por exemplo as tags do Struts. 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 16.2 Utilizando Tag Files em uma página JSP 4.5 Bibliotecas Servlet 29 Com Tag Files você pode invocar conteúdo reutilizável usando um tag customizada, em vez dos genéricos 4.6 Testar seus servlets 30 <jsp:include> ou <c:import> . Numa comparação mais grosseira podemos ver as Tag Files como includes mais 4.7 Testar seus JSPs 31 poderosos. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 118 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 132 www.3way.com.br Java WEB Java WEB Tão simples quanto parece, um tag file é um arquivo contendo código JSP que tem como extensão .tag ou Sumário .tagx . De fato, o único elemento JSP que não pode ser usado num tag file são as diretivas page. Par demonstrar como funciona, façamos um simples exemplo. A Listagem 16.1 mostra uma sequência de seis números. 1 JDBC 8 1.1 Banco de Dados Relacional 8 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 <c:forTokens items="0 1 1 2 3 5" delims=" " var="fibNum"> 1.3 Fábrica de Conexões 9 <c:out value="${fibNum}"/> 1.4 Criar Banco de Dados e Tabelas 10 </c:forTokens> 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados Listagem 16.1 – exemplo.tag 11 Diferentemente das tags 1.7 Fechando a Conexão 12 clássicas, Tag Files não 1.8 PreparedStatement ou Statement 12 A Listagem 16.1 contém somente código JSP, que faz uso da ação implementa uma classe 1.9 Design Patterns 13 forTokens, da JSTL e de expressões EL. A Listagem 16.2, usa a tag file, da Listagem com manipulador de tag. 1.9.1 DAO – Data Access Object 13 16.1 e mostra o resultado. 1.9.2 Pesquisando 14 1.9.3 <%@ Recurso avaçando: O Cursor 15 taglib prefix="ex" tagdir="/WEB-INF/tags" %> 1.9.4 <html> Alteração 16 1.9.5 <body> Exclusão 16 2 Introdução a Java Enterprise Edition 17 Os primeiros seis números da seqüência de 2.1 Porque Java EE tem sido tão utilizado? 17 Fibonacci são: 2.2 O que é Java Enterprise Edition? 18 <ex:exemplo/> 2.3 A plataforma Java Enterprise Edition 18 </body> 2.3.1 </html> APIs 19 2.3.2 Contêiners 19 Listagem 16.2 example.jsp 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 Pode parecer trivial, mas este novo recurso é importante. A chave é a simplicidade. Você não precisa ter 3.1 Arquitetura Física e Arquitetura Lógica 21 conhecimento de programação em Java para construir novas tags com tag files. Você não precisa, necessariamente, 3.2 Tipos de aplicações na WEB 21 de arquivos descritores de tag. A nova especificação (JSP 2.0), tornou simples a integração de tag file com um JSP. 3.3 Arquitetura MVC para a Web 21 Você só precisa seguir dois passo: 3.4 Vantagens da arquitetura MVC 22 - adicionar a diretiva taglib ao JSP com um atributo prefix e o atributo tagdir apontando para /WEB-INF/tags. 4 Ambiente de desenvolvimento 23 - coloque a tag contendo o prefixo e o nome do tag file (sem a extensão) em qualquer lugar em que o JSP 4.1 Tomcat 23 necessite usar a tag. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Este processo levanta uma questão importante. Se uma tag clássica necessita de TLDs para localizar suas 4.1.2.1 JAVA_HOME 24 classes, como estasTomcat tag files são localizadas? Par responder isto, nós precisamos saber como o contêiner acessa e 4.2 Instalar 25 processa as tag files. 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 16.3 Tag [Windows] Files empacotados 4.2.2.1 Tomcat como serviço 25 ficar mais fácil e rápido, no exemplo da Listagem 16.1, nos colocamos a tag file no diretório WEB4.2.2.2 Para Tomcat como processo 26 4.3 Testar Tomcat 26 INF/tags , com isso não foi preciso gerar um jar para tag. Isto foi necessário porque o contêiner verifica 4.4 Criar contexto de desenvolvimento 26 automaticamente pelos tag files dentro deste diretório. 4.4.1 Mas Estrutura de diretórios 26 se você quiser colocar suas tags dentro de um JAR a situação muda. Neste caso você precisará criar 4.4.2 Criar contexto de aplicação web 27 um arquivo TLD. Este descritor de tag é similar aos TLDs das tags clássicas, mas ao invés de associar tags a uma 4.4.3 Configurar contexto: web.xml 27 classe de manipulador de tag, ele irá associar um nome a um tag file e seu caminho. 4.4.4 Ativar contexto 29 tornar isto possível, o TLD do tag file usa um elemento <tag-file> no lugar de <tag>. Os únicos 4.4.5 Para Testar contexto 29 subelementos necessários são <name>, que especifica o nome do arquivo sem a extensão e <path>, que especifica 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 o caminho para o arquivo de tag. Entretanto, <path> deve começar com /META-INF/tags. Aqui temos um exemplo 4.7 Testar seus JSPs 31 de TLD para um tag file empacotado. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 119 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 133 www.3way.com.br Java WEB Java WEB <taglib> ... <uri>http://minha.empresa.com/tagfile/exemplo</uri> <tag-file> JDBC <name>exemplo</name> Banco de Dados Relacional <path>/META-INF/tags/exemplo.tag</path> JDBC – Java Database Connectivity </tag-file> java.sql.DriverManager </taglib> Sumário 1 8 1.1 8 1.2 8 1.2.1 8 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 Este arquivo deve ser colocado dentro do diretório META-INF e o tag file(s) deverão estar em META-INF/tags 1.5em um subdiretório. Classes Javabeans – Entidades 10 ou Um exemplo da estrutura de diretório segue abaixo: 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 META-INF/ 1.8 PreparedStatement ou Statement 12 exemplo.tld 1.9 Design Patterns 13 1.9.1 DAOtags/ – Data Access Object 13 exemplo.tag 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Uma Alteração 16 vez que o tag file não se encontra dentro ou abaixo de /WEB-INF/tags, você não poderá usar o 1.9.5 Exclusão 16 atributo tagdir na diretiva taglib. A invés disto, você precisa especificar a URI definida no seu TLD 2 Introdução a Java Enterprise Edition 17 (http://minha.empresa.com/tagfile/exemplo) usando o atributo uri. Para nosso exemplo, Listagem 16.2, a diretiva 2.1 Porque Java EE tem sido tão utilizado? 17 taglib deverá ser usada com segue: 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 taglib prefix="ex" uri="http://minha.empresa.com/tagfile/exemplo" %> 2.3.1 <%@APIs 19 2.3.2 Contêiners 19 diferença de importante entre TLDs de tag file e TLDs de tags clássicas, são relativos aos elementos 2.3.3 Outra Deployment aplicações 21 <attribute> e <body-content> . As tags clássicas podem conter esta informação dentro de seus TLDs, tag files não. 3 Análise de arquiteturas 21 3.1 tag files Arquitetura e Arquitetura Lógica Os usam um Física conjunto de diretivas especiais. Elas dizem ao contêiner como processar o tag file21 , é 3.2 Tipos de aplicações na WEB 21 importante entender como elas funcionam. 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 16.4 Diretivas Tag files removeu a23 4 Ambiente de desenvolvimento JSP Tomcat contém três tipos diferentes de diretivas: page, taglib e include. Tag files 4.1 diretiva page e 23 possui , cria e inicializa 4.1.1 variable Instalar Java JSE SDK uma (JDK)variável usada no processamento da tag. A tag, adicionou outras 24 diz ao web contêiner como processar 4.1.2 Qual versão de JDK utilizaro tag file. A attribute, descreve os atributos que 24 três: variable, tag e podem ser usados na tag. Vejamos as duas últimas. 4.1.2.1 JAVA_HOME 24 attribute. 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 16.4.1 tag 4.2.2 A nova Iniciar e parar o ,Tomcat 25 diretiva, tag funciona como a diretiva page em um JSP. Ela fornece ao 4.2.2.1 [Windows] Tomcat como serviço 25 web contêiner um conjunto de configuração a ser usado por todo o arquivo de tag. 4.2.2.2 Um Tomcat como processo 26 atributo que não paralelo no JSP é dynamic-attributes. Ele age como o 4.3 Testar Tomcat 26 subelemento <dynamic-attributes> do TLD, mas ao invés de informar atributos para 4.4 Criar contexto de desenvolvimento 26 um método em Java, o web contêiner atualiza as variáveis locais especificadas pela 4.4.1 Estrutura de diretórios 26 diretiva. 4.4.2 Por Criar contexto de aplicação web usa a diretiva tag para enviar dados ao 27 exemplo, o seguinte tag file 4.4.3 Configurar contexto: web.xml 27 atributo dinâmico. Estes dados são mostrados com tag de ação forEach da JSTL. 4.4.4 Ativar contexto 29 4.4.5 <%@Testar contexto 29 taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 <%@ tag dynamic-attributes="atributo" %> 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 120 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 134 www.3way.com.br Java WEB Java WEB <c:forEach items="${atributo}" var="localVar"> ${localVar.value}<br> Sumário 1 JDBC 8 Listagem 16.3 – dinatributo.tag, tag file e atributos dinâmicos 1.1 Banco de Dados Relacional 8 O código Listagem 16.4, mostra como usar a tag file (dinatributo.tag, Listagem 16.3) e como 1.2 JDBC –JSP, Javana Database Connectivity 8 configurar valores para os atributos da tag. Quando o JSP for invocado ele mostrará uma lista de valores. 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 <%@Criar taglib tagdir="/WEB-INF/tags" %> 1.4 Bancoprefix="dyn" de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 <html><body> 1.6 Inserindo Dados 11 <dyn:dinatributo atr1="primeiro" atr2="segundo" atr3="terceiro"/> 1.7 Fechando a Conexão 12 <dyn:dinatributo x="a" y="b" z="d"/> 1.8 PreparedStatement ou Statement 12 </body></html> 1.9 Design Patterns 13 Listagem 16.4 – atributo-dinamico.jsp 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 16.4.2 attribute 1.9.3 Atributos Recurso avaçando: O Cursor 15 dinâmicos são bastante flexíveis, mas se você souber quais atributos sua tag irá precisar você 1.9.4 Alteração 16 poderá informá-las ao web contêiner usando atributos estáticos. As tags tradicionais tem o subelemento 1.9.5 Exclusão <attribute> no TLD para tal propósito. Mas para configurar um conjunto de atributos na tag file nos precisamos 16 da 2 Introdução a Java Enterprise Edition 17 diretiva attribute . 2.1 Porque name Java EE tem sido tãoidentificação utilizado? required e informa ao contêiner 17 O atributo fornece uma 2.2 é Java Enterprise Edition? 18 se atributo O é que obrigatório e rtexprvalue informa ao contêiner que o valor do atributo 2.3 ser obtido A plataforma Java pode em tempo de Enterprise execução. Edition Os atributos 18 2.3.1 Vejamos APIs um exemplo simples para demonstrar o uso destas diretivas em um associados com a 19 2.3.2 Contêiners 19 tag file. diretiva attribute são 2.3.3 Deployment de aplicações 21 similares aos 3 Análise de arquiteturas 21 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" 3.1 Arquitetura%> Física e Arquitetura Lógica prefix="c" subelementos do 21 3.2 Tipos de aplicações na WEB 21 <%@ attribute name="sim_ou_nao" required="true" %> elemento <tag> nos 3.3 Arquitetura MVC para a Web 21 TLDs . 3.4 Vantagens da arquitetura MVC 22 <c:choose> 4 Ambiente de desenvolvimento 23 <c:when test='${sim_ou_nao == "sim"}'> 4.1 Tomcat 23 Penta 4.1.1 Instalar Java campeão JSE SDK (JDK) 24 </c:when> 4.1.2 Qual versão de JDK utilizar 24 <c:otherwise> 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 Quero hexa ! Campeão, Brasil 4.2.1 Qual versão de Tomcat utilizar 25 </c:otherwise> 4.2.2 </c:choose> Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 Listagem 16.5 – estatributo.tag 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcatcódigo JSP usa a tag file e configura o atributo: 26 Então, o seguinte 4.4 Criar contexto de desenvolvimento 26 4.4.1 <%@Estrutura de diretórios 26 taglib prefix="atr" tagdir="/WEB-INF/tags" %> 4.4.2 <html> Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 <body> 4.4.4 Ativar contexto 29 <atr:estatributo sim_ou_nao="sim" /> 4.4.5 Testar contexto 29 </body> 4.5 Bibliotecas Servlet 29 </html> 4.6 Testar seus servlets 30 Listagem 16.6 – estatributo.jsp 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 121 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 135 www.3way.com.br </c:forEach> Java WEB Java WEB A diretiva attribute também permite que você insira code JSP dentro de atributos estáticos simplesmente Sumário configurando o atributo fragment para true. Entretanto, para processar esse fragmento, você precisará de recursos extras, fora do escopo das diretivas de tag file, ou seja, você vai precisar de novas ações padrões. 1 JDBC 8 1.1 Banco de Dados Relacional 8 16.4.3 variable 1.2 JDBC – Java Database Connectivity 8 Tag files podem atribuir e mostrar variáveis, este recurso é fornecido pela diretiva variable. Esta diretiva 1.2.1 java.sql.DriverManager 8 funciona como o subelemento <variable> na TLD das tags clássicas. Você pode usar o atributo scope para definir 1.3 Fábrica de Conexões 9 sua visibilidade, name-given e name-from-attribute para nomear a variável. A única diferença é o atributo alias, 1.4 Criar Banco de Dados e Tabelas 10 que fornece uma nome local para uma variável quando seu nome real é determinado pelo atributo value usando 1.5 Classes Javabeans – Entidades 10 name-from-attribute. 1.6 Inserindo Dados 11 Como exemplo, se tag file contém a diretiva <%@ variable name-given="x" %> então o JSP pode configurar 1.7 Fechando a Conexão 12 o valor da variável com ação JSTL 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 <c:set var= "x"> 1.9.1 DAO – Data Access Object 13 Hurra! 1.9.2 </c:set> Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 este valor dentro de um JSP com ${x}. Um consideração importante a respeito desta diretiva é 1.9.4 e mostrar Alteração 16 que não é preciso um script de declaração para declarar um variável no JSP. 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 16.5 Standard Actions 2.2 que é Java JSP O fornece umEnterprise conjuntoEdition? de ações padrão (standard actions), permitindo que você direcione18 o 2.3 A plataforma Java Enterprise Edition 18 processamento da página a ser realizado pelo web contêiner. Tag files podem utilizar todas as ações JSP e mais 2.3.1 <jsp:invoke> APIs que usa o fragmento declarado pela diretiva attribute e <jsp:doBody> que processa o corpo 19 duas: da 2.3.2 Contêiners 19 tag. 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 16.5.1 <jsp:invoke/> 3.1 Arquitetura Física e Arquitetura Lógica do corpo da tag pela chamado do método getJspBody(), que 21 As classes SimpleTag obtém o conteúdo 3.2 Tipos de aplicações na WEB 21 retorna um JspFrament. Então, para direcionar o resultado do fragmento para JspWrite, o manipulador da tag 3.3 Arquitetura MVC para a Web chama o método invoke(). O argumento deste método determina que objeto JspWrite irá receber a saída 21 do 3.4 Vantagens da arquitetura MVC 22 fragmento. 4 Ambiente de desenvolvimento 23 A ação <jsp:invoke> realiza essencialmente a mesma função do método invoke(), mas ela é usada com 4.1 Tomcat como fragmentos, não podendo ser utilizados com conteúdo do corpo. Além disto, esta ação 23 atributos declarados 4.1.1 fazer mais Instalar Java JSE SDK (JDK) 24 pode com JspFragment do que somente direcionar este fragmento para o 4.1.2 Qual versão de JDK utilizar 24 JspWrite. Ela pode converter os fragmentos para String ou num objeto Reader. Assim como acontece 4.1.2.1 De todos JAVA_HOME 24 os atributos, somente fragment é obrigatório na ação <jsp:invoke>. 4.2 Tomcat Se nem var Instalar ou varReader estiver configurado, então o JspFragment será direcionado com SimpleTag, tag 25 4.2.1 Qual versão de Tomcat utilizar para JspWrite padrão. Se uma delas, var ou varReader for configurada, mas scope files não podem 25 4.2.2 Iniciar e parar o Tomcat 25 não, então o escopo do fragmento será page. processar elementos25 4.2.2.1 A Listagem [Windows] Tomcat como serviço 16.6 apresenta uma tag file que usa <jsp:invoke>. O atributo de script (declarações, 4.2.2.2 , obrigatório, Tomcat comoesta processo 26 fragment especificado com valor frag, cujo valor será um 4.3 Testar Tomcat 26 JspFragment . Então dependendo do valor de proc, ele retorna o fragmento para o expressões, scriptlets) 4.4 Criar contexto de desenvolvimento 26 JSP como uma variável String. dentro do conteúdo do 4.4.1 Estrutura de diretórios 26 corpo. 4.4.2taglib Criar contexto de aplicação web 27 <%@ uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4.4.3 Configurar contexto: web.xml 27 <%@ attribute name="frag" required="true" fragment="true"%> 4.4.4 Ativar contexto 29 <%@ attribute name="proc" required="true" %> 4.4.5 Testar contexto 29 <c:if test='${proc == "yes"}'> 4.5 Bibliotecas Servlet 29 <jsp:invoke fragment="frag"/> 4.6 Testar seus servlets 30 </c:if> 4.7 Testar seus JSPs 31 Listagem 16.6 - invokeaction.tag 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 122 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 136 www.3way.com.br Java WEB Java WEB Sumário A Listagem 16.7, apresenta o JSP necessário para testar esta tag file. Primeiro, ele incorpora a tag e configura o valor de proc para yes. Então, usando a ação <jsp:attribute>, ele especifica uma linha de código JSP que 1 o valorJDBC 8 será do atributo frag. 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 <%@ taglib prefix="inv" tagdir="/WEB-INF/tags" %> 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 <html> 1.4 Criar Banco de Dados e Tabelas 10 <body> 1.5 Classes Javabeans – Entidades 10 <inv:invokeaction proc="yes"> 1.6 Inserindo Dados 11 <jsp:attribute 1.7 Fechando a Conexão name="frag"> 12 dois + doisou = Statement ${2+2} 1.8 PreparedStatement 12 1.9 Design Patterns 13 </jsp:attribute> 1.9.1 DAO – Data Access Object 13 </inv:invokeaction> 1.9.2 </body> Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 </html> 1.9.4 Alteração 16 Listagem 16.7 - invokeaction.jsp 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 Tudo que fizemos aqui foi aprender como configurar e processar atributos num tag file. Agora veremos 2.1 Porque Java EE tem sido tão utilizado? 17 como tag files fazem para usar informações entre as tags. 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 16.5.2 <jsp:doBody/> 2.3.1 A ação APIs <jsp:doBody> funciona como o <jsp:invoke>, mas ele recebe o corpo da tag ao invés do atributo. 19 Ele 2.3.2 Contêiners 19 contém os mesmos atributos de que <jsp:invoke>, com exceção de fragment. Então, quando a tag file recebe o 2.3.3 Deployment de aplicações 21 conteúdo do corpo, ela pode manipulá-lo de três formas: 3 Análise de arquiteturas 21 - mostrá-lo com o JspWriter padrão; 3.1 Arquitetura Física e Arquitetura Lógica var; 21 - enviá-lo para uma variável com o atributo 3.2 Tipos de aplicações na WEB 21 - armazená-lo como um objeto Reader com o atributo varReader. 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC o conteúdo do corpo de acordo como o atributo att. Quando att é igual 22 A tag file da Listagem 16.8 processa 4 Ambiente de desenvolvimento var, ele será armazenado numa variável e quando att for igual reader, ele será armazenado num objeto Reader.23 Se 4.1 Tomcat 23 att não for especificado, o padrão é que JspWriter mostre o conteúdo como saída. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 <%@Qual versão de JDK utilizar 24 taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 4.1.2.1 JAVA_HOME 24 <%@ attribute name="att" required="true" %> 4.2 Instalar Tomcat 25 4.2.1 <c:choose> Qual versão de Tomcat utilizar 25 <c:when test='${att == "var"}'> 4.2.2 Iniciar e parar o Tomcat 25 <jsp:doBody var="var" 4.2.2.1 [Windows] Tomcat como serviço scope="application"/> 25 </c:when> 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 <c:when test='${att == "reader"}'> 4.4.1 Estrutura de diretórios 26 <jsp:doBody varReader="bodyReader" /> 4.4.2 Criar contexto de aplicação web 27 </c:when> 4.4.3 Configurar contexto: web.xml 27 <c:otherwise > 4.4.4 Ativar contexto 29 <jsp:doBody /> 4.4.5 Testar contexto 29 </c:otherwise> 4.5 Bibliotecas Servlet 29 </c:choose> 4.6 Testar seus servlets 30 Listagem 16.8 - bodyaction.tag 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 123 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 137 www.3way.com.br Java WEB Java WEB O JSP na Listagem 16.9, realiza dois trabalhos. Primeiro, ele acessa a tag file e configura o atributo att para Sumário var . Então, usando EL, ele mostra a variável contendo o corpo da tag. 1 JDBC 8 <%@ taglib prefix="corpo" tagdir="/WEB-INF/tags" %> 1.1 Banco de Dados Relacional 8 <html> 1.2 JDBC – Java Database Connectivity 8 1.2.1 <body> java.sql.DriverManager 8 <corpo:bodyaction att="var"> 1.3 Fábrica de Conexões 9 Este é corpo da tag 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 </corpo:bodyaction > 1.6 Inserindo Dados 11 ${bodyvar} Simple Tags são mais 1.7 Fechando a Conexão 12 </body> 1.8 PreparedStatement ou Statement 12 simples de implementar </html> 1.9 Design Patterns Listagem 16.9 - bodyaction.jsp que as tags clássicas,13 e 1.9.1 DAO – Data Access Object 13 mesmo que tag file, pois 1.9.2 Pesquisando 14 seu objetivo é trabalhar 1.9.3 Recurso 15 17 Simple Tag avaçando: O Cursor 1.9.4 Alteração 16 apenas com a EL, e não 17.1. O que é uma Simple Tag 1.9.5 Exclusão 16 com scripts JSP, porém O JSP 2.0 introduziu uma sérieEdition de novos mecanismos com o intuito de 2 Introdução a Java Enterprise 17 têm o mesmo poder facilitar a vida do desenvolvedor. Com Tags, podem ser criados todos tipos 2.1 Porque Java EE tem sido tãoSimple utilizado? 17 de tags com mais facilidade: desde tags com corpo vazio, passando por tags que, funcional. 2.2 O que é Java Enterprise Edition? 18 dependendo uma determinada condição, incluem ou não seu corpo, e até tags 2.3 A de plataforma Java Enterprise Edition 18 que processam 2.3.1 APIso corpo repetidas vezes. 19 Toda a lógica de processamento de um Simple Tag fica em um único 2.3.2 Contêiners 19 método, doTag(), em uma classe que implementa a interface 2.3.3 Deployment de aplicações 21 javax.servlet.jsp.tagext.SimpleTag 3 Análise de arquiteturas. 21 3.1 Arquitetura Física e Arquitetura Lógica 21 17.2. de Vida. 3.2 Ciclo Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 Quando um JSP invoca uma tag, uma nova instância da classe handler é criada, dois ou mais métodos são 3.4 Vantagens da arquitetura 22 chamados para o handler e quando o MVC método doTag() é finalizado, o objeto handle desaparece, em outras palavras, 4 Ambiente de desenvolvimento 23 estes objetos handler não são reutilizados pelo web contêiner. 4.1 Tomcat 23 4.1.1 Overview Instalardas Javaclasses JSE SDK envolvidas (JDK) 24 17.3. 4.1.2 Uma Qual versão de JDK utilizar 24 Tag handler Simples deve implementar a interface SimpleTag. A maneira mais fácil de fazê-lo é 4.1.2.1 SimpleTagSupport JAVA_HOME 24 estender e substituir apenas o método de que você precisa, doTag(). Você não precisa usar 4.2 Instalar Tomcat 25 SimpleTagSupport , mas 99,99% dos desenvolvedores de tags simples a usam. 4.2.1 A SimpleTagSupport Qual versão de Tomcat utilizar 25 implementa os métodos de SimpleTag, mas o doTag() não faz nada, você precisa 4.2.2 Iniciar etag parar o Tomcat 25 substituí-lo em seu handler . Ela também adiciona três métodos de conveniência, o mais útil é o getJspBody(). 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 Nome Descrição 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 setJspContext() Torna o JspContext disponível para o processamento na tag 4.4.1 Estrutura de diretórios 26 setParent() Chamado pelo web contêiner para tornar a tag pai disponível 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 setJspBody() Permite o processamento do corpo da tag 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 doTag() Chamado pelo web contêiner no começar da operação da SimpleTag 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 getParent() Invocado por classes Java para obter seu JspTag pai 4.7 Testar seus JSPs 31 Tabela C.1 Métodos da interface SimpleTag 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 124 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 138 www.3way.com.br Java WEB Java WEB O primeiro passo é escrever uma classe que estenda SimpleTagSupport: 1 JDBC 8 1.1 Bancojava.io.IOException; de Dados Relacional 8 import 1.2 JDBC – Java Database Connectivity 8 1.2.1 import java.sql.DriverManager 8 javax.servlet.jsp.JspException; 1.3 Fábrica de Conexões 9 import javax.servlet.jsp.tagext.SimpleTagSupport; 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 public class SimpleTag1 extends SimpleTagSupport { 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 } 1.9 13 } Design Patterns 1.9.1 DAO – Data Access Object 13 Listagem 17.1 – SimpleTag1.java 1.9.2 Pesquisando 14 de avaçando: criar a classe é necessário reimplementar o método doTag() oriundo da superclasse 1.9.3 Depois Recurso O Cursor 15 SimpleTagSupport , que por sua vez herdou esse método da interface SimpleTag. 1.9.4 Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 import java.io.IOException; 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O quejavax.servlet.jsp.JspException; é Java Enterprise Edition? 18 import 2.3 A plataforma Java Enterprise Edition 18 import javax.servlet.jsp.tagext.SimpleTagSupport; 2.3.1 APIs 19 2.3.2 Contêiners 19 class de SimpleTag1 2.3.3 public Deployment aplicações extends SimpleTagSupport { 21 3 Análise de arquiteturas 21 publicFísica void doTag() throws 3.1 Arquitetura e Arquitetura Lógica JspException, IOException { 21 3.2 Tipos de aplicações na WEB 21 getJspContext().getOut().print("Simple Tag Handler"); 3.3 Arquitetura MVC para a Web 21 } 3.4 22 } Vantagens da arquitetura MVC 4 Ambiente de desenvolvimento 23 Listagem 17.2 – SimpleTag1.java, com método doTag() 4.1 Tomcat 23 4.1.1 Note Instalar JSE SDK (JDK) 24 que o Java método doTag() declara uma IOException, então não é preciso tratar a exceção com um bloca 4.1.2 Qual versão de JDK utilizar 24 try/catch. 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 17.5. Mapeamento de tlds em páginas Jsp. 4.2.1 CrieQual versão de Tomcat utilizar 25 um TLD para a tag. 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 <?xml [Windows] Tomcat como serviço 25 version="1.0" encoding="UTF-8" ?> 4.2.2.2 Tomcat como processo 26 <taglib xmlns="http://java.sun.com/xml/ns/j2ee" 4.3 Testar Tomcat 26 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4.4 Criar contexto de desenvolvimento 26 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 4.4.1 Estrutura de diretórios 26 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 4.4.2 Criar contexto de aplicação web 27 version="2.0"> 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 <description>Minha biblioteca SimpleTag</description> 4.5 Bibliotecas Servlet 29 <tlib-version>1.0</tlib-version> 4.6 Testar seus servlets 30 <short-name>BibliotecaSimpleTag</short-name> 4.7 Testar seus JSPs 31 <uri>simpleTags</uri> 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 125 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 139 www.3way.com.br Sumário 17.4. Criando SimpleTags Java WEB Java WEB <tag> <description>Minha Tag</description> <name>minhaTag</name> Sumário 1 JDBC 8 <tag-class>SimpleTag1</tag-class> 1.1 Banco de Dados Relacional 8 <body-content>empty</body-content> 1.2 JDBC – Java Database Connectivity 8 </tag> 1.2.1 java.sql.DriverManager 8 </taglib> 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas Listagem 17.3 – TLD para SimpleTag1 10 1.5 Classes Javabeans – Entidades 10 Coloque a TLD dentro de WEB-INF e a tag handler dentro de WEB-INF/classes , usando a estrutura de 1.6 Inserindo Dados 11 diretórios do pacote. As classes Tag Handler vão para o mesmo lugar onde todas as outras classes Java da aplicação 1.7 Fechando a Conexão 12 web Escrevendo um JSP que use a tag. 1.8 forem.PreparedStatement ou Statement 12 1.9 Design Patterns 13 <%@ language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> 1.9.1page DAO – Data Access Object 13 <%@ prefix="tag" uri="simpleTags" %> 1.9.2taglib Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 1.9.5 Exclusão 16 "http://www.w3.org/TR/html4/loose.dtd"> 2 Introdução a Java Enterprise Edition 17 <html> 2.1 Porque Java EE tem sido tão utilizado? 17 <head> 2.2 O que é Java Enterprise Edition? 18 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 2.3 A plataforma Java Enterprise Edition 18 <title>Testando Simple Tags</title> 2.3.1 APIs 19 </head> 2.3.2 Contêiners 19 2.3.3 <body> Deployment de aplicações 21 <tag:minhaTag/> 3 Análise de arquiteturas 21 </body> 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 </html> Listagem 17.4 – Usando SimpleTag1 com SimpleTag1.jsp 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente 23 17.6 Corpo da Tag de desenvolvimento 4.1 Tomcat 23 Se a tag precisar de um corpo, o <body-content> do TLD precisa refletir isso e é necessário adicionar um 4.1.1 Instalarno Java JSE SDK (JDK). 24 comando especial método doTag() 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 24 <%@ page JAVA_HOME language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> 4.2 Instalar Tomcat 25 <%@ taglib prefix="tag" uri="simpleTags" %> 4.2.1 Qual versão de Tomcat utilizar 25 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 4.2.2 Iniciar e parar o Tomcat 25 "http://www.w3.org/TR/html4/loose.dtd"> 4.2.2.1 [Windows] Tomcat como serviço 25 <html> 4.2.2.2 Tomcat como processo 26 <head> 4.3 Testar Tomcat 26 http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4.4 Criar<meta contexto de desenvolvimento 26 <title>Insert 4.4.1 Estrutura de diretórios title here</title> 26 4.4.2 </head> Criar contexto de aplicação web 27 4.4.3 <body> Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 <tag:minhaTag> Isto é um corpo </tag:minhaTag> 4.4.5 </body> Testar contexto 29 4.5 Bibliotecas Servlet 29 </html> 4.6 Testar seus servlets 30 Listagem 17.5 – Tag com corpo 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 126 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 140 www.3way.com.br Java WEB Java WEB Para que o JSP acima funcione, é necessário modificar o método doTag() da classe SimpleTag1 conforme Sumário abaixo: 1 JDBC 8 public void doTag() throws JspException, IOException { 1.1 Banco de Dados Relacional 8 getJspBody().invoke(null); 1.2 JDBC – Java Database Connectivity 8 getJspContext().getOut().print("<br>Simple Tag Handler"); 1.2.1 java.sql.DriverManager 8 } 1.3 Fábrica de Conexões 9 Listagem 17.6 – doTag() com suporte a um corpo 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 Você deverá informar essa nova opção em seu arquivo TLD: 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 <?xml version="1.0" encoding="UTF-8" ?> 1.9 Design Patterns 13 xmlns="http://java.sun.com/xml/ns/j2ee" 1.9.1 <taglib DAO – Data Access Object 13 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 1.9.2 Pesquisando 14 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 1.9.5 Exclusão 16 version="2.0"> 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 <description>Minha biblioteca SimpleTag</description> 2.2 O que é Java Enterprise Edition? 18 <tlib-version>1.0</tlib-version> 2.3 A plataforma Java Enterprise Edition 18 <short-name>BibliotecaSimpleTag</short-name> 2.3.1 APIs 19 <uri>simpleTags</uri> 2.3.2 Contêiners 19 <tag> 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 <description>Minha Tag</description> 3.1 Arquitetura <name>minhaTag</name> Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 <tag-class>lab10.SimpleTag1</tag-class> 3.3 Arquitetura MVC para a Web 21 <body-content>scriptless</body-content> 3.4 Vantagens da arquitetura MVC 22 </tag> 4 Ambiente de desenvolvimento 23 </taglib> 4.1 Tomcat 23 Listagem 17.6 – Recofigurando simpleTags.tld 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 17.7. Tópicos Avançados: definindo atributos. 4.1.2.1 JAVA_HOME 24 Imagine que você tenha uma tag com um corpo que usa uma expressão EL como atributo. Agora imagine 4.2 Instalar Tomcat 25 que o atributo não exista no momento em que você invoca a tag! Em outras palavras, o corpo da tag depende que a 4.2.1 Qual versão de Tomcat utilizar 25 tag handler defina o atributo. 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 <tag:minhaTag> Tomcat como processo 26 A mensagem é: ${mensagem } </tag:minhaTag> 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 No ponto em que a tag é invocada, “mensagem” não é um atributo dentro do escopo! Se você tirasse esta 4.4.1 Estrutura de diretórios 26 expressão da tag, ela retornaria nula. Para definir o atributo mensagem usamos o método setAttribute: 4.4.2 Criar contexto de aplicação web 27 4.4.3 public Configurar contexto: web.xml 27 void doTag() throws JspException, IOException { 4.4.4 Ativar contexto 29 getJspContext().setAttribute("mensagem", "Uma mensagem"); 4.4.5 Testar contexto 29 getJspBody().invoke(null); 4.5 Bibliotecas Servlet 29 } 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 127 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 141 www.3way.com.br Java WEB Java WEB É possível configurar um atributo referenciando uma coleção, no exemplo abaixo a expressão EL no corpo Sumário da tag representa um único valor em uma coleção e o objetivo é fazer a tag gerar uma linha para cada elemento da coleção. Simplesmente o método doTag() só precisa fazer o trabalho em um loop, invocando o corpo em cada 1 8 iteração do JDBC loop. 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 <table> 1.2.1 java.sql.DriverManager 8 <tag:minhaTag> 1.3 Fábrica de Conexões 9 <tr><td>${mensagem }</td></tr> 1.4 Criar Banco de Dados e Tabelas 10 </tag:minhaTag> 1.5 Classes Javabeans – Entidades 10 </table> 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 O método doTag() da tag handler: 1.9 Design Patterns 13 1.9.1 String[] DAO – Data Access Object 13 mensagem = {"oi!", "tudo bem?", "Bom dia!", "Boa noite!"}; 1.9.2 Pesquisando 14 1.9.3 public Recurso avaçando: O Cursor 15 void doTag() throws JspException, IOException { 1.9.4 Alteração 16 1.9.5 Exclusão 16 for(String msg : mensagem){ 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 getJspContext().setAttribute("mensagem", msg); 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 getJspBody().invoke(null); 2.3.1 APIs 19 2.3.2 Contêiners 19 } 2.3.3 } Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica Cada loop da tag handler reinicia o valor do atributo “mensagem” e chama getJspContext() novamente. 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 18. HTML e JavaScript 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 18.1 4.1.1 Browsers Instalar Java JSE SDK (JDK) 24 4.1.2 Browsers Qual versão de JDK utilizar são softwares que lêem e interpretam arquivos HTML (Hyper Text Markup Language) enviados 24 na 4.1.2.1Wide JAVA_HOME World Web ( www – Rede Mundial ), formata-os em páginas da Web e os exibe ao usuário. Navegadores 24 da 4.2 também Instalar Tomcat Web podem executar som ou arquivos de vídeo incorporados em documentos da Web se você dispuser 25 do 4.2.1 Qual versão de Tomcat utilizar 25 hardware necessário. 4.2.2 Existem Iniciar e parar opara Tomcat 25 Browsers todos os gostos. Os mais utilizados são o Internet Endereços URL de 25 4.2.2.1 e o [Windows] Tomcat como serviço Explorer Mozilla Firefox , vêm acompanhados de outros programas para Internet, 4.2.2.2 Tomcat como processo como o leitor de Correio Eletrônico (e-mail). Existem outras opções de Browsers, recursos HTTP 26 4.3 escolher Testar basta um Tomcat deles e navegar na Internet. começam com 26 4.4 Criar contexto de desenvolvimento 26 http://. 4.4.1 Estrutura de diretórios 26 18.2 HTTP User-Agent 4.4.2 Criar contexto de aplicação web 27 HTTP é um protocolo da Internet utilizado pelos computadores ligados à Web 4.4.3 Configurar contexto: web.xml 27 para comunicar-se entre si, ativa os navegadores da Web para recuperarem 4.4.4 Ativar contexto 29 informações de servidores da World Wide Web. O protocolo permite a um usuário 4.4.5 Testar contexto 29 usar um programa cliente para entrar em uma URL, ou clicar em um hyperlink, e 4.5 Bibliotecas Servlet 29 recuperar texto, elementos gráficos, som e outras informações digitais de um 4.6 Testar seus servlets 30 servidor da Web. 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 128 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 142 www.3way.com.br Java WEB Java WEB Sumário Esta 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 uma 1 JDBC 8 análise detalhada com fragmentos do produtor URL. Exemplo do User-agent mostrado pelo Firefox: 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 18.4 1.4 O Documento Criar BancoHTML de Dados e Tabelas 10 O primeiro conceito que deve-se ter em mente ao projetar páginas Web é 1.5 Classes Javabeans – Entidades 10 que foi criada para controlar a aparência dos documentos, ao contrário 1.6 HTML não Inserindo Dados Cada navegador 11 dos de e programas de layout de página. As tags de HTML 1.7 processadores Fechando a texto Conexão mostra a página de 12 apenas informam ao navegadorou o Statement que são os elementos que estão na página. Eles 1.8 PreparedStatement 12 uma forma um pouco dizem, que um determinado trecho é o título principal do documento e 1.9 por exemplo, Design Patterns 13 diferente, o que 13 outro item de lista. A formatação 1.9.1 é um DAO – Data Access Object do trecho é deixada para o navegador. complicar ainda mais, cada usuário pode modificar a configuração 1.9.2 Para Pesquisando 14 dificulta o trabalho de padrão navegador para O que o seu programa mostre o texto na fonte (tipo de 1.9.3 de seu Recurso avaçando: Cursor programação visual 15 caractere) que quiser. 1.9.4 Alteração 16 na Web. Em compensação é muito simples criar uma página básica para colocar na 1.9.5 Exclusão 16 Internet com HTML. Exemplo uma página HTML: 2 Introdução a Java de Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 <html> 2.2 O que é Java Enterprise Edition? 18 <head> Java Enterprise Edition 2.3 A plataforma 18 <title>Minha primeira página</title> 2.3.1 APIs</head> 19 2.3.2 Contêiners 19 2.3.3 Deployment 21 <body> de aplicações Texto – imagens – links - ... 3 Análise de arquiteturas 21 <body> 3.1 Arquitetura Física e Arquitetura Lógica 21 </html> 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 Saída: 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 Com o Modelo de 4.1 Tomcat 23 de Java JSE SDK (JDK) 4.1.1 Objeto Instalar 24 4.1.2 Qual(DOM) versão,de JDK utilizar 24 Documentos 4.1.2.1 JAVA_HOME 24 os programadores 4.2 Instalar Tomcat 25 podem criar 4.2.1 Qual versão de Tomcat utilizar 25 documentos, navegar 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows]e Tomcat como serviço 25 pela sua estrutura 4.2.2.2 Tomcat como processo 26 18.5 O Modelo de Objetos adicionar, modificar 4.3 Testar Tomcat 26 O Modelo de Objeto de Documentos (DOM – Document Object Model) é ou apagar elementos 4.4 Criar contexto de desenvolvimento 26 uma interface de programação de aplicativos (API) para documentos HTML e XML. É a 4.4.1 e conteúdo. Estrutura de diretórios 26 definição da estrutura lógica dos documentos e o meio pelo qual um documento é 4.4.2 Criar contexto de aplicação web 27 acessado e manipulado. 4.4.3 Configurar contexto: web.xml 27 Na especificação DOM, o termo documento é utilizado no seu sentido mais 4.4.4 Ativar contexto 29 amplo. XML é usado como o meio de representação de muitos tipos diferentes de 4.4.5 Testar contexto 29 informação que podem ser armazenados em sistemas diversos e muitos seriam 4.5 Bibliotecas Servlet 29 tradicionalmente considerados como informação no lugar de documentos. Assim 4.6 Testar seus servlets 30 mesmo, o XML apresenta estas informações como documentos e o DOM pode ser 4.7 Testar seus JSPs 31 utilizado para o gerenciamento destas informações. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 129 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 143 www.3way.com.br 18.3 User-Agent String Java WEB Java WEB Tudo o que seja encontrado em um documento HTML ou XML pode ser acessado, alterado, apagado ou Sumário através do Modelo de Objeto de Documentos com apenas algumas exceções. Em particular as interfaces adicionado DOM para sub-conjuntos internos e externos XML ainda não foram especificados. 1 JDBC 8 Como em uma especificação W3C, um objetivo importante para o Modelo de Objeto de Documentos é o de 1.1 Banco Dados Relacional 8 proporcionar uma de interface de programação standard que possa ser utilizada em um número amplo de ambientes 1.2 JDBC – Java Database Connectivity 8 e aplicativos. O DOM foi concebido para ser utilizado com qualquer linguagem de programação. 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 18.6 HTML e XML 1.4 Criar Banco de Dados e Tabelas 10 HTML e XML são primos. Eles derivam da mesma inspiração, o SGML 1.5 Classes Javabeans – Entidades 10 A grande diferença entre (Standard Generalized Markup Language). Ambos identificam elementos em 1.6 Inserindo Dados 11 uma página e ambos utilizam sintaxes similares. Se você é familiar com HTML, HTML e XML é que o 12 1.7 Fechando a Conexão também o será com o XML. HTML descreve a 1.8 PreparedStatement ou Statement 12 Como o HTML, o XML também faz uso de tags (palavras encapsuladas 1.9 Design Patterns aparência e a ações em 13 por sinais '<' e '>') e atributos (definidos com name="value"), mas enquanto o 1.9.1 DAO – Data Access Object 13 uma página na rede, HTML especifica cada sentido para as tags e atributos, e frequentemente a 1.9.2 Pesquisando 14 maneira pela qual o texto entre eles será exibido em um navegador, o XML usa enquanto o XML não 1.9.3 Recurso avaçando: O Cursor 15 as tags somente para delimitar trechos de dados, deixa a interpretação do dado descreve nem aparência e16 1.9.4 Alteração a ser realizada completamente para a aplicação que o está lendo. Resumindo, 1.9.5 Exclusão 16 ações, mas sim o que cada enquanto em um documento HTML uma tag <p> indica um parágrafo, no XML 2 Introdução a Java Enterprise Edition 17 trecho de dados é ou essa tag pode indicar um preço, um parâmetro, uma pessoa, ou qualquer outra 2.1 Porque Java EE tem sido tão utilizado? 17 coisa que se possa imaginar, inclusive algo que não tenha nada a ver com um p representa! 2.2 O que é Java Enterprise Edition? 18 como por exemplo autores de livros. 2.3 A plataforma Java Enterprise Edition 18 Em outras palavras, o XML Os arquivos XML são arquivos texto, mas não são tão destinados à 2.3.1 APIs descreve o conteúdo do 19 leitura por um ser humano como o HTML. Os documentos XML são arquivos 2.3.2 Contêiners 19 texto porque facilitam que os programadores ou desenvolvedores debuguem documento! 2.3.3 Deployment de aplicações 21 mais facilmente as aplicações, de forma que um simples editor de textos pode 3 Análise de arquiteturas 21 ser usado para corrigir um erro em um arquivo XML. Mas as regras de 3.1 Arquitetura Física e Arquitetura Lógica 21 formatação para documentos XML são muito mais rígidas do que para 3.2 Tipos de aplicações na WEB 21 documentos HTML. Uma tag esquecida ou um atributo sem aspas torna o 3.3 Arquitetura MVC para a Web 21 documento inutilizável, enquanto que no HTML isso é tolerado. 3.4 Vantagens da arquitetura MVC 22 As especificações oficiais do XML determinam que as aplicações não 4 Ambiente de desenvolvimento 23 podem tentar adivinhar o que está errado em um arquivo, no HTML isso 4.1 Tomcat 23 acontece, mas devem parar de interpretá-lo e reportar o erro. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 18.7 O Valor Semântico de um Documento 4.1.2.1 JAVA_HOME 24 NasInstalar recomendações 4.2 Tomcat do W3C, cada elemento (tag) tem sua função própria no (X)HTML. Cada tag tem seu 25 papel foi criada com um propósito. Criar documentos semanticamente corretos significa utilizar a tag 4.2.1 a cumprir, Qual versão de Tomcat utilizar 25 certa no lugar certo. Por exemplo: <h1> para título superior, <p> para parágrafos, <ul> para lista não ordenada, 4.2.2 Iniciar e parar o Tomcat 25 <form> formulário, etc... como serviço 4.2.2.1 para [Windows] Tomcat 25 documentos semanticamente corretos, além de contribuir para uma web melhor, você estará 4.2.2.2 Criando Tomcat como processo 26 beneficiando a si próprio. Seu site poderá aparecer primeiro no Google e outros sites de busca, será bastante 4.3 Testar Tomcat 26 amigável aos leitores de tela, será compatível com aplicações futuras, enfim, muitos outros benefícios que você 4.4 Criar contexto de desenvolvimento 26 descobrirá quando for desenvolver. 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 18.8 4.4.3 XML Configurar contexto: web.xml 27 Extensible Markup Language (XML) é linguagem de marcação de dados ( meta-markup language ) que 4.4.4 Ativar contexto 29 provê para descrever dados estruturados. Isso facilita declarações mais precisas do conteúdo e 4.4.5 um formato Testar contexto 29 resultados mais significativos 4.5 Bibliotecas Servletde busca através de múltiplas plataformas. O XML também vai permitir o surgimento 29 de uma nova geração de aplicações de manipulação e visualização de dados via internet. 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 130 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 145 www.3way.com.br Java WEB Java WEB O XML permite a definição de um número infinito de tags, enquanto no HTML, se as tags podem ser usadas Sumário para definir a formatação de caracteres e parágrafos, o XML provê um sistema para criar tags para dados estruturados. 1 8 UmJDBC elemento XML pode ter dados declarados como sendo preços de venda, taxas de preço, um título de 1.1 a quantidade Banco de Dados Relacional 8 livro, de chuva, ou qualquer outro tipo de elemento de dado. Como as tags XML são adotadas por 1.2 JDBC – Java Database Connectivity 8 intranets de organizações, e também via Internet, haverá uma correspondente habilidade em manipular e procurar 1.2.1 java.sql.DriverManager 8 por dados independentemente das aplicações onde os quais são encontrados. Uma vez que o dado foi encontrado, 1.3 pode ser Fábrica de Conexões 9 ele distribuído pela rede e apresentado em um browser como o Internet Explorer 5 de várias formas 1.4 Criar Banco de Dados e Tabelas 10 possíveis, ou então esse dado pode ser transferido para outras aplicações para processamento e visualização. 1.5 Classes Javabeans – Entidades 10 1.6 Doctype Inserindo Dados 11 18.9 1.7 Fechando a Conexão 12 O DOCTYPE é uma referência a um DTD, que significa Document Type 1.8 PreparedStatement ou Statement DTD é um 12 Definition, em português Definição de Tipo de Documento. Nele estão descritos os 1.9 Design Patterns documento onde13 elementos que podem ser usados, quais elementos podem estar dentro de outros 1.9.1 DAO – Data Access Object 13 elementos, que tags descrevem esses elementos, se um elemento tem conteúdo ou estão definidas as14 1.9.2 Pesquisando não, se é necessário ter tag de abertura e/ou de fechamento. Enfim, tudo que pode ou regras para a criação 1.9.3 Recurso avaçando: O Cursor 15 não ser usado dentro do nosso documento. 1.9.4 Alteração 16 de um documento Uma declaração de DOCTYPE é dividida em duas partes, um identificador 1.9.5 Exclusão 16 HTML. público (public identifier) e uma URI. O identificador público diz que tipo de 2 Introdução a Java Enterprise Edition 17 documento está sendo usado: 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 -//W3C//DTD HTML 4.01//EN 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 Este é o identificador público do HTML 4.01 Strict. A URI aponta para o 2.3.2 Contêiners 19 endereço do DTD na web: 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 http://www.w3.org/TR/html4/strict.dtd 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 Note que no exemplo acima, nosso DOCTYPE está dividido em duas linhas. Se você preferir, pode usar uma 3.3 Arquitetura MVC para a Web 21 linha apenas, mas tome o cuidado de incluir um espaço entre o identificador público e a URI. 3.4 Vantagens da arquitetura MVC 22 É extremamente importante identificar o DOCTYPE em todos os seus documentos HTML. Caso contrário, 4 Ambiente de desenvolvimento 23 seu browser pode interpretar seu documento de maneira estranha, causando problemas que seriam facilmente 4.1 Tomcat 23 evitados caso o DOCTYPE estivesse presente. 4.1.1 Instalar Java JSE SDK (JDK) 24 Um browser, ao encontrar a declaração de DOCTYPE não vai ler o documento referenciado em sua URI e 4.1.2 Qual versão de JDK utilizar 24 interpretar o HTML de acordo com ele. Porém, ele vai se basear no identificador público e na presença ou não de 4.1.2.1 JAVA_HOME 24 uma URI para decidir como interpretar o documento. Na verdade, isso vai influir na maneira como estilos CSS são 4.2 Instalar Tomcat 25 aplicados ao documento HTML. 4.2.1 Qual versão de Tomcat utilizar 25 Em geral, os browsers têm duas formas de interpretar um documento: Strict Mode ou Standards 4.2.2 Iniciar e parar o Tomcat 25 Compliance Mode, onde as especificações são seguidas à risca e Quirks mode (Modo de compatibilidade), onde o 4.2.2.1 [Windows] Tomcat como serviço 25 browser vai deixar passar alguns erros, interpretando o documento mais ou menos como versões mais antigas de 4.2.2.2 Tomcat como processo 26 browser o fariam. Vamos estudar com calma estes modos de interpretação (além de um outro, usado pelo Mozilla) 4.3 Testar Tomcat 26 mais a frente. 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 18.10 A linguagem HTML 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 18.10.1 Introdução 4.4.4 Apesar Ativar contexto 29 dessa aparente sofisticação, as páginas Web não passam de documentos de texto simples. Podem 4.4.5 Testar contexto 29 ser produzidas com qualquer editor de texto, como o Notepad do Windows. A diferença é que as páginas Web 4.5 Bibliotecas Servlet 29 contêm algumas marcas especiais para determinar o papel de cada elemento dentro do texto. Alguns elementos 4.6 marcados Testar seus servlets 30 são como títulos, outros como parágrafos. As marcações são usadas também para indicar os links que 4.7 Testar seus JSPs 31 levam a outros documentos na rede. Essas marcas são chamadas de tags e estão especificadas dentro da linguagem 4.8 Logs 31 utilizada para criar as páginas Web, HTML. 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 131 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 146 www.3way.com.br Java WEB Java WEB Sumário 18.10.2 Estrutura do documento html A estrutura básica de um documento HTML é a seguinte: 1 JDBC 8 1.1 Banco de Dados Relacional 8 <HTML> ... </HTML> <HEAD> ... </HEAD> 1.2 JDBC – Java Database Connectivity 8 ... </TITLE> 1.2.1 <TITLE> java.sql.DriverManager 8 <BODY> ... </BODY> 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 Onde: 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 <HTML> ... </HTML> 1.7 Fechando a Conexão 12 São PreparedStatement usados para delimitar os comandos HTML, indicam o início e o fim de um documento. O Browser 1.8 ou Statement 12 reconhece a TAG HTML e indica que o documento que virá a seguir deve ser interpretado como HTML. 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 <HEAD> 1.9.2 ... </HEAD> Pesquisando 14 Delimita a seção do cabeçalho do documento onde serão definidos poucos comandos de linguagem, o mais 1.9.3 Recurso avaçando: O Cursor 15 importante é o título que é exibido na barra de títulos do browser. 1.9.4 Alteração 16 1.9.5 Exclusão 16 <TITLE> ... </TITLE> 2 Introdução a Java Enterprise Edition 17 Definem o título da página é exibido na barra de títulos do browser. Estas TAGs devem estar sempre 2.1 Porque Java EE tem sido que tão utilizado? 17 detro das TAGs <head></head> . 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 <BODY> 2.3.1 ... </BODY> APIs 19 Dentro desta TAG estão os elementos da página Web. É onde estão localizados os textos, imagens, links, 2.3.2 Contêiners 19 etc. 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 18.10.2.1 Características das Tags HTML 3.1 Arquitetura Física e Arquitetura Lógica 21 Os comandos em HTMLna são chamados de TAGs, compreendem de marcas padrões que são ultilizadas para 3.2 Tipos de aplicações WEB 21 fazer a um browser. 3.3 indicações Arquitetura MVC para a Web 21 Assim, como em linguagens, 3.4 Vantagens daoutras arquitetura MVC os comandos tem uma sintaxe própria e obedecem a algumas regras: 22 - As TAGs sempre aparecem entre os sinas “menor que”(<) e “maior que”(>); 4 Ambiente de desenvolvimento 23 Geralmente são usadas aos pares e a TAG de finalização de um comando qualquer é finalizada com a 4.1 Tomcat 23 de uma barra(/). 4.1.1 precedência Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Em geral: 4.1.2.1 JAVA_HOME 24 <nome da tag> texto </nome da tag> 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 onde: 4.2.2 Iniciar e parar o Tomcat 25 Atributos servem para da tag>Tomcat : indica o início da TAG 4.2.2.1 <nome [Windows] como serviço 25 da tag> : indica o final da TAG. 4.2.2.2 </nome Tomcat como processo 26 definir uma 4.3 Testar Tomcat propriedade de um 26 18.10.2.2 Atributos 4.4 Criar contexto de desenvolvimento 26 elemento HTML. 26 devem ser colocados sempre na tag de abertura, logo 4.4.1 Os atributos Estrutura HTML de diretórios após do contexto elemento, precedido um espaço e é composto de um nome de 4.4.2o nome Criar de aplicação de web 27 atributo, sinal de igual (=) e um valor de atributo, cercado por aspas duplas (") ou 4.4.3 um Configurar contexto: web.xml 27 simples (‘) . 4.4.4 Ativar contexto 29 bom exemplo de atributo é o id, que serve para identificar, de maneira 4.4.5 Um Testar contexto 29 única, dentro de um documento HTML. Exemplo: 4.5 um elemento Bibliotecas Servlet 29 4.6 Testar seus servlets 30 <p Testar id="nome"> 4.7 seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 132 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 147 www.3way.com.br Java WEB Java WEB Outro bom exemplo é o atributo href, usado para definir uma referência de hipertexto (link) em um Sumário A ou LINK. Exemplo: elemento 1 8 <a JDBC href="http://www.3way.com.br"> 1.1 Banco de Dados Relacional 8 1.2 JDBC Java Database Connectivity 8 A tag alt–referida no início do texto é, na verdade, um atributo, usado para definir um texto, que deve 1.2.1 java.sql.DriverManager substituir uma imagem, caso a mesma não esteja disponível ou não seja suportada pelo user-agent (alt 8 é 1.3 Fábrica de Conexões 9 abreviatura de alternate , que significa substituto). Exemplo: 1.4 Criar Banco de Dados e Tabelas 10 <img src="/img/bruno_um_milhao.jpg" alt="Foto"> 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 Texto em HTML pode 18.10.2.3 Textos 1.7 Fechando a Conexão 12 ser formatado de duas Tags <H> - "Headings" ou Statement 1.8 de título PreparedStatement 12 formas, utilizando Com elas você pode apenas definir o tamanho das letras, mas não o tipo de 1.9 Design Patterns 13 Headings ou a tag 13 fontes. agora comoAccess ficam as tags headings para cabeçalhos que vão do tamanho 1.9.1 VejaDAO – Data Object 1 até 6: 1.9.2 Pesquisando 14 FONT. 1.9.3 Recurso avaçando: O Cursor 15 Este é o primeiro nível </H1> 1.9.4 <H1> Alteração 16 <H2> Este é o segundo nível </H2> 1.9.5 Exclusão 16 <H3> Este é ao terceiro nível </H3> 2 Introdução Java Enterprise Edition 17 <H4> Este é o </H4> 2.1 Porque Java EE quarto tem sido nível tão utilizado? 17 <H5> Este é o quinto nível </H5> 2.2 O que é Java Enterprise Edition? 18 <H6> Este é oJava sexto nível </H6> 2.3 A plataforma Enterprise Edition 18 2.3.1 APIs 19 Tag <FONT> 2.3.2 Contêiners 19 pode também usar as tags de fonte no lugar das tags de headings. Este tipo de tag é a mais usada, 2.3.3 Você Deployment de aplicações 21 pois definir mais facilmente o tamanho do texto e fonte que você deseja, e personalizar ainda mais a sua 3 você pode Análise de arquiteturas 21 página. A tag é <FONT> , dentro dela você pode definir vários parâmetros, como cor, tamanho e tipo de letra. Veja 3.1 Arquitetura Física e Arquitetura Lógica 21 agora usar as de fontes: 3.2 comoTipos detags aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 Atributo FACE 3.4 Vantagens da arquitetura MVC 22 Uma evoluçãode que permite a escolha da fonte (tipo de letra) para os textos, a tag é feita assim: 4 Ambiente desenvolvimento 23 4.1 Tomcat 23 FACE=fonte_da_letra>Texto</FONT> 4.1.1 <FONT Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Exemplos: 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 Times New Roman </FONT> 4.2.1 <FONT QualFACE=Times>Fonte versão de Tomcat utilizar 25 <FONT FACE=Arial>Fonte Arial </FONT> 4.2.2 Iniciar e parar o Tomcat 25 FACE=Courier>Fonte Courier New </FONT> 4.2.2.1 <FONT [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 Atributo COLOR SIZE 4.4 Criar e contexto de desenvolvimento 26 size= "3" > A palavra terá o tamanho 3</font> 4.4.1 <font Estrutura de diretórios 26 <font color= "red" > A palavra terá a cor vermelha </font> 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 Podemos também combinar as tags acima: 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 <font face="Arial" size="2" color="red"> 4.5 Bibliotecas Servlet 29 Palavra com tamanho 3 e em vermelho 4.6 Testar seus servlets 30 </font> 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 133 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 148 www.3way.com.br Java WEB Java WEB 18.10.2.4 Caracteres Especiais Sumário As 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. 1 JDBC 8 1.1 Banco de Dados Relacional 8 Exemplo: 1.2 JDBC – Java Database Connectivity 8 Caracter Entidade de Caracter Entidade Numérica Descrição 1.2.1 java.sql.DriverManager 8 ç &ccedil; &#231; c cedilha (minúsculo) 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 HTML permite que caracteres especiais sejam representados por seqüências de escape, indicadas por três 1.5 Classes Javabeans – Entidades 10 partes: um “&” (e (ê) comercial) inicial, “um número ou cadeia de caracteres correspondente ao caracter 1.6 Inserindo Dados 11 desejado”, e um “;” (ponto e vírgula) final. 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 Exemplo: 1.9 Design Patterns 13 Caracter Entidade de Caracter Entidade Numérica Descrição 1.9.1 DAO – Data Access Object 13 ã &#227; a c/ til 1.9.2 Pesquisando &atilde; 14 1.9.3 Recurso avaçando: O Cursor 15 caracter bastante útil é o espaço não ignorável, o &nbsp; (Non-breaking space). Este caracter é 1.9.4 Um Alteração 16 importante quando desejamos forçar o browser a não ignorar espaços em branco entre palavras. 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 Caracter Entidade de Caracter Descrição 2.1 Porque Java EE tem sido tão utilizado? Entidade Numérica 17 2.2 O que é Java Enterprise 18 Non-breaking space &nbsp; Edition? Espaço não ignorável 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 Exemplo: 2.3.2 <body> Contêiners 19 2.3.3 Deployment de aplicações <p>Veja como fica com &nbsp;&nbsp;&nbsp;&nbsp; espaço não ignorável!</p>21 3 Análise 21 </body> de arquiteturas 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 Visualização pelo Browser: 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC espaço não ignorável! 22 Veja como fica com 4 Ambiente de desenvolvimento 23 4.1 Tomcat ASCII “<” (menor que), “>” (maior que), e “&” (e (ê) comercial) tem significados especiais 23 Os caracteres 4.1.1 Instalar Java JSE SDK (JDK) para indicar um comando HTML. Mas por vezes queremos exibir estes símbolos na tela e são usados dentro 24 de 4.1.2 Qual versão JDK utilizar 24 documentos seguindo a de correspondência: 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 Caracter Entidade de Caracter Entidade Numérica Descrição 4.2.1 Qual versão de Tomcat utilizar 25 & &amp; &#38; E(ê) comercial 4.2.2 Iniciar e parar o Tomcat 25 < &lt; &#60; Menor que 4.2.2.1 [Windows] Tomcat como serviço 25 > &gt; &#62; Maior que 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 Outras seqüências dedesenvolvimento escape suportam caracteres ISO Latin1. Temos aqui uma tabela com as entidades 4.4 Criar contexto de 26 mais em Português: 4.4.1utilizados Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 Tabela Especiais e web.xml Acentuação 4.4.3 de Caracteres Configurar contexto: 27 Caracter Entidade de Caracter Entidade Numérica Descrição 4.4.4 Ativar contexto 29 &#09; Tabulação Horizontal 4.4.5 Testar contexto 29 &nbsp; Espaço não ignorável 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 " &quot; &#34; Aspas 4.7 Testar seus JSPs 31 À &Agrave; &#192; A c/ crase 4.8 Logs 31 Á &Aacute; &#193; A c/ acento agudo 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 134 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 149 www.3way.com.br Java WEB Java WEB  &Acirc; &#194; A c/ acento circunflexo Sumário à &Atilde; &#195; A c/ til Ç &Ccedil; &#199; C cedilha (maiúsculo) 1 JDBC 8 É &Eacute; &#201; E c/ acento agudo 1.1 Banco de Dados Relacional 8 Ê &Ecirc; Connectivity &#202; E c/ acento circunflexo 1.2 JDBC – Java Database 8 Í1.2.1 &Iacute; &#205; I c/ acento agudo java.sql.DriverManager 8 Ó &Oacute; &#211; O c/ acento agudo 1.3 Fábrica de Conexões 9 Ô &Ocirc; &#212; O c/ acento circunflexo 1.4 Criar Banco de Dados e Tabelas 10 Õ &Otilde; &#213; O c/ til 1.5 Classes Javabeans – Entidades 10 Ú &Uacute; &#218; U c/ acento agudo 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 Ü &Uuml; &#220; U c/ trema 1.8 PreparedStatement ou Statement 12 à &agrave; &#224; a c/ crase 1.9 Design Patterns 13 á &aacute; &#225; a c/ acento agudo 1.9.1 DAO – Data Access Object 13 â &acirc; &#226; a c/ acento circunflexo 1.9.2 Pesquisando 14 ã &atilde; &#227; a c/ til 1.9.3 Recurso avaçando: O Cursor 15 ç &ccedil; &#231; c cedilha (minúsculo) 1.9.4 Alteração 16 é &eacute; &#233; e c/ acento agudo 1.9.5 Exclusão 16 ê &ecirc; &#234; e c/ acento circunflexo 2 Introdução a Java Enterprise Edition 17 í2.1 &iacute; i c/ acento agudo Porque Java EE tem sido tão utilizado? &#237; 17 ñ &ntilde; &#241; n c/ til 2.2 O que é Java Enterprise Edition? 18 ó &oacute; o c/ acento agudo 2.3 A plataforma Java Enterprise Edition &#243; 18 ô &ocirc; &#244; o c/ acento circunflexo 2.3.1 APIs 19 ò &otilde; &#245; o c/ til 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 ú &uacute; &#250; u c/ acento agudo 3 Análise de arquiteturas 21 ü &uuml; &#252; u c/ trema 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 Veja outras entidades numéricas: 3.3 Arquitetura MVC para a Web 21 3.4 de Caracteres Vantagens da arquitetura MVC 22 Tabela Especiais e Acentuação 4 Ambiente de desenvolvimento 23 Caracter Entidade de Caracter Entidade Numérica Descrição 4.1 Tomcat 23 # &#35; Tralha 4.1.1 Instalar Java JSE SDK (JDK) 24 $ &#36; Cifrão 4.1.2 Qual versão de JDK utilizar 24 % &#37; Percente 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 Por que usar estas formatações? 4.2.1 Qual versão de Tomcat utilizar 25 Os browsers costumam mostrar corretamente os caracteres acentuados 4.2.2 Iniciar e parar o Tomcat 25 normalmente. Essa prática, embora 4.2.2.1 [Windows] Tomcat comofacilite serviçosobre a digitação dos documentos, não é 25 Na World Wide Web, recomendada, devido a um problema relativo a transmissão desses caracteres. 4.2.2.2 Tomcat como processo 26 os acentos da Língua Chama-se conjunto de caracteres uma representação digital de texto. Um 4.3 Testar Tomcat 26 caracter é um símbolo cujas representações devem significar a mesma coisa Portuguesa chegam a 4.4 Criar contexto de diversas desenvolvimento 26 para pessoas. Na prática, porém, existem alguns conjuntos que travar os Browsers de 4.4.1uma comunidade Estrutura dede diretórios 26 associam dois números distintos a um mesmo caracter. 4.4.2 Criar contexto de aplicação web usuários em outros 27 já contexto: permitemweb.xml que se escolha a codificação adequada ao conjunto 4.4.3 Os Browser Configurar países, que usam um27 de caracteres relativo aos documentos a serem recuperados. Mas para garantir a 4.4.4 Ativar contexto 29 conjunto de caracteres interpretação apropriada 4.4.5 Testar contextode um documento, pode-se inserir uma indicação do 29 diferentes do ISO Latin esquema de codificação, através do campo: 4.5 Bibliotecas Servlet 29 1 , apesar do ISO Latin 1 4.6 Testar seus servlets 30 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> ser padrão na Web. 31 4.7 Testar seus JSPs 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 135 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 150 www.3way.com.br Java WEB Java WEB 18.10.3 Listas Sumário 18.10.3.1 Listas Ordenadas 1 JDBC <OL> e </OL> marcam o início e o fim de uma lista ordenada. Os itens da lista são colocados em ordem 8 e 1.1 Banco de Dados Relacional 8 recebem na primeira linha um número ou letra. Devem ser usados junto com o tag <LI>. 1.2 JDBC – Java Database Connectivity 8 Exemplo: 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 <OL> 1.4 Criar Banco de Dados e Tabelas 10 <LI>Item 1</LI> Listas é uma boa 10 1.5 Classes Javabeans – Entidades <LI>Item 2</LI> 1.6 Inserindo Dados 11 forma de organizar as </OL> 1.7 Fechando a Conexão páginas Web. 12 1.8  Atributo: PreparedStatement ou Statement 12 START=n Podem servir como 1.9 Design Patterns 13 Especifica o número a partir do qual os itens da lista começam a ser resumos ou índices de 1.9.1 DAO – Data Access Object 13 contados. Sendo que n pode ser um número ou uma letra. Também podem ser 1.9.2 Pesquisando todo o site, contendo14 utilizados números romanos. 1.9.3 Recurso avaçando: O Cursor Exemplo: links para as outras 15 1.9.4 Alteração 16 páginas criadas por 1.9.5 <OLExclusão 16 START=3> você ou outras 17 2 Introdução a Java Enterprise Edition <LI>Item 1</LI> 2.1 Porque Java EE tem sido tão utilizado? 17 pessoas. <LI>Item 2</LI> 2.2 O que é Java Enterprise Edition? 18 </OL> 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19  Atributo: TYPE 2.3.2 Define Contêiners 19 o tipo de numeração empregada na lista. Pode assumir valores "1 (1, 2.3.3 Deployment de aplicações 21 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). 3 Análise de arquiteturas 21 Exemplo: 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 <ol type="A"> 3.3 Arquitetura MVC para a Web 21 <li> Treinamento </li> 3.4 Vantagens da arquitetura MVC 22 <li> Consultoria </li> 4 Ambiente de desenvolvimento 23 <li> Desenvolvimento </li> 4.1 Tomcat 23 <li> Manutenção </li> 4.1.1 </ol> Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 Listas JAVA_HOME 24 18.10.3.2 não – Ordenadas 4.2 Instalar Tomcat <UL> e </UL> marcam o início e o fim de uma lista não ordenada. Deve ser usado junto com o tag <LI>. 25 Os 4.2.1 Qual versão de Tomcat utilizar 25 itens da lista recebem marcas gráficas na primeira linha conhecidas como bullets. 4.2.2 Iniciar e parar o Tomcat 25 Exemplo: 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 <UL> Tomcat como processo 26 4.3 Testar Tomcat 1 26 <LI>Item 4.4 Criar contexto de desenvolvimento 26 <LI>Item 2 4.4.1 </UL> Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27  Atributo: TYPE 4.4.4 Indica Ativar contexto 29 qual o símbolo deve ser usado para demarcar cada elemento da lista. Pode ser os valores disc, circle 4.4.5 29 ou square. Testar contexto 4.5 Bibliotecas Servlet 29 Exemplo: 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 <ul type="circle"> 4.8 Logs<li> Treinamento </li> 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 136 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 151 www.3way.com.br Java WEB Java WEB <li> Consultoria </li> <li> Desenvolvimento </li> <li> Manutenção </li> Sumário 1 JDBC </ul> 1.1 Banco de Dados Relacional 1.2 JDBC – Java Database Connectivity 18.10.3.3 Exemplo de Lista de Conteudo 1.2.1 java.sql.DriverManager 1.3 de Definição Fábrica de Conexões Listas 1.4 Criar Banco de Dados e Tabelas“Listas de Glossário”, uma vez que têm o formato: Estas listas são chamadas também 1.5 Classes Javabeans – Entidades 1.6 Inserindo Dados <DL> 1.7 Fechando a Conexão <DT>termo a ser definido 1.8 PreparedStatement ou Statement <DD>definição 1.9 Design Patterns a ser definido <DT>termo 1.9.1 DAO<DD>definição – Data Access Object 1.9.2 </DL> Pesquisando 1.9.3 Recurso avaçando: O Cursor 1.9.4 Que produz: Alteração 1.9.5 Exclusão 2 Introdução a Java Enterprise Edition termo a ser definido 2.1 Porque Java EE tem sido tão utilizado? definição 2.2 termo O que é Java Enterprise Edition? a ser definido 2.3 Adefinição plataforma Java Enterprise Edition 2.3.1 APIs 2.3.2 Este Contêiners tipo de lista é muito utilizado para diversos efeitos de organização de páginas. 2.3.3 <DL> Deployment de aplicações 3 Análise deaarquiteturas <DT>termo ser definido 3.1 Arquitetura Física e Arquitetura Lógica <DD>definição 3.2 Tipos de aplicações na WEB <OL> 3.3 Arquitetura MVC para a Web numerada <LI>item de uma lista 3.4 Vantagens arquitetura MVC <LI>itemda de uma lista numerada 4 Ambiente de desenvolvimento <UL> 4.1 Tomcat <LI>item de uma lista 4.1.1 Instalar Java JSE SDK (JDK) </UL> 4.1.2 Qual versão utilizar <LI>item de de JDK uma lista numerada 4.1.2.1 JAVA_HOME </OL> 4.2 Instalar Tomcat <DT>termo a ser definido 4.2.1 <DD>definição Qual versão de Tomcat utilizar 4.2.2 </DL> Iniciar e parar o Tomcat 4.2.2.1 [Windows] Tomcat como serviço 4.2.2.2 Saída: Tomcat como processo 4.3 Testar termo a Tomcat ser definido 4.4 Criar contexto de desenvolvimento definição 4.4.1 Estrutura diretórios 1.de item de uma lista numerada 4.4.2 Criar contexto de de aplicação web numerada 2. item uma lista 4.4.3 Configurar contexto: web.xml  item de uma lista 4.4.4 Ativar contexto 3. item de uma lista numerada 4.4.5 termo Testar a contexto ser definido 4.5 Bibliotecas Servlet definição 4.6 Testar seus servlets 4.7 Testar seus JSPs 4.8 Logs 4.9 Variáveis de Ambiente os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 8 8 8 8 9 10 10 11 12 12 13 13 14 15 16 16 17 17 18 18 19 19 21 21 21 21 21 22 23 23 24 24 24 25 25 25 25 26 26 26 26 27 27 29 29 29 30 31 31 32 137 1 152 Java WEB Java WEB 18.10.4 Hyperlinks Sumário O principal poder do HTML vem da capacidade de interligar partes de um texto e imagens a outro documento. As interligações entre documentos não se restringe somente a ligações com outras páginas. Em 1 JDBC 8 páginas muito longas onde o assunto tem vários tópicos, podemos utilizar índices onde os links tem a função de 1.1 Banco de Dados Relacional 8 interligar osJDBC tópicos de um texto eConnectivity que com apenas um clique em um dos tópicos do índice o item é exibido. 1.2 – Java Database 8 1.2.1 java.sql.DriverManager 18.10.4.1 TAG <A> de Conexões 1.3 Fábrica <A> e </A> 1.4 Criar Banco de Dados e Tabelas Marca o início e o fim de um link. 1.5 Classes Javabeans – Entidades Atributos: 1.6 Inserindo Dados HREF=URL : indica para onde o link levará (sendo URL o endereço para onde o link está apontando). 1.7 Fechando a Conexão Exemplo: 1.8 PreparedStatement ou Statement 8 9 10 10 11 12 12 1.9 Design Patterns 13 HREF=”http://www.3way.com.br”>3 Way</A> 1.9.1 <A DAO – Data Access Object 13 1.9.2 Pesquisando 14 18.10.4.2 Caminho Relativo 1.9.3 Recurso avaçando: O Cursor 15 relativo pode ser usado sempre que queremos fazer referência a um documento armazenado 16 no 1.9.4 O caminho Alteração mesmo servidor do documento atual. Através do campo de endereço do browser, vemos que este documento está 1.9.5 Exclusão 16 localizado em um diretório /www/ do servidor www.3way.com.br. Para escrevermos um link deste documento para 2 Introdução a Java Enterprise Edition 17 o documento doc2.html no diretório /www/exemplos/, tudo que precisamos fazer é escrever: 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 <A HREF="exemplos/doc2.html">Exemplo de caminho relativo</A>. 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 18.10.4.3 Caminho Absoluto 2.3.2 Contêiners 19 Utilizamos o caminho absoluto quando desejamos referenciar um documento que esteja em outro servidor, 2.3.3 Deployment de aplicações 21 por exemplo: 3 Análise de arquiteturas 21 3.1 Física e Arquitetura Lógica 21 <A Arquitetura HREF="http://www.3way.com.br/">SITE DA 3WAY</A> 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 que oferece um link para um documento no servidor WWW da 3Way Networks. Com a mesma sintaxe, é possível 3.4 Vantagens da arquitetura MVC 22 escrever links para qualquer servidor de informações da Internet. 4 Ambiente de desenvolvimento 23 4.1 23 18.10.4.4 OTomcat Atributo Target 4.1.1 A função Instalar Java JSE SDK (JDK) 24 do atributo target basicamente é indicar o nome de um frame na página onde um documento 4.1.2 Qual versão de JDK utilizar 24 deve ser aberto. Outro controle que você pode ter com ele é se o documento lincado deve ser aberto na própria 4.1.2.1 JAVA_HOME 24 janela ou no próprio frame (target:“_self”) onde o próprio link se encontra ou se a URL do link deve ser aberta em 4.2 Instalar Tomcat 25 outra janela (target= “_blank”) do seu browser. Essa é a única função do atributo target e é basicamente tudo o 4.2.1 Qual versão de Tomcat utilizar 25 que precisar saber sobre ele. 4.2.2 Iniciar e parar o Tomcat 25 Veja o exemplo: 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 <a Tomcat como processo href="slide.html" target="_self">slide 1.</a> - irá abrir na mesma página. 26 4.3 Testar Tomcat 26 <a href="slide.html" target="_blank">slide 2.</a> - irá abrir em outra janela. 4.4 Criar contexto de desenvolvimento 26 <a href="slide2.html" target="dynamic">slide 3.</a> - irá abrir no frame dynamic 4.4.1 Estrutura de diretórios 26 <a href="www.google.com” target="miolo">Google</a> - irá abrir no frame miolo 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 18.10.4.5 Uso com Imagens 4.4.4 Ativar contexto 29 Para usar imagens em vez de texto nos links é só colocar entre as tags <A></A> as TAGS de imagem quer 4.4.5 Testar contexto 29 veremos um pouco mais a frente. Exemplo: 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 <A href=”www.google.com.br”><IMG SRC = “foto.jpg”></A> 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 138 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 153 www.3way.com.br Java WEB Java WEB 18.10.5 Tabelas Sumário Assim 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 conhecido 1 JDBC 8 usualmente: ela tem linhas e colunas, e na interseção delas estão as células. 1.1 de Dados Relacional 8 Na Banco linguagem HTML você pode inserir nas células tudo o que normalmente faz parte do corpo de um 1.2 JDBC – Java Database Connectivity 8 documento, como textos, links, imagens, listas e até outras tabelas. 1.2.1 java.sql.DriverManager 8 1.3 <table>...</table> Fábrica de Conexões 9 TABLE 1.4 Criar Banco de Dados e Tabelas 10 Indica o início e o final de uma determinada tabela. Todas as demais Todos os atributos de uma 1.5 Classes a Javabeans Entidades 10 marcas referentes tabelas -–linhas e células - somente serão consideradas se 1.6 Inserindo Dados tabela são opcionais. 11 incluidas entre <table> e </table>. 1.7 Fechando a Conexão 12 Uma tabela padrão não 1.8 PreparedStatement ou Statement 12 <table> possui bordas e sua altura 1.9 Design Patterns 13 <tr> e largura são as mínimas 1.9.1 DAO – Data Access Object 13 <td>Texto A</td> 1.9.2 Pesquisando 14 necessárias para suportar <td>Texto B</td> 1.9.3 Recurso avaçando: O Cursor 15 seu conteúdo. </tr> 1.9.4 Alteração 16 1.9.5 </table> Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 Atributos da TABELA: 2.2 OBORDER que é Java Enterprise Edition? 18 01 – -> Se presente, a tabela apresenta bordas. Se for atributo o 2.3 0 (zero), A plataforma Java Enterprise Edition 18 valor não somente a tabela não apresentará bordas, como o espaço 2.3.1 APIs 19 usualmente reservado para bordas será liberado, permitindo a confecção de 2.3.2 mais Contêiners 19 tabelas compactas. 2.3.3 Deployment de aplicações 21 Exemplo: <table border="4"> 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 02 – CELLSPACING -> Indica quanto espaço, em pixels, deve ser inserido entre as células da tabela. 3.2 Tipos de aplicações na WEB 21 Exemplo: 3.3 Arquitetura MVC para a Web 21 <table cellspacing="10"> 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 03 – CELLPADDING -> Indica quanto espaço, em pixels, deve ser inserido entre as bordas das células e seu 4.1 Tomcat 23 conteúdo. 4.1.1 Instalar Java JSE SDK (JDK) 24 Exemplo: 4.1.2 Qual versão de JDK utilizar 24 <table cellpadding="5"> 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 WIDTH -> de Indica a largura 4.2.1 04 – Qual versão Tomcat utilizarda tabela. Usa-se como medida o número de pixels desejado ou uma 25 porcentagem da largura do documento. 4.2.2 Iniciar e parar o Tomcat 25 Exemplo: 4.2.2.1 [Windows] Tomcat como serviço 25 width="300"> 4.2.2.2 <table Tomcat como processo 26 4.3 Testar Tomcat 26 05 – ALIGN -> Indica posição da tabela no documento. Pode assumir os valores LEFT ou RIGHT, indicando, 4.4 Criar contexto dea desenvolvimento 26 respectivamente, quede a tabela deve estar a esquerda ou a direita do documento, e com o texto fluindo à sua volta. 4.4.1 Estrutura diretórios 26 Exemplo: 4.4.2 Criar contexto de aplicação web 27 align="center"> 4.4.3 <table Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 BACKGROUND 4.4.5 06 – Testar contexto -> Especifica uma imagem que será utilizada como "background" da tabela. A imagem 29 será isto é, repetida de forma a cobrir todo o fundo da tabela. 4.5 "TILED", Bibliotecas Servlet 29 Exemplo: 4.6 Testar seus servlets 30 <table border background="imagem.gif"> 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 139 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 154 www.3way.com.br Java WEB Java WEB 07 – BGCOLOR -> Especifica uma cor de fundo para a tabela. Sumário Exemplo: 1 JDBC 8 1.1 Banco de Dados Relacional 8 08 – BORDERCOLOR -> Especifica uma cor para as bordas da tabela. 1.2 JDBC – Java Database Connectivity 8 Exemplo: 1.2.1 <table java.sql.DriverManager 8 border bgcolor="yellow" bordercolor="blue"> 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 18.10.5.1 A TAG <TR> 1.5 Classes Javabeans – Entidades 10 TR <tr>...</tr> 1.6 Inserindo 11 Indica o inícioDados e o final de uma determinada linha da tabela (Table Row). Uma linha é composta de 1.7 Fechando a Conexão 12 elementos. 1.8 PreparedStatement ou Statement 12 Exemplo: 1.9 Design Patterns 13 <table> 1.9.1 DAO – Data Access Object 13 <tr> 1.9.2 Pesquisando 14 <td>Texto A</td> 1.9.3 Recurso avaçando: O Cursor 15 <td>Texto B</td> 1.9.4 Alteração 16 </tr> 1.9.5 Exclusão 16 </table> 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 Atributos de TR: 2.2 O que é Java Enterprise Edition? 18 1 – BGCOLOR -> Define a cor de fundo de uma linha da tabela. 2.3 A plataforma Java Enterprise Edition 18 Exemplo: 2.3.1 APIs 19 <table> 2.3.2 Contêiners 19 <tr bgcolor="red"> 2.3.3 Deployment de aplicações 21 <td>Texto A</td> 3 Análise de arquiteturas 21 <td>Texto B</td> 3.1 Arquitetura Física e Arquitetura Lógica 21 </tr> 3.2 Tipos de aplicações na WEB 21 </table> 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 18.10.5.2 A Ambiente TAG <TD>de desenvolvimento 4 23 Indica um elemento (célula) da tabela, vindo do inglês "Table Data". Os elementos contém os dados da 4.1 Tomcat 23 tabela, eles texto, links, imagens, 4.1.1 sejam Instalar Java JSE SDK (JDK) etc. 24 Exemplo: 4.1.2 Qual versão de JDK utilizar 24 <table> 4.1.2.1 JAVA_HOME 24 <tr> 4.2 Instalar Tomcat 25 <td>Texto A</td> 4.2.1 Qual versão de Tomcat utilizar 25 <td>Texto B</td> 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 </tr> [Windows] Tomcat como serviço 25 </table> 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 Atributos de <TD>: 4.4 Criar contexto de desenvolvimento 26 ALIGN ->de Define se o conteúdo da célula estará alinhado a esquerda (LEFT), centralizado (CENTER) ou a 4.4.1 01 – Estrutura diretórios 26 direita ( RIGHT ). Se omitido, o alinhamento fica à esquerda. 4.4.2 Criar contexto de aplicação web 27 Exemplo: 4.4.3 Configurar contexto: web.xml 27 4.4.4 <table> Ativar contexto <tr> 4.4.5 Testar contexto <td align="ceter">Texto A</td> 4.5 Bibliotecas Servlet <td>Texto B</td> 4.6 Testar seus servlets </tr> 4.7 Testar seus JSPs </table> 4.8 Logs 4.9 Variáveis de Ambiente <table border bgcolor="yellow"> os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 29 29 29 30 31 31 32 140 1 155 Java WEB Java WEB Sumário 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. 1 JDBC 8 Exemplo: 1.1 Banco de Dados Relacional 8 <table> 1.2 JDBC – Java Database Connectivity 8 <tr> 1.2.1 java.sql.DriverManager 8 <td valign="middle">Texto A</td> 1.3 Fábrica de Conexões 9 <td>Texto B</td> 1.4 Criar Banco de Dados e Tabelas 10 </tr> 1.5 Classes Javabeans – Entidades 10 </table> 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 03 – WIDTH -> Define a largura da célula. Pode ser expressa em pixels ou como uma porcentagem 12 da 1.8 PreparedStatement ou Statement 12 largura total da tabela. 1.9 Design Patterns 13 Exemplo: 1.9.1 DAO – Data Access Object 13 1.9.2 <table> Pesquisando 14 <tr> 1.9.3 Recurso avaçando: O Cursor 15 <td width="30%">Texto A</td> 1.9.4 Alteração 16 <td width="70%">Texto B</td> 1.9.5 Exclusão 16 </tr> 2 Introdução a Java Enterprise Edition 17 </table> 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 04 A – plataforma COLSPAN Java -> Indica quantas "células de largura" (colunas) a respectiva célula deve ocupar. 2.3 Enterprise Edition 18( Mesclagem) 2.3.1 APIs 19 2.3.2 Contêiners 19 Exemplo: 2.3.3 <table> Deployment de aplicações 21 3 Análise de arquiteturas 21 <tr> 3.1 Arquitetura Física e ArquiteturaA</td> Lógica 21 <td colspan="2">Texto 3.2 Tipos de aplicações na WEB 21 </tr> 3.3 Arquitetura MVC para a Web 21 <tr> 3.4 Vantagens da arquitetura 22 <td>Texto B</td> MVC 4 Ambiente de desenvolvimento 23 </tr> 4.1 Tomcat 23 </table> 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 05 – Qual versão de JDK utilizar 24 ROWSPAN -> Indica quantas "células de altura" (linhas) a respectiva célula deve ocupar. 4.1.2.1 JAVA_HOME 24 Exemplo: 4.2 Instalar Tomcat 25 <table> 4.2.1 Qual versão de Tomcat utilizar 25 <tr> 4.2.2 Iniciar e parar o Tomcat 25 <td rowspan="2">Texto A</td> 4.2.2.1 [Windows] Tomcat como serviço 25 <td>Texto B</td> Usualmente os Browsers 26 4.2.2.2 Tomcat como processo </tr> exibem o conteúdo de 26 4.3 Testar Tomcat <tr> 4.4 Criar contexto de desenvolvimento 26 <TH> em negrito e <td>Texto C</td> 4.4.1 Estrutura de diretórios 26 centralizado. </tr> 4.4.2 Criar contexto de aplicação web 27 4.4.3 </table> Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 18.10.5.3 ATestar TAG <TH> 4.4.5 contexto 29 TH 4.5<th>...</th> Bibliotecas Servlet 29 Indica um elemento da tabela. A única diferença para TD é que o 4.6 Testar seus servlets 30 elemento éTestar identificado como HEADER (cabeçalho) da tabela. Os atributos da 4.7 seus JSPs 31 TAG os mesmos da TAG <TD>. 4.8 <TH> são Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 141 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 156 www.3way.com.br Java WEB Java WEB Exemplo: Sumário <table> 1 JDBC 8 <th>Texto A</th> 1.1 Banco de Dados Relacional 8 </tr> 1.2 JDBC – Java Database Connectivity 8 </table> 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 18.10.5.4 Estrutura Formal das Tabelas 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades <TABLE width="500" cellspacing="0" border="1" cellpadding="0" align="center"> 10 1.6 Inserindo 11 <tr> Dados 1.7 Fechando a <TD Conexão align="center" colspan="5" bgcolor="red">Tabela de Preço</TD> 12 1.8 PreparedStatement ou Statement 12 </tr> 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 <tr align="center" bgcolor="Gray"> 1.9.2 Pesquisando 14 <TD>Supermercado</TD> 1.9.3 Recurso avaçando: O Cursor 15 <TD>Arroz</TD> 1.9.4 Alteração <TD>Feijão</TD> 16 1.9.5 Exclusão <TD>Óleo</TD> 16 2 Introdução a Java Enterprise Edition 17 <TD>Açucar</TD> 2.1 Porque Java EE tem sido tão utilizado? 17 </tr> 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 <tr align="center"> 2.3.1 APIs 19 <TD align="left" bgcolor="#CCCCCC">Rede Aleluia</TD> 2.3.2 Contêiners <TD>R$5,00</TD> 19 2.3.3 Deployment de aplicações 21 <TD>R$7,35</TD> 3 Análise de arquiteturas 21 <TD>R$1,95</TD> 3.1 Arquitetura<TD>R$2,39</TD> Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 </tr> 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 <tr align="center"> 4 Ambiente de desenvolvimento 23 <TD align="left" bgcolor="#CCCCCC">Alaião</TD> 4.1 Tomcat 23 <TD>R$4,59</TD> 4.1.1 Instalar Java JSE SDK (JDK) 24 <TD>R$6,53</TD> 4.1.2 Qual versão<TD>R$2,34</TD> de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 <TD>R$2,49</TD> 4.2 Instalar Tomcat 25 </tr> 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 </TABLE> Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 18.10.6 Imagens 4.6 Testar seus servlets 30 IMG 4.7 <img> Testar seus JSPs 31 EsteLogs TAG é responsável por ligar uma imagem ao documento. 4.8 31 4.9 Variáveis de Ambiente 32 Todos os direitos reservados a 3Way Networks Seja um Profissional Aprendendo com Profissionais 142 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 157 www.3way.com.br <tr> Java WEB Java WEB Sumário de IMG: Atributos 1 - SRC 1 JDBC 8 Obrigatório, indica a URL da imagem a ser exibida. Podem ser usado URL absoluta 1.1 Banco de Dados Relacional 8 (http://www.3way.com.br/images/imagem.gif) ou URL relativa (/images/imagem.gif). 1.2 JDBC – Java Database Connectivity 8 Exemplo: 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 <img src="/images/imagem.gif"> 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 2 - ALT 1.6 Inserindo Dados 11 Indica um texto associado à imagem. Quando a imagem não puder ser exibida, o texto é exibido em seu 1.7 Este texto Fechando a Conexão 12 lugar. também é exibido quando o cursor fica parado sobre a imagem. 1.8 PreparedStatement ou Statement 12 Exemplo: 1.9 Design Patterns 13 src="/images/imagem.gif" alt="Logotipo"> 1.9.1 <img DAO – Data Access Object 13 1.9.2 Pesquisando 14 3 - ALIGN Recurso avaçando: O Cursor 1.9.3 15 o alinhamento da imagem em relação ao texto existente na mesma linha. Os valores válidos são 1.9.4 Determina Alteração 16 "TOP", "MIDDLE", "BOTTOM","LEFT" e "RIGHT". 1.9.5 Exclusão 16 Exemplo: 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 <img src="/images/imagem.gif" align="top"> 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 4 - WIDTH APIs 2.3.1 19 Determina a largura, em pixels, da imagem. 2.3.2 Contêiners 19 Exemplo: 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 <img src="/images/imagem.gif" width="600"> 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 5 - HEIGHT Arquitetura MVC para a Web 3.3 21 Determina a altura, em pixels, da imagem. 3.4 Vantagens da arquitetura MVC 22 Exemplo: 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 <img src="/images/imagem.gif" height="60"> 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 6 - BORDER 4.1.2.1 JAVA_HOME 24 Determina a largura, em pixels, da imagem. 4.2 Instalar Tomcat 25 Exemplo: 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 <img Iniciar e parar o Tomcat 25 src="/images/imagem.gif" border="2"> 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 7 - HSPACE 4.3 Testar Tomcat 26 Determina a quantidade de espaço deixado em branco aos lados da imagem, de forma que ela não fique 4.4 Criar contexto de desenvolvimento 26 demasiadamente próxima dos outros elementos da página. 4.4.1 Estrutura de diretórios 26 Exemplo: 4.4.2 Criar contexto de aplicação web 27 4.4.3 <img Configurar contexto: web.xml 27 src="/images/imagem.gif" hspace="10"> 4.4.4 Ativar contexto 29 4.4.5 29 8 - VSPACE Testar contexto 4.5 Bibliotecas Servlet 29 Determina a quantidade de espaço deixado em branco acima e abaixo da imagem. 4.6 Testar seus servlets 30 Exemplo: 4.7 Testar seus JSPs 31 4.8 Logs 31 <img src="/images/imagem.gif" vspace="10"> 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 143 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 158 www.3way.com.br Java WEB Java WEB Sumário 18.10.7 Formulários Formulários são de grande utilidade para a Web, pois permitem a interatividade entre o usuário, a pessoa 1 JDBC 8 que visualiza as páginas e o Servidor Web. Assim, através da Web, pode-se ler e gravar informações em Banco de 1.1 Banco de Dados Relacional 8 Dados, gerando enormes possibilidades de uso para a Internet, como por exemplo a de um serviço de venda. 1.2 JDBC – Java Database Connectivity 8 Formulários também podem ser gerados para a navegação entre páginas e Sites na Web. 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 18.10.7.1 A TAG <FORM> 1.4 Criar Banco de Dados e Tabelas 10 Indica a existência de um formulário, isto é, um local da página utilizado pelo usuário para enviar 1.5 Classes Javabeans – Entidades (usualmente um Script CGI). 10 informações para um local predeterminado 1.6 Inserindo Dados 11 Exemplo: 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 <form method="POST" action="http://www.form.com.br"> 1.9 Design Patterns 13 <p> 1.9.1 DAO – Data Access Object 13 <input type="text" name="T1" size="20"> 1.9.2 Pesquisando 14 <input type="submit" value="Submit" name="B1"> 1.9.3 Recurso avaçando: O Cursor 15 <input type="reset" value="Reset" name="B2"> 1.9.4 Alteração 16 </p> 1.9.5 </form> Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 Atributos de FORM: 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 1 - ACTION 2.3.1 Indica APIs 19 a localização (URL) do script que irá receber e interpretar os dados enviados pelo formulário. 2.3.2 Contêiners 19 Exemplo: 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 <form action="http://www.form.com.br"> 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 2 - METHOD 3.3 Arquitetura MVC para a Web 21 Indica o formato no qual os dados serão enviados. Pode assumir os valores GET (indica como os dados 3.4 passados Vantagens da arquitetura MVC os dados para entrada padrão do sistema operacional). 22 serão pelo script) ou POST (envia 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 <form method="POST" action="http://www.form.com.br"> 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 18.10.7.2 A TAG <INPUT> 4.1.2.1 Muitos JAVA_HOME 24 elementos de um formulário HTML são definidos pela tag <INPUT>. Cada tipo de elemento possui 4.2 Instalar Tomcat 25 parâmetros próprios, mas todos possuem pelo menos dois parâmetros em comum: 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 25 1 – TYPE Iniciar e parar o Tomcat 4.2.2.1 Define [Windows] Tomcat como serviço 25 o tipo de elemento. 4.2.2.2 Tomcat como processo 26 4.3 26 2 – NAME Testar Tomcat 4.4 Criar contexto de desenvolvimento 26 Define o nome daquele elemento. 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 18.10.7.3 Campos de Texto 4.4.3 O campo Configurar contexto: web.xml 27 mais comum em formulários. Exibe na tela um campo de entrada de texto com apenas uma linha. 4.4.4 Ativar contexto 29 4.4.5 <input Testar contexto 29 type="text" name="" value="" size="" maxlength=""> 4.5 Bibliotecas Servlet 29 4.6 Testar seus 30 Atributos do Campo de servlets Texto: 4.7 31 1 – Value Testar seus JSPs 4.8 Logs pré-definido do elemento, que aparecerá quando a página for carregada. 31 É o valor 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 144 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 159 www.3way.com.br Siga-nos também no Twitter! twitter.com/3waynet Java WEB Java WEB 2 - Size Sumário O tamanho do elemento na tela, em caracteres. 3 – Maxlength 1 JDBC máximo do texto contido no elemento, em caracteres. 8 O tamanho 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 18.10.7.4 Campos de Senha 1.2.1 Tipo java.sql.DriverManager 8 de campo semelhante ao anterior, com a diferença que neste caso os dados digitados são substituídos 1.3 asteriscos, Fábrica Conexões 9 por por de isso são os mais recomendados para campos que devam conter senhas. É importante salientar 1.4 Criar Banco de Dados e Tabelas 10 que nenhuma criptografia é utilizada. Apenas não aparece na tela o que está sendo digitado. 1.5 Classes Javabeans – Entidades 10 Possui os mesmos atributos do Campo de Texto: Value, Size e Maxlength. 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 <input type="password" name="" value="" size="" maxlength=""> 1.8 PreparedStatement ou Statement 12 1.9 Design de Patterns 13 18.10.7.5 Campos Seleção 1.9.1 Utilizado DAO – Data Access de Object 13 para campos múltipla escolha, onde o usuário pode marcar mais de uma opção. 1.9.2 Pesquisando 14 type="checkbox" name="" value="" checked> 1.9.3 <input Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 Atributos: 1.9.5 Exclusão 16 1 2 – Value Introdução a Java Enterprise Edition 17 O valor queJava seráEE enviado ao servidor quando o formulário for submetido, no caso do campo estar marcado. 2.1 Porque tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2 - CheckedA plataforma Java Enterprise Edition 2.3 18 2.3.1 O estado APIs inicial do elemento. Quando presente, o elemento já aparece marcado. 19 2.3.2 Contêiners 19 18.10.7.6 Campos de Escolha 2.3.3 Deployment de aplicações 21 Utilizado para campos de múltipla escolha, onde o usuário pode marcar apenas uma opção. Para agrupar 3 Análise de arquiteturas 21 vários desteFísica tipo, e fazendo com Lógica que eles sejam exclusivos, basta atribuir o mesmo nome a todos 21 do 3.1 elementos Arquitetura Arquitetura grupo. os mesmos atributos do Campo de Seleção. 3.2 Possui Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 <input type="radio" name="" value="" checked> 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 18.10.7.7 Campos de Lista ou Menu 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 na versão tela uma list. 4.1.2 Exibe Qual deselect JDK utilizar 24 4.1.2.1 JAVA_HOME 24 <select 4.2 Instalarname=""> Tomcat 25 4.2.1 Qual<option versão de value="">texto</option> Tomcat utilizar 25 </select> 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 18.10.7.8 Múltiplas Linhas 4.2.2.2 Campos Tomcatcom como processo 26 É a mesma TAG usada no Campo de Lista ou Menu, porem, se o parâmetro size tiver o valor 1 e não houver 4.3 Testar Tomcat 26 o parâmetro multiple , exibe tela uma combo box. Caso contrário, exibe na tela uma select list. 4.4 Criar contexto dena desenvolvimento 26 4.4.1 Estrutura de diretórios 26 <select name="" size="" multiple> 4.4.2 Criar contexto de aplicação web 27 <option value="">texto</option> 4.4.3 Configurar contexto: web.xml 27 4.4.4 </select> Ativar contexto 29 4.4.5 Testar contexto 29 Atributos: 4.5 Bibliotecas Servlet 29 1 – Size 4.6 Testar seus servlets 30 Número de linhas exibidas. Default: 1; 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 145 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 161 www.3way.com.br Java WEB Java WEB 2 – Multiple Sumário Parâmetro que, se presente, permite que sejam selecionadas duas ou mais linhas, através das teclas Control ou Shift; 1 JDBC 8 1.1 8 3 – option Banco de Dados Relacional 1.2 JDBC – Java Database Connectivity 8 Cada item do tipo option acrescenta uma linha ao select; 1.2.1 java.sql.DriverManager 8 1.3 9 4 – value Fábrica de Conexões 1.4 Criar Banco de Dados e Tabelas 10 Valor a ser enviado ao servidor se aquele elemento for selecionado. Default: o texto do item; 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 5 – text 1.7 Fechando a Conexão Valor a ser exibido para aquele item. Não é definido por um parâmetro, mas pelo texto que fica entre12 as 1.8 PreparedStatement ou Statement 12 tags <option> e </option>. 1.9 Design Patterns 13 1.9.1 Os Atributos DAO – Data Access Object 13 da TAG <SELECT> serve tanto para os Campos de Lista ou Menu quanto para os Campos com 1.9.2 Pesquisando 14 Múltiplas Linhas. 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 18.10.7.9 Botões 1.9.5 Utilizado Exclusão 16 normalmente para ativar funções de scripts client-side (JavaScript, por exemplo). Sem essa 2 Introdução a Java Enterprise Edition 17 utilização, não produz efeito algum. 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O quetype="button" é Java Enterprise Edition? 18 <input name="" value=""> 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 Atributo: 2.3.2 19 1 – Value Contêiners 2.3.3 O texto Deployment de aplicações 21 que aparecerá no corpo do botão. 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 18.10.7.10 Upload de Arquivos 3.2 Tipos de aplicações naum WEB 21 Exibe na tela do browser campo de texto e um botão, que ao clicado abre uma janela para localizar um 3.3 Arquitetura MVC para a Web 21 arquivo no disco. Para utilizar este tipo de componente, o formulário deverá utilizar o método POST e ter o 3.4 Vantagens daoarquitetura MVC 22 parâmetro enctype com valor multipart/form-data . 4 Ambiente de desenvolvimento 23 <input type="file" name="" size=""> 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 Atributo: 4.1.2 Qual versão de JDK utilizar 24 1 – Size 4.1.2.1 JAVA_HOME 24 O tamanho do campo de texto exibido. 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 18.10.7.11 Fieldset 4.2.2 Iniciar e parar o Tomcat 25 de Fieldset são usados para dividir controles similares de formulários em grupos. 4.2.2.1 As Tag [Windows] Tomcat como serviço 25 Atributos: 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 1 – Legend Criar contexto de desenvolvimento 4.4 26 da FieldSet; 4.4.1 Título Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 2 – Align Configurar contexto: web.xml 4.4.3 27 Usado para alinhar o Título da FieldSet. 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 18.10.7.12 Label 4.5 Bibliotecas Servlet 29 A tag <label> é utilizada em conjunto com elementos de formulário, propiciando uma maior facilidade de 4.6 Testar seus servlets 30 acesso elementos. 4.7 a esses Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 146 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 162 www.3way.com.br Java WEB Java WEB 18.10.8 Outras Tags Sumário - Meta informações <meta> 18.10.8.1 Esse código contém Meta tags são códigos html, esses códigos ajudam alguns sites de busca, informações sobre o 8 1 JDBCe vários outros, a encontrar o seu site mais rapidamente. Esses como Altavista título, palavras-chave8 1.1 Banco de Relacional códigos organizam asDados informações que os sistemas de busca precisam para mostrar a 1.2 página em JDBC – Java Database Connectivity e descrição do seu 8 sua um resultado de busca feita por um usuário. 1.2.1 As tags java.sql.DriverManager 8 ficam entre os comandos <head> e </head>, que ficam bem no topo site. 1.3página. Eles Fábrica de Conexões 9 da podem ser colocados em todas as páginas do seu site, somente nas 1.4 Criar Banco de Dados e Tabelas 10 principais, ou ainda só na página inicial. 1.5 Classes Javabeans – Entidades 10 Esta outra meta é usada para informar quem é o autor da página, você pode 1.6 exemplo Inserindo Dados 11 por caso, queira, informar seu nome e também seu email. Exemplo: 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 <meta name= "author" content="Aluno – [email protected]"> 1.9 Design Patterns 13 1.9.1 Insere DAO Data Access Object que aparecerá em alguns sistemas de buscas. 13 a– descrição da página 1.9.2 Pesquisando 14 Pequena porque esta deve conter por volta de 255 caracteres, ou seja, uma breve 1.9.3 Recurso avaçando: O Cursor 15 descrição. Exemplo: 1.9.4 Alteração 16 <meta name= "description" content="descricao do seu site"> 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 Esta tag meta é usada para a alguns sites de busca palavras chave (keywords) que podem ser usadas 2.1 Porque Java EE tem sidoindicar tão utilizado? 17 para identificar o conteúdo do seu site. Elas são separadas por uma vírgula (,). Exemplo: 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 <meta APIs name= "keywords" content="Palavras-chave sempre separadas por vírgula"> 19 2.3.2 Contêiners 19 18.10.8.2 - Frames 2.3.3 Deployment de aplicações 21 Possibilita, porarquiteturas exemplo, que se determine uma área da tela para ser a página principal e outras áreas para 3 Análise de 21 menus ou links. Isso usado de maneira coordenada pode ser de grande ajuda na navegabilidade pelas páginas de 3.1 Arquitetura Física e Arquitetura Lógica 21 seu site. O primeiro passo para se criar uma estrutura usando frames é definir o Frameset ou conjunto de frames, 3.2 Tipos de aplicações na WEB 21 que será estruturado cada quadro na tela em termos de linhas (rows) e colunas (cols), e quais páginas 3.3 indica como Arquitetura MVC para a Web 21 deverão ser apresentadas em cada um desses quadros. 3.4 Vantagens da arquitetura MVC 22 No primeiro exemplo vamos dividir a tela em duas áreas: um menu lateral e uma área principal ocupando a 4 Ambiente de desenvolvimento 23 maior da tela. 4.1 parteTomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 cols="100 , * "> 4.1.2 Qual versão de JDK <frameset utilizar 24 <frame src= menu.html name = "area-menu"> 4.1.2.1 JAVA_HOME 24 FramesInstalar ou quadros <frame src= apresentacao.html name="area-principal"> 4.2 Tomcat 25 </frameset> permitem a divisão 4.2.1 Qual versão da de Tomcat utilizar 25 4.2.2 Iniciar e parar 25 tela de exposição do o Tomcat 4.2.2.1 [Windows] Tomcat como serviço 25 browser em diferentes 4.2.2.2 Tomcat como processo 26 áreas onde pode-se 4.3 Testar Tomcat 26 apresentar diferentes 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 páginas. 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 147 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 163 www.3way.com.br Java WEB Java WEB No exemplo anterior temos a tela dividida em duas áreas, definidas por duas colunas verticais. A primeira, Sumário com tamanho de 100 pixels, recebeu o nome de area-menu e nela estamos apresentando a página menu.html. A segunda ocupa o restante da tela ( indicado por "*" ), recebeu o nome de area principal, e nela estamos 1 JDBC 8 apresentando inicialmente a página apresentacao.html. 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 18.10.8.3 - IFrame 1.2.1 O iframe java.sql.DriverManager 8 é um recurso em desuso, embora seja muito funcional. Ele é muito prático pois cria uma janela 1.3 você quiser Fábrica de Conexões 9 onde para colocar uma página de html. Basta você colocar o seguinte código aonde deseja que a sua 1.4 Criar Banco de Dados e Tabelas 10 janela do Iframe apareça: 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 <iframe name= ”enquete” src="enquete.html" frameBorder=”0” width=”400” 1.7 Fechando a Conexão 12 height= ”150” scrolling=auto></iframe> 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 Onde: 1.9.1 – Datada Access Object 13 - name:DAO é o nome janela, ele será usado caso você queira criar links que abram dentro do iframe, usando o 1.9.2 Pesquisando 14 atributo target da TAG de links <a></a>. 1.9.3 Recurso avaçando: O Cursor 15 - src: é a página que será aberta dentro do iframe. 1.9.4 Alteração 16 - frameborder: borda do frame. 1.9.5 16 - width Exclusão e height: largura e altura do iframe, respectivamente. 2 - scrolling: Introdução Java Enterprise Edition 17 barra dearolagem. 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 No caso Ode que é Java um Enterprise 18 colocar iframe Edition? num post, você deve fazer o upload do arquivo html e das figuras (se tiver) e 2.3 A plataforma Enterprise Edition os dados como você preferir. Lembre-se que o HTML trabalha 18 depois colocar o código Java acima no post alterando 2.3.1 com APIs sempre referências. Todos os arquivos vão ficar no mesmo nível, portanto não utilize nome de pastas para19 os 2.3.2 Contêiners 19 atributos src , tanto das imagens quando do iframe. 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Cascading Arquitetura Física e Arquitetura 21 18.11 Style Sheet – CSS Lógica 3.2 Tipos de aplicações na WEB 21 18.11.1 Introdução 3.3 Arquitetura MVC para a Web 21 Você pode definir uma A CSS traz para a WEB a mesma conveniência de um só lugar para definir os 3.4 Vantagens da arquitetura MVC 22 estilos que estão disponíveis na maioria dos editores de texto. CSS em uma 4 Ambiente de desenvolvimento 23 Embora a metodologia da CSS funcione com a HTML , ela não é um HTML. Em 4.1 Tomcat localização central 23 vez disso, a CSS é umJSE código separado que amplia as capacidades do HTML, 4.1.1 Instalar Java SDK (JDK) para afetar a 24 permitindo que você redefina outilizar modo como as tags HTML funcionam. 4.1.2 Qual versão de JDK 24 aparência das tags 4.1.2.1 JAVA_HOME 24 18.11.2 Usando CSSTomcat com HTML HTML em uma única25 4.2 Instalar da folha de estilo em cascata é que ela é incrivelmente fácil de 4.2.1 O melhor Qual versão de Tomcat utilizar 25 página da WEB ou em configurar. Não exige plug-ins ou softwares diferente, apenas regras. 4.2.2 Iniciar e parar o Tomcat todo um site da WEB25 . definir regras que dizem a uma tag HTML especifica o seu 4.2.2.1 Podemos [Windows] Tomcat como serviço 25 conteúdo, podecomo criar processo regras genéricas e, em seguida, aplicá-las às TAGS como 4.2.2.2 ou Tomcat 26 quiser. Existem três etapas na regras da CSS. 4.3 Testar Tomcat 26 1 - Criar Seletor HTML:de A desenvolvimento parte de texto de uma TAG HTML se chama seletor. 4.4 contexto 26 4.4.1 Exemplo: Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 p {font: bold 12pt times;} 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 2 - Classe: Uma classe é uma regra de agente livre que pode ser aplicada a qualquer tag HTML de acordo 4.4.5 Testar contexto 29 com a sua vontade. Você pode dar à classe o nome que quiser. Uma classe é o tipo de seletor mais versátil. 4.5 Bibliotecas Servlet 29 Exemplo: 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 .minhaclasse{font bold 12pt times;} 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 148 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 164 www.3way.com.br Java WEB Java WEB 3 - ID: As regras de ID funcionam como os seletores de classe, porque podem ser aplicadas, a qualquer Tag Sumário HTML. Os seletores de ID, porém, geralmente são aplicados somente uma vez na página a determinada TAG HTML para criar um objeto para ser usado com uma função JavaScript. Exemplo: 1 JDBC 8 1.1 Banco de Dados Relacional 8 #objeto{font bold 12pt times;} 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 18.11.2.1 Estilos no próprio Elemento 1.3 Fábrica de Conexões Embora a CSS signifique nunca ter que definir a aparência de cada tag individualmente, você ainda tem9 a 1.4 Criar Banco de Dados e Tabelas 10 liberdade de definir os estilos dentro das TAGs individuais. Isso é particularmente útil para substituir cada um dos 1.5 estilos Classes Javabeans – Entidades 10 outros que estão definidos para a página. Veja o exemplo abaixo: 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 <html> 1.8 PreparedStatement ou Statement 12 <head> 1.9 Design Patterns 13 <title>CSS</title> 1.9.1 DAO – Data Access Object 13 </head> 1.9.2 Pesquisando 14 <body style="background-color:black;"> 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração <br> 16 1.9.5 Exclusão <h1 style="color:red">Cascading Style Sheet</h1> 16 2 Introdução a<h2 Java style="color:yellow">CSS</h2> Enterprise Edition 17 2.1 Porque Java <BR> EE tem sido tão utilizado? 17 2.2 O que é Java<P Enterprise Edition? 18 style="color:White"> 2.3 A plataforma HTML Java Enterprise Edition 18 <br> 2.3.1 APIs 19 HTML <br> 2.3.2 Contêiners 19 </p> 2.3.3 Deployment de aplicações 21 </body> 3 Análise de arquiteturas 21 </html> 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação 27 18.11.2.2 Estilos no Escopo da Página web 4.4.3 A principal Configurar contexto: web.xml 27 utilização da CSS é para definir as regras de todo um documento. Para fazer isso, você deve 4.4.4 Ativar contexto 29 inclui as regras de estilo no título do documento aninhado dentro de um conteiner de estilo. 4.4.5 Testar contexto 29 Embora os resultados 4.5 Bibliotecas Servlet do acréscimo de estilo dessa forma possam parecer idênticos ao acréscimo dos 29 estilos diretamente em uma TAG HTML , a colocação dos estilos em uma localização comum permite alterar os 4.6 Testar seus servlets 30 estilos documento a partir de um único lugar. Veja o mesmo exemplo acima como ficaria: 4.7 de um Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 149 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 165 www.3way.com.br Java WEB Java WEB <html> <head> <title>CSS</title> JDBC <style type="text/css"> Banco de Dados Relacional body{background-color:black;} JDBC – Java Database Connectivity h1{color:red;font-size:25px;} java.sql.DriverManager h2{color:yellow;font-size:80px;} Fábrica de Conexões p{color:white;} Criar Banco de Dados e Tabelas </style> Classes Javabeans – Entidades </head> Inserindo Dados <body> Fechando a Conexão <br> PreparedStatement ou Statement <h1>Cascading Style Sheet</h1> Design Patterns <h2>CSS</h2> DAO – Data <BR> Access Object Pesquisando <P> Recurso avaçando: O Cursor HTML<br> Alteração HTML <br> Exclusão </P> </body> Introdução a Java Enterprise Edition </html> Porque Java EE tem sido tão utilizado? Sumário 1 8 1.1 8 1.2 8 1.2.1 8 1.3 9 1.4 10 1.5 10 1.6 11 1.7 12 1.8 12 1.9 13 1.9.1 13 1.9.2 14 1.9.3 15 1.9.4 16 1.9.5 16 2 17 2.1 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 18.11.2.3 Estilos Definidos em Arquivos Externos 4.4 Criar contexto de desenvolvimento 26 É um arquivo de texto normal, que pode ter qualquer extensão, apesar de podermos atribuir a extensão 4.4.1 Estrutura de diretórios 26 .css para lembrarmos que tipo de arquivo é. O texto que devemos incluir deve ser escrito exclusivamente em 4.4.2 Criar contexto de aplicação web 27 sintaxe CSS, ou seja, seria errado incluir o código HTML nas TAGS e etc. 4.4.3 Configurar contexto: web.xml 27 Linkando a página com a folha de estilos, para isso, vamos colocar a TAG <LINK> com os atributos: 4.4.4 Ativar contexto 29 - rel="STYLESHEET" indicando que o link é com uma folha de estilos 4.4.5 Testar contexto 29 - type="text/css" porque o arquivo é de texto, em sintaxe CSS 4.5 Bibliotecas Servlet 29 - href="estilos.css" indica o nome do arquivo fonte dos estilos 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 Vejamos uma página web inteira que linka com a declaração de estilos anterior. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 150 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 166 www.3way.com.br Java WEB Java WEB <html> <head> <link rel="STYLESHEET" type="text/css" href="estilos.css"> JDBC <title>P&aacute;gina que lê estilos</title> Banco de Dados Relacional </head> JDBC – Java Database Connectivity <body> java.sql.DriverManager <h1>P&aacute;gina que lÊ estilos</h1> Fábrica de Conexões Esta p&aacute;gina tem no cabeçalho a etiqueta necessária para Criar Banco de Dados com e Tabelas linkar a folha de estilos. é muito f&aacute;cil. Classes Javabeans – Entidades <br> Inserindo Dados <br> Fechando a Conexão <table width="300" cellspacing="2" cellpadding="2" border="0"> PreparedStatement <tr> ou Statement Design Patterns <td>Isto est&aacute; dentro de um TD, logo tem estilo DAO – Data Access Object próprio, declarado no arquivo externo</td> Pesquisando </tr> Recurso avaçando: O Cursor <tr> Alteração <td>A segunda fila do TD</td> </tr> Exclusão </table> Introdução a Java Enterprise Edition </body> Porque Java EE tem sido tão utilizado? </html> O que é Java Enterprise Edition? Sumário 1 8 1.1 8 1.2 8 1.2.1 8 1.3 9 1.4 10 1.5 10 1.6 11 1.7 12 1.8 12 1.9 13 1.9.1 13 1.9.2 14 1.9.3 15 1.9.4 16 1.9.5 16 2 17 2.1 17 2.2 18 2.3 A plataforma Java Enterprise Edition 18 18.11.3 de Estilos 2.3.1 Declaração APIs 19 de estilos é o fragmento de uma regra CSS dentro dos colchetes { }. A declaração CSS compõe-se 2.3.2 Declaração Contêiners 19 de duas partes: a propriedade e o valor e uma regra CSS pode conter várias declarações separadas por um ponto-e2.3.3 Deployment de aplicações 21 vírgula. Por Análise exemplo: 3 de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 P {Tipos de aplicações na WEB 3.2 21 font-size : 12pt; 3.3 Arquitetura MVC para a Web 21 font-family : arial,helvetica; 3.4 Vantagens da arquitetura MVC 22 font-weight : normal; 4 Ambiente de desenvolvimento 23 } 4.1 Tomcat 23 4.1.1 H1{Instalar Java JSE SDK (JDK) 24 : utilizar 36pt; 4.1.2 Qualfont-size versão de JDK 24 font-family : verdana,arial; 4.1.2.1 JAVA_HOME 24 text-decoration : underline; 4.2 Instalar Tomcat 25 : center; 4.2.1 Qualtext-align versão de Tomcat utilizar 25 background-color : Teal; 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 } [Windows] Tomcat como serviço 25 4.2.2.2 TD{Tomcat como processo 26 font-size : 10pt; 4.3 Testar Tomcat 26 font-family : verdana,arial; 4.4 Criar contexto de desenvolvimento 26 text-align : center; 4.4.1 Estrutura de diretórios 26 background-color : 666666; 4.4.2 Criar contexto de aplicação web 27 4.4.3 } Configurar contexto: web.xml 27 BODY { 4.4.4 Ativar contexto 29 background-color : #006600; 4.4.5 Testar contexto 29 font-family 4.5 Bibliotecas Servlet : arial; 29 color : White; 4.6 Testar seus servlets 30 } Testar seus JSPs 4.7 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 151 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 167 www.3way.com.br Java WEB Java WEB 18.11.4 Seletores Sumário Seletor é uma entidade que identifica um elemento HTML ou define uma classe ou pseudo classe na qual a regra de estilo será aplicada. 1 JDBC 8 Por exemplo: 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 12px;} 1.2.1 p {font-size: java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 O seletor é p (elemento HTML parágrafo) e a regra CSS escrita determina que os parágrafos terão uma fonte 1.4 Criar Banco de Dados e Tabelas 10 de 12px. Javabeans – Entidades 1.5tamanho Classes 10 1.6 Inserindo Dados 11 18.11.4.1 Seletores de 1.7 Fechando a Classes Conexão 12 Seletor tipo classe tem uma abrangência mais ampla. É um seletor cujo 1.8 PreparedStatement ou Statement 12 nome você "inventa" e pode ser aplicado a qualquer elemento HTML. A sintaxe para Quando se trabalha o 1.9 Design Patterns 13 este seletor é um nome (nome da classe) precedido de um . (ponto) O nome 1.9.1tipo de DAO – Data Access Object CSS com seletores, 13 pode letras de a-z, A-Z, números de 0-9, hífen, ou caracter de escape. 1.9.2 conter Pesquisando 14 significa que todos os Caracteres Unicode 161-255 , bem como qualquer caracter Unicode de código 1.9.3 Recurso avaçando: O Cursor 15 elementos do tipo númerico, contudo não podem começar com um (traço) ou um número. Exemplo: 1.9.4 Alteração 16 definido na página 1.9.5 Exclusão 16 .minhaclasse {color: #FF0000 ;} 2 Introdução a Java Enterprise Edition 17 terá o 2.1 Porque Java EE tem sido tão utilizado? comportamento 17 18.11.4.2 Sintaxe Ultilizada para Definição de Seletores 2.2 O que é Java Enterprise Edition? 18 descrito no CSS do 18 A sintaxe de umaJava regra css obedece o seguinte padrão: 2.3 A plataforma Enterprise Edition seletor. 2.3.1 APIs 19 2.3.2 Contêiners 19 seletor 2.3.3 Deployment de aplicações 21 { 3 Análise de arquiteturas 21 propriedade: valor 3.1 Arquitetura Física e Arquitetura Lógica 21 } 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 18.11.5 Propriedade de Estilo CSS 3.4 da arquitetura MVC em CSS possuem duas dimensões: a 22 As Vantagens propriedades de formatação 4 Ambiente de desenvolvimento 23 dimensão textual (o código) e a dimensão visual (o efeito dos códigos). 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 18.11.5.1 Configurações Essenciais 4.1.2 As Qual versão de JDK utilizar 24 configurações mais essenciais realizadas com as propriedades CSS é em relação a tabelas 4.1.2.1 JAVA_HOME 24 <table></table> , blocos que ficam entre as TAGS <div></div>, Tags de marcação como: 4.2 Instalar Tomcat 25 <span></span> - é utilizada para a configuração de trechos de parágrafos; 4.2.1 <strong></strong> Qual versão de Tomcat utilizar 25 - é ultilizada no HTML para deixar o texto em negrito; 4.2.2 <p></p> Iniciar- e parar o Tomcat 25 marcação de parágrafos. 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Essas Tomcat como processo configurações na maioria das vezes são setadas para alteração no visual de textos e alteração 26 no 4.3 Testar Tomcat 26 posicionamento de determinadas partes do documento. 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 18.11.5.2 Tabela de Unidades 4.4.2 As unidades Criar contexto de aplicação web 27 de medida de comprimento CSS referem-se a medidas na horizontal ou na vertical, em sentido 4.4.3 Configurar contexto: web.xml 27 mais amplo, em qualquer direção. 4.4.4 O formato Ativar contexto 29 para declarar o valor de uma unidade de medida CSS é um número com ou sem ponto decimal 4.4.5 Testar contexto 29 imediatamente precedido do sinal '+' (mais) ou do sinal '-' (menos), sendo o sinal '+' (mais) o valor default e 4.5 Bibliotecas Servlet 29 imediatamente seguido por uma unidade identificadora válida: p, ex, px, em, deg, etc... A unidade identificadora é 4.6 Testarse seus servlets 30 opcional quando declara um valor '0' (zero). 4.7 Testar seus JSPs 31 Algumas das propriedades CSS permitem que sejam declarados valores negativos para unidades de medida. 4.8 Logs 31 A adoção de valores negativos podem complicar a formatação do elemento e devem ser usados com cautela. 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 152 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 168 www.3way.com.br Java WEB Java WEB São dois os tipos de unidade de medida de comprimento CSS: Sumário Unidade relativa - é aquela tomada em relação a uma outra medida. Folhas Se valores negativos de Estilo em Cascata que usam unidades de comprimento relativas são mais não forem suportados 8 1 JDBC apropriadas para ajustes de uso em diferentes tipos de mídia. (p. ex., de uma tela de pela aplicação de 8 1.1 Banco Dados Relacional monitor para uma de impressora laser). 1.2 Database Connectivity usuário, eles serão 8 O JDBC valor – é Java tomado em relação: 1.2.1 java.sql.DriverManager  em: ...ao tamanho da fonte ('font-size') herdada; convertidos para o 8 1.3 Conexões 9  Fábrica ex: ...ade altura da letra x (xis) da fonte herdada; valor mais próximo 10 1.4 Criar Banco de Dados e Tabelas  px: ...ao dispositivo (midia) de exibição; suportado, isso pode10 1.5 – Entidades  Classes %: ... aJavabeans uma medida previamente definida. 1.6 Inserindo Dados- é aquela que não esta referenciada a qualquer outra tornar-se desastroso11 Unidade absoluta 1.7 Fechando a Conexão unidade e nem é herdada. São unidades de medida de comprimento definidas nos para um layout. 12 1.8 PreparedStatement ou Statement 12 sistemas de medidas pela física e em fim são os conhecidos: centímetros, polegadas 1.9 Design Patterns 13 e etc... São indicadas para serem usadas quando as mídias de exibição são 1.9.1 DAO – Data Access Object 13 perfeitamente conhecidas. 1.9.2 Pesquisando 14  pt - point :1/72 in; 1.9.3 O Cursor 15  pc -Recurso pica :12avaçando: points ou 1/6 in; 1.9.4 Alteração 16  mm - milímetro :1/10 cm; 1.9.5 16  cm Exclusão - centímetro :1/100 m; 2  in - Introdução a Java Enterprise Edition 17 polegada :2,54 cm; 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 AbaixoO que é Java Enterprise Edition? 18 exemplos ilustrativos do uso destas medidas de comprimento CSS: 2.3 div {Amargin: plataforma Java Enterprise Edition 18 1.5em; } 2.3.1 APIs 19 h4 { margin: 2ex; } 2.3.2 Contêiners 14px; } 19 p { font-size: 2.3.3 Deployment de aplicações 21 .classe { padding: 90%; } 3 hr { Análise de arquiteturas 21 width: 14pt; } 3.1 h1 { Arquitetura Física} e Arquitetura Lógica 21 margin: 1pc; 3.2 h2 { Tipos de aplicações na WEB 21 font-size: 4mm; } 3.3 p.classe Arquitetura MVC para a Web 21 { padding: 0.3cm; } 3.4 h5.classe Vantagens da arquitetura MVC} 22 { padding: 0.5in; 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 Entendendo as unidades de medida CSS 4.1.1 Instalar Java JSE SDK (JDK) 24 1 - A unidade de medida - pixel 4.1.2 Qual versão de JDK utilizar A unidade de medida de comprimento pixel é relativa a resolução 24 do 4.1.2.1 JAVA_HOME 24 dispositivo de exibição (a tela de um monitor). Sem entrar em maiores Pixel Instalar é o menor 4.2 Tomcat considerações teóricas a mais simplista definição de pixel que encontrei é esta: 25 um de Tomcat utilizar 4.2.1elemento Qualem versão Considere um dispositivo de exibição construido com uma densidade de 25 90 4.2.2 dispositivo Iniciar ede parar o Tomcat 25 dpi (dpi = dots per inch = pontos por polegada). Por definição, a referência padrão 4.2.2.1 [Windows] como serviço 25 para pixel é igual a um ponto no citado dispositivo. Daí pode-se concluir que 1 pixel exibição, ao qual Tomcat é 4.2.2.2 Tomcat como processo 26 naquele dispositivo de exibição é igual a 1/90 inch = 0,28 mm. Para uma densidade possivel atribuir-se 4.3 Testar Tomcat 26 de 300 dpi 1 pixel é igual a 1/300 inch = 0,085mm. Assim, pixel é uma medida relativa uma cor. 4.4 Criar contexto de desenvolvimento 26 a resolução do dispositivo de exibição. 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web de medida - em 27 2 - A unidade 4.4.3 Configurar contexto: web.xml A unidade de medida de comprimento em referencia-se ao tamanho 27 da 4.4.4 Ativar contexto 29 fonte (letra) do seletor onde for declarada. Quando em for declarada para a 4.4.5 Testar contexto propriedade font-size referencia-se ao tamanho da fonte (letra) do elemento pai. 29 4.5 Bibliotecas Servlet Quando em for declarada para o elemento raiz do documento referencia-se ao valor 29 4.6 Testar seus servletsinicial (default) do tamanho de fonte (letra). Os exemplos abaixo esclarecem 30 as 4.7 Testar seus JSPs definições: 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 153 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 169 www.3way.com.br Java WEB Java WEB h1 { font-size: 1.2em } Sumário line-height de <h1> será 20% maior do que o tamanho das letras de <h1> 1 JDBC 8 h1 { font-size: 1.2em } 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 de <h1> será 20% maior do que o tamanho das letras herdado por <h1>, exemplo: se h1 estiver 1.2.1 font-size java.sql.DriverManager 8 contido numa div com font-size=10px então font-size de h1 = 12px 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 3 - A unidade de medida - ex 1.6 Inserindo Dados 11 A unidade de medida de comprimento ex é igual a altura da letra x(xis) minúscula. 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 4 - A unidade de medida - percentagem, % 1.9 Design Patterns 13 percentagem são relativos a um outro valor anterior declarado. Este valor anterior há que estar 1.9.1 Valores DAOem – Data Access Object 13 bem e em geral esta definição está em uma determinada propriedade do mesmo elemento, 14 na 1.9.2 definido Pesquisando propriedade do elemento "pai" exemplo: uma medida CSS de comprimento) ou mesmo no contexto geral 15 da 1.9.3 Recurso avaçando: O(por Cursor formatação (por exemplo: a largura do bloco de conteúdo). 1.9.4 Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 p { font-size: 10px } 2.1 Porque Java EE tem sido tão utilizado? 17 p { line-height: 120% } 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 18.11.5.3 Fontes 2.3.1 As APIs 19 propriedades para as fontes, definem as características (os valores na regra CSS) das letras que 2.3.2 Contêiners constituem os textos dentro dos elementos HTML. As propriedades básicas para fontes são as listadas abaixo: 19 2.3.3  color: Deployment de aplicações 21 ...................cor da fonte 3 Análise de arquiteturas 21  font-family:.........tipo de fonte 3.1 Arquitetura Física e Arquitetura Lógica 21  font-size: .............tamanho de fonte 3.2 Tipos de aplicações na de WEB 21  font-style: ...........estilo fonte 3.3 Arquitetura MVC para a Web 21  font-variant:........fontes maiúsculas de menor altura 3.4 Vantagens da arquitetura MVC 22  font-weight: ........quanto mais escura a fonte é (negrito) 4 Ambiente de desenvolvimento 23  font: .....................maneira abreviada para todas as propriedades 4.1 Tomcat 23 4.1.1 Instalar JSE (JDK) 24 Valores válidosJava para as SDK propriedades da fonte: 4.1.2 Qual versão de JDK utilizar 24  color: 4.1.2.1 JAVA_HOME 24 1. código hexadecimal: #FFFFFF 4.2 Instalar Tomcat 25 2. código rgb: rgb(255,235,0) 4.2.1 Qual versão de Tomcat utilizar 25 3. nome da cor: red, blue, green...etc 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25  font-family: 4.2.2.2 Tomcat como processo 26 1. family-name: define-se pelo nome da fonte, 4.3 Testar 26 p. Tomcat ex:"verdana", "helvetica", "arial", etc. 4.4 Criar contexto de desenvolvimento 26 2. generic-family: define-se pelo nome genérico, 4.4.1 Estrutura de diretórios 26 p. ex:"serif", "sans-serif", "cursive", etc. 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27  font-size: 4.4.4 Ativar contexto 29 1. xx-small 4.4.5 Testar contexto 29 2. x-small 4.5 Bibliotecas Servlet 29 3. small 4.6 Testar seus servlets 30 4. medium 4.7 Testar seus JSPs 31 5. large 4.8 Logs 31 6. x-large 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 154 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 170 www.3way.com.br Java WEB Java WEB 7. xx-large 8. smaller 9. larger 1 JDBC 10.length: uma medida reconhecida pelas CSS (px, pt, em, cm, ...) 1.1 Banco 11.% de Dados Relacional 1.2 JDBC – Java Database Connectivity 1.2.1 java.sql.DriverManager  font-style: 1.3 Fábrica de Conexões 1. normal: fonte normal na vertical 1.4 Criar Banco de Dados e Tabelas 2. italic: fonte inclinada 1.5 Classes Javabeans – Entidades 3. oblique:fonte obliqua 1.6 Inserindo Dados 1.7  font-variant: Fechando a Conexão 1.8 PreparedStatement ou Statement 1. normal: fonte normal 1.9 Design Patterns transforma em maiúsculas de menor altura 2. small-caps: 1.9.1 DAO – Data Access Object 1.9.2 Pesquisando  font-weight: 1.9.3 Recurso avaçando: O Cursor 1. normal 1.9.4 Alteração 2. bold 1.9.5 Exclusão 3. bolder 2 Introdução 4. lighter a Java Enterprise Edition 2.1 Porque 5. 100Java EE tem sido tão utilizado? 2.2 O6. que é Java Enterprise Edition? 200 2.3 A7. plataforma Java Enterprise Edition 300 2.3.1 APIs 8. 400 2.3.2 Contêiners 9. 500 2.3.3 Deployment de aplicações 10.600 3 Análise de arquiteturas 11.700 3.1 Arquitetura Física e Arquitetura Lógica 12.800 3.2 Tipos de aplicações na WEB 13.900 3.3 Arquitetura MVC para a Web 3.4 Vantagens da arquitetura MVC Exemplo: 4 Ambiente de desenvolvimento 4.1 Tomcat <html> 4.1.1 Instalar Java JSE SDK (JDK) <head> 4.1.2 Qual versão de JDK utilizar <style> 4.1.2.1 JAVA_HOME 4.2 Instalar Tomcat div{font-family: “Purisa”; font-size:50px; font-style: italic; } 4.2.1 Qual versão de Tomcat utilizar 4.2.2 Iniciar e parar o Tomcat </style> 4.2.2.1 [Windows] Tomcat como serviço </head> 4.2.2.2 Tomcat como processo 4.3 Testar Tomcat 4.4 Criar<body> contexto de desenvolvimento 4.4.1 Estrutura de diretórios 4.4.2 Criar contexto de aplicaçãona web <div>Texto Fonte Purisa,<br> 4.4.3 Configurar contexto: web.xml tamanho de 50px<br> 4.4.4 Ativar contexto estilo em itálico 4.4.5 Testar contexto </div> 4.5 Bibliotecas Servlet 4.6 Testar seus servlets </body> 4.7 Testar seus JSPs </html> 4.8 Logs 4.9 Variáveis de Ambiente Sumário os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 8 8 8 8 9 10 10 11 12 12 13 13 14 15 16 16 17 17 18 18 19 19 21 21 21 21 21 22 23 23 24 24 24 25 25 25 25 26 26 26 26 27 27 29 29 29 30 31 31 32 155 1 171 Java WEB Java WEB Sumário 1 JDBC 8 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 18.11.5.4 Cores 1.9.4 Alteração 16 Basicamente existem 6 maneiras diferentes de definir cores no CSS. E, se considerarmos que para as duas 1.9.5 Exclusão 16 primeiras regras é válido usar letras minúsculas, existem 8 maneiras de se definir uma cor em uma regra CSS. 2 Introdução a Java Enterprise Edition 17 Exemplos para definir a cor vermelho: 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 TR {background-color: #FF0000;} 2.3 A plataforma Java Enterprise Edition 18 TR {background-color: #F00;} 2.3.1 APIs 19 TR {background-color: rgb(255, 0, 0);} 2.3.2 Contêiners 19 TR {background-color: rgb(100%, 0%, 0%);} 2.3.3 Deployment de aplicações 21 TR {background-color: red;} 3 Análise de arquiteturas 21 TR {background-color: ThreeDShadow;} 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 Definir uma cor pelo seu código hexadecimal 3.3 Arquitetura MVC para a Web 21 Esta é a maneira mais conhecida de definir uma cor. Convém ressaltar que em uma regra CSS é indiferente 3.4 Vantagens da arquitetura MVC 22 usar letras maiúsculas ou minúsculas na sintaxe hexadecimal de cores e também que é válido abreviar a notação 4 Ambiente de desenvolvimento 23 para três dígitos. Na notação abreviada cada um dos três dígitos é automaticamente dobrado conforme exemplos a 4.1 Tomcat 23 seguir: 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 #FFF = #FFFFFF 4.1.2.1 JAVA_HOME 24 #CF9 = #CCFF99 4.2 Instalar Tomcat 25 = versão #ccddee 4.2.1 #cde Qual de Tomcat utilizar 25 #49c = #4499cc 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 é do escopo desta apostila detalhar o código hexadecimal, contudo ressaltamos que os dezesseis 4.2.2.2 NãoTomcat como processo 26 dí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, podendo 4.3 Testar Tomcat 26 em usada qualquer deles. Assim: #FFDDHH não define uma cor, pois H não é válido. 4.4 geral ser Criar contexto decombinação desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 umaCriar contexto de aplicação 27 Definir cor pelo seu código rgb web 4.4.3 RGB Configurar contexto: 27 é abreviatura para: web.xml r = red (vermelha) 4.4.4 Ativar contexto 29 green (verde) 4.4.5 g =Testar contexto 29 b =Bibliotecas blue (azul) 4.5 Servlet 29 4.6 Testar seus servlets 30 Assim o código rgb(xxx, yyy, zzz) indica uma cor obtida com a mistura de uma quantidade xxx de vermelho 4.7 Testar seus JSPs 31 com verde e com zzz de azul. Duas são as maneiras de se definir a quantidade de cada uma das três cores: 31 4.8 yyy de Logs 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 156 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 172 www.3way.com.br Java WEB Java WEB - Uma faixa de númeração de 0 (zero) até 255 Sumário - Em percentagem de 0% até 100% 1 8 NãoJDBC é válido usar em uma definição número e percentagem. Exemplos: 1.1 Banco de Dados Relacional 8 - definições válidas 1.2 JDBC – Java Database Connectivity 8 rgb(145, 230, 50) - rgb(20%, 0%, 70%) 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 - definição não válida 1.4 Criar Banco de Dados e Tabelas 10 rgb(255, 20%, 120) 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 Definir cor por palavra-chave 1.7 Fechando a Conexão 12 Você pode definir uma usando o nome da cor. Os nomes de cor válidos são os listados nas 1.8 PreparedStatement oucor Statement 12 recomendações CSS do W3C. As recomendações para CSS listam as seguintes 17 cores: 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 Palavra-Chave Código Hexadecimal Código RGB 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 0,255,255 Aqua #00FFFF 1.9.4 Alteração 16 0,0,0 Black #000000 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 0,0,255 Blue #0000FF 2.1 Porque Java EE tem sido tão utilizado? 17 255,0,0 Fuchsia #FF00FF 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 128,128,128 Gray #808080 2.3.1 APIs 19 0,128,0 Green #008000 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 0,255,0 Lime #00FF00 3 Análise de arquiteturas 21 128,0,0 Maroon #800000 3.1 Arquitetura Física e Arquitetura Lógica 21 0,0,128 Navy #000080 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 128,128,0 Olive #808000 3.4 Vantagens da arquitetura MVC 22 255,165,0 Orange Ambiente de desenvolvimento #FFA500 4 23 4.1 Tomcat 23 128,0,128 Purple #800080 4.1.1 Instalar Java JSE SDK (JDK) 24 255,0,0 Red #FF0000 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 192,192,192 Silver #C0C0C0 4.2 Instalar Tomcat 25 0,128,128 Teal #008080 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat #FFFFFF 25 255,255,255 White 4.2.2.1 [Windows] Tomcat como serviço 25 255,255,0 Yellow #FFFF00 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 Exemplo: 4.4 Criar contexto de desenvolvimento 26 4.4.1 p {color: Estrutura aqua;} de diretórios 26 {background-color: 4.4.2 divCriar contexto de aplicaçãoteal;} web 27 4.4.3 Configurar contexto: web.xml 27 Definir cor baseado no sistema operacional do usuário 4.4.4 Ativar contexto 29 4.4.5 As recomendações Testar contexto para CSS preconizam a definição da cor baseado nas cores adotadas pelo sistema 29 operacional do usuário. Este tipo de unidade de definição de cor denominado System Colors está em desuso e não 4.5 Bibliotecas Servlet 29 deverá constar das futuras recomendações CSS3 . Trata-se de uma lista de nomes de cores válidas à semelhança da 4.6 Testar seus servlets 30 listagem de Testar cores por palavra-chave e que se refere a áreas do sistema operacional. 4.7 seus JSPs 31 As cores 4.8 Logs previstas são: 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 157 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 173 www.3way.com.br Java WEB Java WEB ActiveBorder, ActiveCaption, AppWorkspace, Background, ButtonFace, ButtonHighlight, ButtonShadow, Sumário ButtonText, CaptionText, GrayText, Highlight, HighlightText, InactiveBorder, InactiveCaption, InactiveCaptionText, InfoBackground, InfoText, Menu, MenuText, Scrollbar, ThreeDDarkShadow, 1 JDBC 8 ThreeDFace, ThreeDHighlight, ThreeDLightShadow, ThreeDShadow, Window, WindowFrame, 1.1 Banco de Dados Relacional 8 WindowText 1.2 JDBC – Java Database Connectivity 8 1.2.1 Embora java.sql.DriverManager os valores CSS sejam case insensitives recomenda-se usar a grafia com letras maiúsculas 8 e 1.3 Fábrica de Conexões 9 minúsculas ao se escrever o nome das cores de sistema por razões de legibilidade. Exemplos: 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 p {color: ThreeDLightShadow;} 1.6 Inserindo Dados 11 div {background: ButtonShadow;} 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 18.11.5.5 Bordas 1.9 Design Patterns As propriedades para as bordas, definem as características (os valores na regra CSS) das quatro bordas 13 de 1.9.1 DAO – Data Access Object para as bordas são as listadas abaixo: 13 um elemento HTML. As propriedades 1.9.2 Pesquisando 14 1.9.3 border-width: Recurso avaçando: O Cursor da borda 15 ...............espessura 1.9.4 border-style: Alteração................estilo da borda 16 1.9.5 border-color: Exclusão ................cor da borda 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 border-top-width:...........espessura da borda superior 2.2 O que é Java Enterprise Edition? 18 border-top-style: ............estilo da borda superior 2.3 A plataforma Java Enterprise Edition 18 border-top-color:............cor da borda superior 2.3.1 APIs 19 2.3.2 border-right-width: Contêiners 19 ........espessura da borda direita 2.3.3 border-right-style: Deployment de..........estilo aplicações da borda direita 21 3 Análise de arquiteturas 21 border-right-color:..........cor da borda direita 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 border-bottom-width:.......espessura da borda inferior 3.3 Arquitetura MVC para a Web 21 border-bottom-style:.........estilo da borda inferior 3.4 Vantagens da arquitetura MVC 22 border-bottom-color: .........cor da borda inferior 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 border-left-width: .........espessura da borda esquerda 4.1.1 border-left-style: Instalar Java JSE SDK (JDK) 24 ...........estilo da borda esquerda 4.1.2 border-left-color: Qual versão de JDK utilizar 24 ...........cor da borda esquerda 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 border-top:.........maneira abreviada para todas as propriedades da borda superior 4.2.1 Qual versão de Tomcat utilizar 25 border-right:.......maneira abreviada para todas as propriedades da borda direita 4.2.2 Iniciar e parar o Tomcat 25 ..maneira abreviada 4.2.2.1 border-bottom: [Windows] Tomcat como serviçopara todas as propriedades da borda inferior 25 .........maneira abreviada para todas as propriedades da borda esquerda 4.2.2.2 border-left: Tomcat como processo 26 border: ................maneira abreviada para todas as quatro bordas 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 Valores válidos para as propriedades das bordas 4.4.2 Criar contexto de aplicação web 27  color: 4.4.3 Configurar contexto: web.xml 27 1. código hexadecimal: #FFFFFF 4.4.4 Ativar contexto 29 2. código rgb: rgb(255,235,0) 4.4.5 Testar contexto 29 3. nome da cor: red, blue, green...etc 4.5 Bibliotecas Servlet 29 4.6  style: Testar seus servlets 30 4.7 Testar seus JSPs 31 1. none: nenhuma borda 4.8 Logs 31 2. hidden: equivalente a none 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 158 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 174 www.3way.com.br Java WEB Java WEB 3. dotted: borda pontilhada 4. dashed: borda tracejada 5. solid: borda contínua 1 JDBC 8 6. double: borda dupla 1.1 Banco de Dados Relacional 8 7. groove: borda entalhada 1.2 JDBC – Java Database Connectivity 8 8. ridge: borda em ressalto 1.2.1 java.sql.DriverManager 8 9. inset: borda em baixo relevo 1.3 Fábrica de Conexões 9 10.outset: borda em alto relevo 1.4 Criar Banco de Dados e Tabelas 10 1.5  width: Classes Javabeans – Entidades 10 1.6 Inserindo Dadosfina 11 1. thin: borda 1.7 Fechando a Conexão 12 2. medium: borda média 1.8 PreparedStatement ou Statement 12 3. thick: borda grossa 1.9 Design Patterns 13 4. length: uma medida reconhecida pelas CSS (px, pt, em, cm, ...) 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 18.11.5.6 Box Model ( Modelo de Caixa ) 1.9.3 O box Recurso avaçando: O Cursor 15 model (modelo das caixas) em CSS, descreve os boxes (as caixas) geradas pelos elementos HTML. O 1.9.4 Alteração 16 box model, detalha ainda, as opções de ajuste de margens, bordas, padding e conteúdo para cada elemento. 1.9.5 Para Exclusão 16 ilustrar este conceito, considere um cabeçalho de nível 1 e um parágrafo, conforme marcação a seguir: 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 h1 { background-color:#99CC99; } 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 p { background-color:#FFCCCC; } 2.3.1 APIs 19 2.3.2 A seguir Contêiners 19 acresentamos uma regra CSS para a largura dos elementos : 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 h1 { 3.1 Arquitetura background-color:#99CC99; Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 width:400px; 3.3 Arquitetura MVC para a Web 21 } 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 p { 4.1 Tomcat 23 4.1.1 Instalar Javabackground-color:#FFCCCC; JSE SDK (JDK) 24 4.1.2 Qual versão width:350px; de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 } 4.2 Instalar Tomcat 25 4.2.1 No próximo Qual versão de Tomcat utilizar 25 passo acrescentamos uma regra CSS para as bordas dos elementos: 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 h1 { 4.2.2.2 Tomcat como processo 26 background-color:#99CC99; 4.3 Testar Tomcat 26 width:400px; 4.4 Criar contexto de desenvolvimento 26 border:10px solid #FF0000; 4.4.1 Estrutura de diretórios 26 } 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 p { 4.4.4 Ativar contexto 29 background-color:#FFCCCC; 4.4.5 Testar contexto 29 width:350px; 4.5 Bibliotecas Servlet 29 border:5px solid #0000FF; 4.6 Testar 30 } seus servlets 4.7 Testar seus JSPs 31 4.8 Logs 31 A seguir acresentamos uma regra CSS para os espaçamentos dos elementos: 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 159 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 175 Sumário www.3way.com.br Java WEB Java WEB Sumário h1 { background-color:#99CC99; 1 JDBC 8 width:400px; 1.1 Banco de Dados Relacional solid #FF0000; 8 border:10px 1.2 JDBC – Java Database Connectivity 8 padding:20px; 1.2.1 java.sql.DriverManager 8 } 1.3 Fábrica de Conexões 9 p { 1.4 Criar Banco de Dados e Tabelas 10 background-color:#FFCCCC; 1.5 Classes Javabeans – Entidades 10 width:350px; 1.6 Inserindo Dados 11 border:5px solid #0000FF; 1.7 Fechando a Conexão 12 padding:10px; 1.8 PreparedStatement ou Statement 12 } 1.9 Design Patterns 13 1.9.1 A seguir DAO acrescentamos – Data Access Object 13 uma regra CSS para as margens dos elementos: 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 h1 { 1.9.4 Alteração background-color:#99CC99; 16 1.9.5 Exclusão width:400px; 16 2 Introdução a Java Enterprisesolid Edition #FF0000; 17 border:10px 2.1 Porque Javapadding:20px; EE tem sido tão utilizado? 17 2.2 O que é Javamargin:50px; Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 } Existem outros dois 19 2.3.1 APIsp { 2.3.2 Contêiners background-color:#FFCCCC; modos de aplicar 19 2.3.3 Deploymentwidth:350px; de aplicações 21 estilos a um 3 Análise de arquiteturas 21 border:5px solid #0000FF; determinado 3.1 Arquitetura padding:10px; Física e Arquitetura Lógica 21 elemento no HTML: 21 3.2 Tipos de aplicações na WEB margin:50px; 3.3 Arquitetura MVC para a Web 21 } classes e ids. 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 18.11.5.7 Aplicando Estilos aos Principais Elementos HTML 4.1 Tomcat 23 Para aplicar estilos aos elementos HTML, como já dito, é so declarar no 4.1.1 Instalar Java JSE SDK (JDK) 24 seletor a TAG em que você quer definir as propriedades do CSS. Usando as classes, 4.1.2 Qual versão de JDK utilizar 24 você pode inventar um nome ao seletor e atribuir propriedades CSS ao mesmo. 4.1.2.1 JAVA_HOME 24 Exemplo: 4.2 Instalar Tomcat 25 4.2.1 .minhaClasse{ Qual versão de color:#red; Tomcat utilizar font-style: bold; } 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 Para [Windows] Tomcat como serviço no classe minhaClasse tenham efeito, 25 que as propriedades definidas 4.2.2.2 Tomcat como processo 26 devemos colocar o nome da classe no atributo class de qualquer elemento HTML. Exemplo: 4.3 Testar Tomcat 26 4.4 contexto de desenvolvimento 26 <p Criar class= ”minhaClasse” > Imprime esse texto na cor Vermelha e em negrito</p> 4.4.1 <strong Estrutura de diretórios class=”minhaClasse”>Outro elemento com as mesmas propriedades</strong>26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Construindo Configurar contexto: web.xml nossos documentos HTML, em determinado momento queremos aplicar um bloco 27 de 4.4.4 Ativar contexto 29 propriedades CSS a um único elemento. Quando esse tipo de definição se faz essencial é necessário incluirmos no 4.4.5 Testar contexto 29 elemento um ID setando dentro dele qualquer nome, que é o atributo pelo qual vamos declarar as propriedades 4.5 Bibliotecas Servlet 29 CSS. Exemplo: 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 <div id=”corpo”>...</div> 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 160 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 176 www.3way.com.br Java WEB Java WEB Aplicando as propriedades CSS ao elemento: Sumário 1 JDBC 8 border-top:2px dotted #FF00FF; 1.1 Banco de Dados Relacional Verdana; 8 font-family: 1.2 JDBC – Java Database Connectivity 8 color: #C0C0C0; 1.2.1 java.sql.DriverManager 8 padding: 2px; 1.3 Fábrica 9 } de Conexões 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes como Javabeans – Entidades 10 De acordo definimos o seletor acima, as propriedades só irão ser aplicadas para o elemento no qual 1.6 ID for Inserindo Dados 11 seu corpo. Dessa maneira aplicamos efeitos CSS a um único elemento, visando a integridade do seu 1.7 Fechando a Conexão 12 documento HTML. 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 18.11.5.8 Configurações para Barra de Rolatem 1.9.1 Existem DAO propriedades – Data Access no Object 13 CSS capaz de estilizar a barra de rolagem do Internet Explorer. No Ópera este 1.9.2 Pesquisando 14 recurso não está ativado por padrão, nem há fixação disponíveis na interface do 1.9.3 O usuário Recursotem avaçando: O Cursor 15 usuário. que adicionar uma linha ao seu arquivo opera6.ini. Na "[User 1.9.4 Alteração 16 Prefs]", a linha a seguir deve ser adicionado: Outros browsers não 1.9.5 Scrollbar Exclusão 16 Enable Colors=1 suportam esse 17 2 Introdução a Java Enterprise Edition Qualquer prática de estilização que interfira diretamente com o navegador do recurso. 2.1 Porque Java EE tem sido acessibilidade tão utilizado? ou conflitando com preferências 17 usuário, pode estar dificultando 2.2 O que é Java 18 pessoais, portanto, use Enterprise todo seuEdition? esforço e poder de persuasão no sentido de 2.3 A plataforma Java Enterprise Edition 18 convencer seu cliente a não adotar esta prática pois é uma tecnologia particular e 2.3.1 APIs 19 deve ser evitada. 2.3.2 Exemplo: Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 body { 3.1 Arquitetura scrollbar-arrow-color:#000000; Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 scrollbar-3dlight-color:#000000; 3.3 Arquitetura scrollbar-highlight-color:#FF0000; MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 scrollbar-face-color:#FFFFFF; 4 Ambiente de desenvolvimento 23 scrollbar-shadow-color:#0000FF; 4.1 Tomcat 23 scrollbar-darkshadow-color:#FFFF00; 4.1.1 Instalar Javascrollbar-track-color:#00FF00; JSE SDK (JDK) 24 4.1.2 Qual}versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 18.11.5.9 Listas 4.2.1 A propriedade Qual versãolist de Tomcat utilizar 25 define as características (valores) das listas HTML. As propriedades list são as listadas 4.2.2 Iniciar e parar o Tomcat 25 abaixo: 4.2.2.1 [Windows] Tomcat como serviço 25 ..........onde o marcador da lista é posicionado; 4.2.2.2  list-style-position Tomcat como processo 26  list-style-type...............tipo do marcador da lista; 4.3 Testar Tomcat 26  list-style........................maneira abreviada para todas as propriedades; 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 Valores válidos para as propriedades do lista: 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4  list-style-position: Ativar contexto 29 4.4.5 Testar 29 1. contexto outside: marcador fora do alinhamento do texto 4.5 Bibliotecas Servlet 29 2. inside: marcador alinhado com texto 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31  list-style-type: 4.8 Logs1. none: sem marcador 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 161 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 178 www.3way.com.br #corpo{ Java WEB Java WEB 2. disc: círculo (bolinha cheia) 3. circle: circunferência (bolinha vazia) 4. square: quadrado cheio 1 JDBC 8 5. decimal: números 1, 2, 3, 4, ... 1.1 Banco Dados Relacional 8 6. de decimal-leading: zero 1.2 JDBC – Java Database Connectivity 8 7. lower-roman: romano minúsculo i, ii, iii, iv, ... 1.2.1 java.sql.DriverManager 8 8. upper-roman: romano maiúsculo I, II, III, IV, ... 1.3 Fábrica Conexões letra minúscula a, b, c, d, ... 9 9. de lower-alpha: 1.4 Criar Banco de Dados e Tabelas 10 10. upper-alpha: letra maiúscula A, B, C, D, ... 1.5 Classes – Entidades 10 11. Javabeans lower-greek 1.6 Inserindo Dados 11 12. lower-latin 1.7 Fechando a Conexão 12 13. upper-latin 1.8 PreparedStatement ou Statement 12 14. hebrew 1.9 Design 13 15.Patterns armenian 1.9.1 DAO16. – Data Access Object 13 georgian 1.9.2 Pesquisando 14 17. cjk-ideographic 1.9.3 Recurso avaçando: O Cursor 15 18. hiragana 1.9.4 Alteração 16 19. katakana 1.9.5 Exclusão 16 20. hiragana-iroha 2 Introdução a Java Enterprise Edition 17 21. katakana-iroha 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é JavaCustomizados Enterprise Edition? 18 18.11.5.10 Marcadores 2.3 A plataforma Java Enterprise Edition 18 Usando a propriedade list-style-image é possível customizar os marcadores das listas HTML usando uma 2.3.1 APIs 19 imagem qualquer. O valor dessa propriedade é definido pela URL ( caminho ) da imagem que se quer ter como 2.3.2 Contêiners 19 marcador. 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 list-style-image: 3.1 Arquitetura Física e Arquitetura Lógica 21 none 3.2 Tipos de aplicações na WEB 21 URL: url(caminho/marcador.gif) 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 Exemplos: 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 <html> 4.1.1 Instalar Java JSE SDK (JDK) 24 <head> 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 <title>LISTA CUSTOMIZADO</title> 4.2 Instalar Tomcat 25 4.2.1 Qual<style> versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 ul 4.2.2.1 [Windows] Tomcat como serviço 25 { 4.2.2.2 Tomcat como processo 26 list-style-image: url("img/marcador.gif"); 4.3 Testar Tomcat 26 } 4.4 Criar contexto de desenvolvimento 26 </style> 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 <body> 4.4.3 Configurar contexto: web.xml 27 <ul> 4.4.4 Ativar contexto 29 <li>Item 1</li> 4.4.5 Testar contexto 29 <li>Item 2</li> 4.5 Bibliotecas Servlet <li>Item 3</li> 29 4.6 Testar seus servlets 30 </ul> 4.7 Testar seus JSPs 31 </body> 4.8 Logs 31 </html> 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 162 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 179 Sumário www.3way.com.br Java WEB Java WEB Sumário 1 JDBC 8 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 18.11.5.11 Hyperlinks 1.9.1 DAO – Data Access Object 13 efeitos em links são possíveis através de declarações de regras de estilo para as pseudo classes 14 do 1.9.2 Os Pesquisando elemento <a> do HTML. As pseudo classes são usadas em CSS, para adicionar efeitos diferentes a alguns seletores, 1.9.3 Recurso avaçando: O Cursor 15 ou a uma instância de alguns seletores. 1.9.4 Alteração 16 A sintaxe das pseudo classes: 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 Seletor : pseudo classe valor} 2.1 Porque Java EE tem {propriedade: sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 As classes em CSS podem também ser usadas com pseudo classes. Esta regra permite que você defina 2.3 A plataforma Java Enterprise Edition 18 diferentes efeitos 2.3.1 APIs para links localizados em diferentes lugares em uma mesma página. No último item deste tutorial 19 "Diferentes estilos de links em uma mesma página web" veremos este efeito. 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 seletor.class: 3 Análise depseudo-class arquiteturas { propriedade: valor } 21 3.1 Arquitetura Física e Arquitetura Lógica 21 SãoTipos quatro as pseudo classes dos links: 3.2 de aplicações na WEB 21 a:link .........define o estilo link no estado inicial; 3.3 Arquitetura MVC para do a Web 21 a:visited ....define o estilo do link visitado; 3.4 Vantagens da arquitetura MVC 22 a:hover .....define o estilo do link quando passa-se o mouse sobre ele; 4 Ambiente de desenvolvimento 23 a:active .....define o estilo do link ativo (o que foi "clicado"). 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Exemplo: Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 a:active{ 4.2 Instalar Tomcat 25 4.2.1 Qual versão color:#FF0000; de Tomcat utilizar 25 } 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 a:houver{ 4.2.2.2 Tomcat como processo 26 color:#0000FF; 4.3 Testar Tomcat 26 4.4 Criar}contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 a:link{ 4.4.2 Criar contexto de aplicação web 27 color:#00FF00; 4.4.3 Configurar contexto: web.xml 27 } 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 a:visited{ 4.5 Bibliotecas Servlet 29 color:C0C0C0; 4.6 Testar seus servlets 30 } 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 163 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 180 www.3way.com.br Java WEB Java WEB 18.11.5.12 Botões Sumário Os efeitos CSS em botões são gerados a partir de uma classe. Exemplo: 1 JDBC 8 .botao { 1.1 Banco de Dados Relacional 8 border: 1px solid #000000; - Definição da borda do botão 1.2 JDBC – Java Database Connectivity 8 font-family: Verdana; 1.2.1 java.sql.DriverManager 8 padding: 2px; 1.3 Fábrica de Conexões 9 background: #CCCCCC; 1.4 Criar Banco de Dados e Tabelas 10 } 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 Esse mesmo efeito pode ser gerado a partir do seletor input, entretanto todos os campos input do 1.7 Fechando a Conexão 12 documento receberiam essas declarações. Exemplo: 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 Input { 1.9.1 DAO – Data Access Object 13 border: 1px solid #000000; 1.9.2 Pesquisando 14 font-family: Verdana; 1.9.3 Recurso avaçando: O Cursor 15 padding: 2px; 1.9.4 Alteração 16 } 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 18.11.5.13 Campos para Entrada de Textos 2.1 Porque Java EE tem sido tão utilizado? 17 Os efeitos CSS em Campos de entrada de textos ( input com o atrituto type = text ) são declaradas a partir 2.2 O que é Java Enterprise Edition? 18 de uma classe ou declaradas no próprio elemento. O elemento input tem, geralmente, as mesmas propriedades 2.3 A plataforma Java Enterprise Edition 18 para todos as diferenciações de tipos: 2.3.1 APIs 19 Exemplo: 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 .formulario { 3 Análise de arquiteturas 21 border:1px solid #006699; - define as propriedades da borda do 3.1 Arquitetura 21 campo;Física e Arquitetura Lógica 3.2 Tipos de aplicações na WEB 21 font-family:Verdana; - define qual será a fonte do campo texto; 3.3 Arquitetura size:12px; MVC para a Web 21 - define o tamanho da fonte; 3.4 Vantagens da arquitetura MVC 22 background: #CCCCCC; - define a cor de fundo. 4 Ambiente de desenvolvimento 23 } 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 18.11.5.14 Caixas de Seleção 4.1.2 Exemplo: Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 .select { 4.2.1 Qual versão border:1px de Tomcat utilizar 25 solid #000000; - define a propriedade da borda ( não 4.2.2 Iniciar e pararno o Tomcat 25 aceito IE ) 4.2.2.1 [Windows] Tomcat como serviço 25 font-family:Arial; - define qual será a fonte do campo 4.2.2.2 Tomcat como processo 26 background: #FF00FF; 4.3 Testar Tomcat 26 size: 10px; 4.4 Criar 26 }contexto de desenvolvimento 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contextoCursores de aplicação web 27 18.11.5.15 Manipulando 4.4.3 Usando Configurar contexto: web.xml 27 o CSS é possível alterar o cursor em algumas partes do documento ou em seu conteúdo geral. 4.4.4 segue Ativar contexto 29 Abaixo a lista de cursores disponíveis por padrão no Windows. 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 default (seta) 4.6 Testar(cruz) seus servlets 30 crosshair 4.7 Testar seus JSPs 31 e-resize (seta que aponta à direita) 4.8 Logs 31 hand (mão) 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 164 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 181 www.3way.com.br Java WEB Java WEB help (sinal de pergunta) Sumário move (cruz com setas nas extremidades) n-resize (seta que aponta para cima) 1 JDBC (seta que aponta ao nordeste) ne-resize 1.1 Banco (seta de Dados Relacional nw-resize que aponta ao noroeste) 1.2 JDBC – Java Database Connectivity pointer (mão) 1.2.1 s-resize java.sql.DriverManager (seta que aponta para baixo) 1.3 Fábrica de Conexões se-resize (seta que aponta para o sudeste) 1.4 Criar Banco de Dados e para Tabelas sw-resize (seta que aponta o sudoeste) 1.5 Classes Javabeans – Entidades text (I-beam) 1.6 Inserindo w-resize (setaDados que aponta à esquerda) 1.7 Fechando a Conexão wait (relógio de areia) 1.8 PreparedStatement ou Statement 1.9 Design Patterns Alterando em todo o documento: 1.9.1 DAO – Data Access Object 1.9.2 Pesquisando <html> 1.9.3 Recurso avaçando: O Cursor 1.9.4 Alteração <title>Alterando o cursos em todo o documento</title> 1.9.5 Exclusão <head> <style Edition type="text/css"> 2 Introdução a Java Enterprise body {cursor: crosshair} 2.1 Porque Java EE tem sido tão utilizado? </style> 2.2 O que é Java Enterprise Edition? </head> 2.3 A plataforma Java Enterprise Edition <body> 2.3.1 APIs 2.3.2 Contêiners </body> </html> 2.3.3 Deployment de aplicações 3 Análise de arquiteturas Alterando em algumas do documento: 3.1 Arquitetura Física e partes Arquitetura Lógica 3.2 Tipos de aplicações na WEB 3.3 Arquitetura <html>MVC para a Web 3.4 Vantagens da arquitetura MVC <head> <title>Mudar o cursor</title> </head> 4 Ambiente de desenvolvimento <body> 4.1 Tomcat <p style="cursor: default">default</p> 4.1.1 Instalar Java JSE SDK<p (JDK) style="cursor: crosshair">crosshair</p> 4.1.2 Qual versão de JDK utilizar <p style="cursor: pointer">pointer</p> 4.1.2.1 JAVA_HOME <p style="cursor: move">move</h4> 4.2 Instalar Tomcat <p style="cursor: nw-resize">nw-resize</p> 4.2.1 Qual versão de Tomcat <p utilizar style="cursor: ne-resize">ne-resize</p> 4.2.2 Iniciar e parar o Tomcat <p style="cursor: n-resize">n-resize</p> 4.2.2.1 [Windows] Tomcat como serviço <p style="cursor: e-resize">e-resize</p> 4.2.2.2 Tomcat como processo <p style="cursor: help">help</p> 4.3 Testar Tomcat <p style="cursor: text">text</p> 4.4 Criar contexto de desenvolvimento <p style="cursor: wait">wait</p> 4.4.1 Estrutura de</body> diretórios 4.4.2 Criar</html> contexto de aplicação web 4.4.3 Configurar contexto: web.xml 4.4.4 Cursores Ativarpersonalizados: contexto 4.4.5 Testar contexto 4.5 Bibliotecas Servlet <html> 4.6 Testar seus servlets <head> 4.7 Testar seus JSPs <title>Mudar o cursor</title> 4.8 Logs <style type="text/css"> 4.9 Variáveis de Ambiente os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 8 8 8 8 9 10 10 11 12 12 13 13 14 15 16 16 17 17 18 18 19 19 21 21 21 21 21 22 23 23 24 24 24 25 25 25 25 26 26 26 26 27 27 29 29 29 30 31 31 32 165 1 182 Java WEB Java WEB body {cursor : url("qualquer_imagem.cur")} </style> </head> JDBC <body> Banco de Dados Relacional </body> JDBC – Java Database Connectivity </html> Sumário 1 8 1.1 8 1.2 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 18.11.5.16 Tabelas 1.4 Criar Banco de Dados e Tabelas 10 Borda Simples 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 table.comBordaSimples 1.7 Fechando a Conexão 12 { 1.8 PreparedStatement ou Statement 12 border-collapse: collapse; - retira as bordas duplas nas células da tabela 1.9 Design Patterns 13 background: #FFFFF0; 1.9.1 DAO – Data Access Object 13 1.9.2 } Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 td – define propriedades para a tag td da tabela 1.9.4 table.comBordaSimples Alteração 16 1.9.5 { Exclusão 16 2 Introdução a Java Enterprise Edition 17 border: 1px solid black; 2.1 Porque Java EE tem sido tão utilizado? 17 } 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 table.comBordaSimples th – define propriedades para o tag th da tabela 2.3.1 APIs 19 { 2.3.2 Contêiners 19 border: 1px solid black; 2.3.3 Deployment de aplicações 21 border-bottom: 2px solid black; - propriedades para a borda inferior 3 Análise de arquiteturas 21 background: #F0FFF0; 3.1 Arquitetura Física e Arquitetura Lógica 21 } 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 Bordas sobrepostas 3.4 Vantagens da arquitetura MVC) 'hidden' são suprimidas (ocultas) e têm precedência sobre todas 22 Bordas com estilo ('border-style' as 4 Ambiente de desenvolvimento 23 outras bordas conflitantes/coincidentes. Se nenhuma das bordas tem estilo 'hidden', a borda mais larga (maior 4.1 Tomcat 23 'border-width' ) tem precedência. Se várias bordas tiverem o mesmo 'border-width', o estilo tem precedência, 4.1.1 Instalar Java JSE SDK (JDK) 24 nesta (maior) 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove', 'inset' (menor). Bordas com 4.1.2 ordem: Qual versão de JDK utilizar 24 'border-style' igual a 'none' (nenhum) têm sempre a menor prioridade. 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Exemplo Qual versão de Tomcat utilizar 25 de bordas: 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 166 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 183 www.3way.com.br Java WEB Java WEB Sumário JavaScript é uma linguagem que permite injetar lógica em páginas escritas em HTML (HyperText Mark-up Language) . JDBC Os parágrafos de lógica do javaScript podem estar soltos ou atrelados a ocorrência de eventos. 1 8 1.1 Banco de Dados Relacional 8 18.12.1 Dentro de um Documento HTML 1.2 JDBC – Java Database Connectivity 8 inserir parágrafos de programação dentro do HTML é necessário identificar o início e o fim do set de 1.2.1 Para java.sql.DriverManager 8 JavaScript, da seguinte forma: 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 <SCRIPT> 1.5 Classes Javabeans – Entidades Os parágrafos soltos 10 Set de instruções 1.6 Inserindo Dados 11 </SCRIPT> são executados na 12 1.7 Fechando a Conexão sequência em que 12 1.8 PreparedStatement ou Statement Este procedimento pode ser adotado em qualquer local da página. 1.9 Design Patterns aparecem na página 13 Entretanto, para melhor visualização e facilidade de manutenção, recomenda-se que 1.9.1 DAO – Data Access Object toda a lógica seja escrita no início do documento, através da criação de funções a (documento) e os 13 1.9.2 Pesquisando 14 serem invocadas quando se fizer necessário (normalmente atreladas a eventos). atrelados a eventos 1.9.3 Os Recurso avaçando: O Cursor 15 comandos JavaScript são sensíveis ao tipo de letra (maiúsculas e são executados 1.9.4 Alteração 16 minúsculas) em sua sintaxe. Portanto, é necessário que seja obedecida a forma de 1.9.5 apenas quando o 16 escrever osExclusão comandos, de acordo com a forma apresentada ao longo deste manual. 2 Introdução a Java Enterprise Edition 17 Caso seja cometido algum erro de sintaxe quando da escrita de um comando, o evento ocorre. 2.1 Porque Java EE tem sido tão utilizado? 17 JavaScript interpretará, o que seria um comando, como sendo o nome de uma 2.2 O que é Java Enterprise Edition? 18 variável. 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 18.12.2 Arquivo Externo 2.3.2 Você Contêiners 19 pode também usar seus códigos em arquivos externos usando o 2.3.3 Deployment de aplicações 21 atributo SRC=”url-do-arquivo”, mas lembre-se que sempre que você colocar seus 3 Análise de arquiteturas 21 códigos em arquivos externos você precisará nomeá-los com a extensão .JS exemplo: 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 <script src= ”meucodigo.js” ></script> 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens arquitetura MVC 22 18.12.3 Tratadores de da Eventos 4 Ambiente de desenvolvimento 23 São fatos que ocorrem durante a execução do sistema, a partir dos quais o programador pode definir ações 4.1 Tomcat pelo programa. Abaixo apresentamos a lista dos eventos possíveis, indicando os momentos em 23 a serem realizadas 4.1.1 Instalar Java JSE SDK (JDK) 24 que os mesmos podem ocorrer, bem como, os objetos passíveis de sua ocorrência. 4.1.2 onload Qual versão de JDK utilizar 24 - Ocorre na carga do documento. Ou seja, só ocorre no BODY do documento. 4.1.2.1 onunload JAVA_HOME 24 - Ocorre na descarga (saída) do documento. Também só ocorre no BODY. 4.2 Instalar Tomcat 25 onchange - Ocorre quando o objeto perde o focus e houve mudança de conteúdo. Válido para os objetos 4.2.1 Text, Qual versão de Tomcat utilizar 25 Select e Textarea. 4.2.2 onblur Iniciar e pararquando o Tomcat - Ocorre o objeto perde o focus, independente de ter havido mudança. Válido para 25 os 4.2.2.1 objetos [Windows] Tomcat como serviço 25 Text, Select e Textarea. 4.2.2.2 onfocus Tomcat como quando processo 26 - Ocorre o objeto recebe o focus. Válido para os objetos Text, Select e Textarea. 4.3 Testar Tomcatquando o objeto recebe um Click do Mouse. Válido para os objetos Buton, Checkbox, 26 onclick - Ocorre 4.4 Criar contexto de desenvolvimento 26 Radio, Link, Reset e Submit. 4.4.1 onmouseover Estrutura de diretórios - Ocorre quando o ponteiro do mouse passa por sobre o objeto. Válido apenas para Link. 26 4.4.2 onselect Criar contexto de aplicação web 27 - Ocorre quando o objeto é selecionado. Válido para os objetos Text e Textarea. 4.4.3 onsubmit Configurar contexto: web.xml - Ocorre quando um botão tipo Submit recebe um click do mouse. Válido apenas para o Form. 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 18.12.4 Sintaxe da Linguagem 4.5 Bibliotecas Servlet 29 A linguagem Javascript tem uma sintaxe muito parecida a de Java por estar baseado nele. Também é muito 4.6 Testar seus servlets 30 parecida a da linguagem C, de modo que se o leitor conhece alguma destas duas linguagens poderá manejar com 4.7 Testar seus JSPs 31 facilidade com o código. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 167 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 184 www.3way.com.br 18.12 JavaScript Java WEB Java WEB Sumário Comentários Um comentário é uma parte de código que não é interpretada pelo navegador e cuja utilidade radica em 1 JDBC ao programador. O programador, a medida que desenvolve o script, vai deixando frases ou palavras 8 facilitar a leitura 1.1 Banco de Dados Relacional 8 soltas, chamadas comentários, que ajudam a ele ou a qualquer outro a ler mais facilmente o script na hora de 1.2 JDBC – Java Database Connectivity 8 modificá-lo ou depurá-lo. 1.2.1 Existem java.sql.DriverManager 8 dois tipos de comentários na linguagem. Um deles, a barra dupla, serve para comentar uma linha 1.3código. Fábrica Conexões podemos utilizar para comentar várias linhas e se indica com os signos /* para 9 de O outrode comentário 1.4 Criar Banco de Dados e Tabelas 10 começar o comentário e */ para terminá-lo. Vejamos uns exemplos: 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 <script> //Este é um comentário de uma linha 1.7 Fechando a Conexão 12 /*Este comentário pode se expandir 1.8 PreparedStatement ou Statement 12 por várias linhas. 1.9 Design Patterns 13 As que quiser*/ 1.9.1 </script> DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 Separação de instruções 1.9.4 Alteração 16 As distintas instruções que contém nossos scripts devem ser separadas convenientemente para que o 1.9.5 Exclusão 16 navegador não indique os correspondentes erros de sintaxe. Javascript tem duas maneiras de separar instruções. A 2 Introdução a Java Enterprise Edition 17 primeira é através do caractere ponto e vírgula (;) e a segunda é através de uma quebra de linha. 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 18.12.5 Declaração de Variáveis 2.3 A plataforma Java Enterprise Edition 18 A variável é criada automaticamente, pela simples associação de valores a mesma. 2.3.1 APIs 19 As variáveis podem 2.3.2 Contêiners 19 NovaVariavel = "Jose" ser Locais ou 21 2.3.3 Exemplo: Deployment de aplicações Globais. 21 3 Análise de arquiteturas Foi criada a variável de nome NovaVariavel que, passou a conter a String Jose. As 3.1 Arquitetura Física e Arquitetura Lógica 21 variáveis que são de criadas dentro de uma função são Locais e referenciáveis apenas dentro 3.2 Tipos aplicações na WEB 21 da variáveis criadas fora funções são Globais, podendo serem referenciadas 3.3função. As Arquitetura MVC para a de Web 21 em qualquer parte do documento. 3.4 Vantagens da arquitetura MVC 22 Desta forma, de variáveis que precisam ser referenciadas por várias funções ou em 4 Ambiente desenvolvimento 23 outra parte do documento, precisam ser definidas como globais. Embora não seja 4.1 Tomcat 23 recomendável, em uma função, pode ser definida uma variável local com o mesmo nome 4.1.1 Instalar Java JSE SDK (JDK) 24 de uma variável isso utiliza-se o método de definição var. 4.1.2 Qual global. versão Para de JDK utilizar 24 Exemplo: 4.1.2.1 JAVA_HOME 24 Variável Global: MinhaVariavel = ""; 4.2 Instalar Tomcat 25 Local: var MinhaVariavel = ""; 4.2.1 Variável Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 18.12.6 Reservadas 4.2.2.1 Palavras [Windows] Tomcat como serviço 25 várias palavras que são reservadas para o JavaScript as quais são listadas abaixo. Essas palavras não 4.2.2.2 Existem Tomcat como processo 26 podem ser utilizadas para identificar variáveis ou funções. 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 abstract boolean break byte catch 4.4.2 Criar contexto de aplicação web 27 case cath char class const 4.4.3 Configurar contexto: web.xml 27 continue default debugger delete do 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 double else enum export extends 4.5 Bibliotecas Servlet 29 false final finally float for 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 function goto if implements import 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 168 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 185 www.3way.com.br Java WEB Java WEB in instanceof int interface long Sumário native new null package private 1 JDBC 8 protected public return short static 1.1 Banco de Dados Relacional 8 super switch synchronized this throw 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 throws transcient true try typeof 1.3 Fábrica de Conexões 9 var void while with 1.4 Criar Banco de Dados e Tabelas volatile 10 1.5 Classes Javabeans – Entidades 10 18.12.7 Tipos de Dados 1.6 Inserindo Dados 11 1.7 Fechando Conexão 12 Vemos os trêsatipos de dados que suporta javascript: numérico, boleano e texto. 1.8 PreparedStatement ou Statement 12 Cada uma destas classes de informação é o tipo de dados. Javascript distingue entre três O Javascript 1.9 de dados Design 13 tipos e Patterns todas as informações que se podem salvar em variáveis vão estar 1.9.1 DAO – Datadestes Accesstipos Object trabalha com 13 encaixadas em algum de dados. Vejamos detalhadamente quais são estes 1.9.2 Pesquisando três tipos de dados. variáveis de 14 1.9.3 Recurso avaçando: O Cursor 15 diversas classes de 1.9.4 Alteração 16 Tipo de dados numérico informação, como 1.9.5 Nesta Exclusão 16 linguagem só existe um tipo de dados numérico, ao contrário do que 2 Introdução Java Enterprise Edition textos ou 17 ocorre na maioria das a linguagens mais conhecidas. Todos os números são portanto, do 2.1 numérico, Porque Java EE tem sido tão utilizado? tipo independentemente da precisão que tenham ou se são números reais ou números. 17 2.2 que é Java Enterprise 18 inteiros. OsOnúmeros inteiros são Edition? números que não têm vírgula, como 3 ou 339. Os 2.3 A plataforma Java fracionários, Enterprise Edition 18 números reais são números como 2.69 ou 0.25, que também se podem 2.3.1 APIs 19 escrever em nota científica, por exemplo, 2.482e12. 2.3.2 Com Contêiners 19 Javascript também podemos escrever números em outras bases, como a 2.3.3 Deployment de aplicações 21 hexadecimal. As bases são sistemas de numeração que utilizam mais ou menos dígitos 3 Análise de arquiteturas 21 para escrever os números. Existem três bases com as que podemos trabalhar: 3.1 Arquitetura Física e Arquitetura Lógica 21 - Base 10 3.2 Tipos de aplicações na WEB 21 É o sistema que utilizamos habitualmente, o sistema decimal. Qualquer número, 3.3 Arquitetura MVC para a Web 21 por padrão, se entende que está escrito em base 10. 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 - Base 8 4.1 Tomcat 23 Também chamado sistema octal, que utiliza dígitos do 0 ao 7. Para escrever um número em octal basta 4.1.1 simplesmente Instalar Java JSE SDK (JDK) 24 escrever este número precedido de um 0, por exemplo 045. 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 - Base 16 ou sistema hexadecimal 4.2 Instalar Tomcat 25 É o sistema de numeração que utiliza 16 dígitos, os compreendidos entre o 0 e o 9 e as letras de A à F, para 4.2.1 Qual versão de Tomcat utilizar 25 os dígitos que faltam. Para escrever um número em hexadecimal devemos escrevê-lo precedido de um zero 4.2.2 Iniciar e parar o Tomcat 25 e um “xis”, por exemplo, 0x3EF. 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 Tipo boleano 4.3 Testar Tomcat 26 O tipo boleano, boolean em inglês, serve para realizar operações lógicas, geralmente para realizar ações26 se 4.4 Criar contexto de desenvolvimento o conteúdo de uma variável é verdadeiro ou falso. 4.4.1 Estrutura de diretórios 26 Se uma variável é verdadeira, então: Executo umas instruções Se não Executo outras 4.4.2 Criar contexto de aplicação web 27 valorescontexto: que podem ter as variáveis boleanas são true ou false. 4.4.3 Os dois Configurar web.xml 27 4.4.4 Ativar contexto 29 = true 4.4.5 minhaBoleana Testar contexto 29 minhaBoleana = false 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 169 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 186 www.3way.com.br Java WEB Java WEB Tipo de dados cadeia de caracteres Sumário O ú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, 1 JDBC outro tipo de caracteres e signos. Os textos se escrevem entre aspas, duplas ou simples. 8 letras e qualquer 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 meuTexto = "Miguel vai pescar" 1.2.1 java.sql.DriverManager 8 meuTexto = '23%%$ Letras & *--*' 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 Tudo o que se coloca entre aspas, como nos exemplos anteriores é tratado como uma cadeia de caracteres 1.5 Classes Javabeans – Entidades 10 independentemente do que coloquemos no interior das aspas. Por exemplo, em uma variável de texto podemos 1.6 Inserindo Dados 11 salvar 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 a 1.7 Fechando a Conexão 12 mesma coisa e que enquanto as de numéricas nos servem para fazer cálculos matemáticos, as de texto não servem. 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 Caracteres de escape em cadeias de texto. 1.9.1 DAO – Data Access Object 13 uma série de caracteres especiais que servem para expressar em uma cadeia de texto determinados 1.9.2 Existe Pesquisando 14 controles como pode ser uma quebra de linha ou um tabulador. Estes são os caracteres de escape e se escrevem 1.9.3 Recurso avaçando: O Cursor 15 com uma nota especial que começa por uma contra-barra (uma barra inclinada ao contrário da normal '\') e logo16 se 1.9.4 Alteração coloca o código do caractere a mostrar. 1.9.5 Exclusão 16 Um Introdução caractere muito é aEdition quebra de linha, que se consegue escrevendo \n. Outro caractere muito 2 a Javacomum Enterprise 17 habitual é colocar aspas, pois tão se colocamos 2.1 Porque umas Java EE tem sido utilizado? umas aspas sem seu caractere especial nos fechariam as aspas 17 que colocamos para iniciar a cadeia de caracteres. Temos então que introduzir as aspas com \" ou \' (aspas duplas 2.2 O que é Java Enterprise Edition? 18 ou outros caracteres escape, que veremos na tabela abaixo mais resumidos, apesar de que 2.3simples). AExistem plataforma Java Enterprisede Edition 18 também háAPIs que destacar como caractere habitual o que se utiliza para escrever uma contra-barra, para não 2.3.1 19 confundi-la com o início de um caractere de escape, que é a dupla contra-barra \\ . 2.3.2 Contêiners 19 de caracteres de escape: 2.3.3 Exemplo Deployment de aplicações 21 3 Análise de arquiteturas 21 \n Quebra de linha 3.1 Arquitetura Física e Arquitetura Lógica 21 \' - Aspas simples 3.2 Tipos de aplicações na WEB 21 \" - Arquitetura Aspas duplaMVC para a Web 3.3 21 \t Tabulador 3.4 Vantagens da arquitetura MVC 22 \r - Ambiente Enter 4 de desenvolvimento 23 \f Avance de página 4.1 Tomcat 23 Retroceder 4.1.1 \b -Instalar Javaespaço JSE SDK (JDK) 24 4.1.2 \\ - Qual versão de JDK utilizar 24 Contra-barra 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 18.12.8 Operadores 4.2.2 Iniciar e parar o Tomcat 25 Operadores Lógicos 4.2.2.1 São [Windows] Tomcat como serviço 25 operadores a serem utilizados em comandos condicionais, tais como: IF , FOR e WHILE. Os comandos 4.2.2.2 Tomcat como processo 26 condicionais serão vistos mais a frente. 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 == Igual 4.4.1 != Estrutura de diretórios 26 Diferente 4.4.2 > Criar contexto de aplicação web 27 Maior 4.4.3 >= Configurar contexto: web.xml 27 Maior ou Igual 4.4.4 < Ativar contexto 29 Menor 4.4.5 <= Testar contexto 29 Menor ou Igual 4.5 Bibliotecas Servlet 29 && E 4.6 Testar seus servlets 30 || Ou 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 170 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 187 www.3way.com.br Java WEB Java WEB Operadores Matemáticos Sumário Sã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. 1 JDBC 8 1.1 de Dados Relacional 8 + Banco adição de valor e concatenação de strings 1.2 JDBC – Java Database Connectivity 8 subtração de valores 1.2.1 java.sql.DriverManager 8 * multiplicação de valores 1.3 Fábrica de Conexões 9 / divisão de valores 1.4 Criar Banco de Dados e Tabelas 10 % obtem o resto de uma divisão. Ex: 150 % 13 retornará 7 1.5 Classes Javabeans – Entidades 10 += concatena /adiciona ao string/valor já existente. Ou seja: 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 x += y é o mesmo que x ou = xStatement + y da mesma forma podem ser utilizados: -= , *= , /= ou %= 1.8 PreparedStatement 12 Um contador pode ser simplificado utilizando-se : X++ ou X-o que equivale as expressões: 1.9 Design Patterns 13 X + 1– ou X = Access X - 1 respectivamente. 1.9.1 X = DAO Data Object 13 1.9.2 Pesquisando 14 Para inverter sinal: X = -X negativo para positivo ou positivo para negativo. 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 18.12.9 Comandos Condicionais e Laços 1.9.5 Exclusão 16 SãoIntrodução comandos a que condicionam a execução de uma certa tarefa à veracidade ou não de uma determinada 2 Java Enterprise Edition 17 condição, ou enquanto condição for verdadeira. São eles: 2.1 Porque Javadeterminada EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 Comando IF 2.3 A plataforma Java Enterprise Edition 18 (condição) 2.3.1 if APIs 19 { ação para condição satisfeita } 2.3.2 Contêiners 19 2.3.3 else Deployment de aplicações 21 { ação para condição não satisfeita } 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 Exemplo: 3.3 Arquitetura MVC para a Web 21 if (Idade < 18) 3.4 Vantagens da arquitetura MVC 22 {Categoria = "Menor"} else de desenvolvimento 4 Ambiente 23 4.1 Tomcat 23 {Categoria = "Maior"} 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Comando FOR for (criação de variável de controle;condição;incremento da variável de controle;) 4.1.2.1 JAVA_HOME 24 { Instalar ação Tomcat } 4.2 25 4.2.1 Qual versão de Tomcat utilizar 25 Exemplo: 4.2.2 Iniciar e parar o Tomcat 25 for (x = 0 ; x <= 10 ; x++) 4.2.2.1 [Windows] Tomcat como serviço 25 {alert ("X igual a " + x) } 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 Comando WHILE 4.4 Criar contexto de desenvolvimento 26 uma ação enquanto determinada condição for verdadeira. 4.4.1 Executa Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 while(condição) 4.4.3 Configurar contexto: web.xml 27 { ação } 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 Exemplo: 4.5 Bibliotecas Servlet 29 var contador = 10 4.6 Testar seus servlets 30 while (contador > 1) { contador-- } 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 171 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 188 www.3way.com.br Java WEB Java WEB O comando switch Sumário O 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ê 1 JDBC provavelmente já sabe o que o comando faz. Mas lembre-se que este comando no JavaScript serve apenas para 8 o 1.1 Banco de Dados Relacional 8 JavaScript1.2, ou seja, serve apenas para Netscape e Internet Explorer nas suas versões 4.X. 1.2 JDBC – Java Database Connectivity 8 1.2.1 switch java.sql.DriverManager 8 (variavel_de_controle) { 1.3 Fábrica de Conexões 9 opção1 : comandos ; 1.4 Criar Banco de Dados e Tabelas 10 break; 1.5 Classes Javabeans – Entidades 10 opção2 : comandos ; 1.6 Inserindo Dados 11 break ; 1.7 Fechando a Conexão 12 default : comandos; 1.8 PreparedStatement ou Statement 12 } 1.9 Design Patterns 13 1.9.1 Exemplo: DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 var teste = prompt(“digite um valor de 1 até 5”); 1.9.4 Alteração 16 1.9.5 Exclusão 16 switch(teste) { 2 Introdução a Java Enterprise Edition 17 case ‘1’: alert(‘seu valor foi 1’);break; 2.1 Porque Javacase EE tem sido tão utilizado? 17 ‘2’: alert(‘seu valor foi 2’); break; 2.2 O que é Java Enterprise 18 case ‘3’:Edition? alert(‘seu valor foi 3’); break; 2.3 A plataforma Java Enterprise Edition 18 case ‘4’: alert(‘seu valor foi 4’); break; 2.3.1 APIs 19 case ‘5’: alert(‘seu valor foi 5’); break; 2.3.2 Contêiners default: alert(‘seu valor nao foi nenhum valor entre 1 e 5’); 19 2.3.3 Deployment de aplicações 21 } 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 Operador Ternário 3.2 Tipos de aplicações na WEB 21 Nos comandos FOR e WHILE a diretiva break pode ser utilizada para interromper a condição principal e sair 3.3 Arquitetura MVC para a Web 21 do loop. Da mesma forma, a diretiva continue interrompe uma ação (se determinada condição ocorrer) mas volta 3.4 Vantagens da arquitetura MVC 22 para o loop. 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 receptor = ((condição) ? verdadeiro : falso) 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Exemplo: 4.1.2.1 NomeSexo JAVA_HOME 24 = ((VarSexo == "M") ? "Masculino" : "Feminino") Os arrays foram 25 4.2 Instalar Tomcat introduzidos em 25 4.2.1 Arrays Qual versão de Tomcat utilizar 18.12.10 4.2.2 Iniciar e parar o Tomcat versões Javascript 1.1 25 Nas linguagens de programação existem estruturas de dados especiais que 4.2.2.1 [Windows] Tomcat como serviço ou superiores, ou seja, 25 nos servem para salvar informações mais complexas do que simples variáveis. Uma 4.2.2.2 Tomcat como processo 26 estrutura típica em todas as linguagens é o Array, que é como uma variável onde somente podemos 4.3 Testar Tomcat 26 podemos introduzir vários valores, ao invés de somente um como ocorre com as utilizá-los a partir dos 26 4.4 Criar contexto de desenvolvimento variáveis normais. 4.4.1 Estrutura de diretórios navegadores 3.0. 26 Os arrays nos permitem salvar várias variáveis e acessá-las de maneira 4.4.2 Criar contexto de aplicação web 27 independente, é como ter uma variável com distintos compartimentos onde 4.4.3 Configurar contexto: web.xml 27 podemos introduzir dados distintos. Para isso utilizamos um índice que nos permite 4.4.4 Ativar contexto 29 especificar o compartimento ou posição ao qual estamos nos referindo. 4.4.5 Testar contexto 29 Para navegadores antigos se pode simular o array utilizando sintaxe de 4.5 Bibliotecas Servlet 29 programação orientada a objetos, mas dada a complexidade desta tarefa, pelo 4.6 Testar seus servlets 30 menos no momento em que nos encontramos e as poucas ocasiões que os 4.7 Testar seus JSPs 31 deveremos utilizar, vamos ver como utilizar o autêntico array de Javascript. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 172 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 190 www.3way.com.br Java WEB Java WEB 18.12.10.1 Criação e Inicialização de Arrays Sumário O 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: 1 JDBC 8 1.1 de Dados Relacional 8 varBanco meuArray = new Array() 1.2 JDBC – Java Database Connectivity 8 1.2.1 Isto java.sql.DriverManager 8 cria um array na página que está se executando. O array se cria sem nenhum conteúdo, ou seja, não 1.3 nenhum Fábrica de Conexões 9 terá campo ou compartimento criado. 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans Entidades 10 diasSemana = new – Array('Segunda','Terça','Quarta','Quinta','Sexta','Sábado', 1.6 Inserindo Dados 11 'Domingo') 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 No exemplo acima criamos um array com os dias da semana e cada dia recebeu um índice que começa pelo 1.9 Também Design Patterns 13 zero. podemos criar o array especificando o número de compartimentos que vai ter. 1.9.1 DAO – Data Access Object 13 1.9.2 varPesquisando 14 meuArray = new Array(10) 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Neste Alteração 16 caso indicamos que o array vai ter 10 posições, ou seja, 10 campos onde salvar dados. É importante 1.9.5 Exclusão 16 observarmos que a palavra Array em código Javascript se escreve com a primeira letra em maiúscula. Como em 2 Introdução ae Java Enterprise Edition 17 Javascript as maiúsculas minúsculas sim que importam, se escrevemos em minúscula não funcionará. 2.1 Porque Java EE tem sido tão utilizado? 17 Podemos introduzir no array qualquer dado, tanto se indicamos ou não o número de campos do array. Se o 2.2 está O que é Java Enterprise Edition? e se o campo não estava criado se cria e logo, se introduz o dado, com 18 campo criado se introduz simplesmente 2.3 A plataforma Javao Enterprise Edition o qual o resultado final será mesmo. Esta criação de campos é dinâmica e se produz ao mesmo tempo, que 18 os 2.3.1 APIs 19 scripts se executam. Vejamos a seguir como introduzir valores em nossos arrays. 2.3.2 Contêiners 19 2.3.3 meuArray[0] Deployment= de290 aplicações 21 3 Análise de arquiteturas 21 meuArray[1] = 97 3.1 Arquitetura Física e Arquitetura Lógica 21 meuArray[2] = 127 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 Introduzem-se indicando entre colchetes o índice da posição onde queríamos salvar o dado. Neste caso 3.4 Vantagens da arquitetura MVC 22 introduzimos 290 na posição 0, 97 na posição 1 e 127 na 2. Os arrays começam sempre na posição 0, portanto, um 4 Ambiente de desenvolvimento 23 array que tenha por exemplo 10 posições, terá campos do 0 ao 9. Para recolher dados de um array fazemos da 4.1 Tomcat 23 mesma forma: colocando entre colchetes o índice da posição a qual queremos acessar. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 18.12.10.2 Acessando os Elementos do Array 4.1.2.1 JAVA_HOME 24 Para acessar os elementos de um array bastaria saber o tamanho do mesmo e acessá-los em um loop. 4.2 Instalar Tomcat 25 Exemplo: 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 var nomes = new Array(“Pedro”,”João”,”Carlos”,”Edvaldo”,”Paulo”,”Roberto”); 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 ///Acessando Tomcat comoos processo 26 elementos forTestar (i = Tomcat 0; i<=nomes.length; i++) ///nomes.length retorna o tamanho do Array 4.3 26 { Criar contexto de desenvolvimento 4.4 26 alert(“No indice de numero ” + i + ” contem o nome: “ + nome[i] ); 4.4.1 Estrutura de diretórios 26 } 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 18.12.10.3 Métodos Especiais 4.5 Bibliotecas Servlet 29 join(sep) 4.6 Testar seus servlets 30 Junta seqüencialmente os elementos de uma array usando o caractere (ou caracteres) dados por sep. Se ele 4.7 Testar seus JSPs 31 não 4.8 é indicado, Logsusa a vírgula como default. 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 173 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 191 www.3way.com.br Java WEB Java WEB Exemplo: Sumário 1 JDBC 8 str_1 = nivel.join(); //resulta "baixo,médio,alto" em str_1 1.1 Banco de Dados Relacional 8 str_2 = nivel.join(", "); //resulta "baixo, médio, alto" em str_2 1.2 JDBC – Java Database Connectivity 8 str_3 = nivel.join("/"); //resulta "baixo/médio/alto" em str_3 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 length 1.4 Criar Banco de Dados e Tabelas 10 Indica o número de elementos em uma array. Pode ser usado para diminuir o comprimento de um objeto já 1.5 Classes 10 definido. Não pode Javabeans aumentar. – Entidades 1.6 Inserindo Dados 11 Exemplo: 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 nivel = new Array("baixo","medio","alto","muito alto"); 1.9 Design Patterns 13 alert(nivel.length); //Exibe no alerta o numero 4 1.9.1 DAO – Data Access Object 13 nivel.length = 3; //reduz o tamanho de 4 para 3 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 pop() 1.9.4 Alteração 16 Remove e retorna o último elemento de uma array, reduzindo o seu tamanho. 1.9.5 Exclusão 16 Exemplo: 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 nivel = new Array("baixo","medio","alto","muito alto"); 2.2 O que é Java Enterprise Edition? 18 eliminado nivel.pop; //a variável eliminado contém "muito alto" 2.3 A plataforma Java= Enterprise Edition 18 2.3.1 APIs 19 push(valor1, valor2, ...) 2.3.2 Contêiners 19 um ou mais elementos (valor1, valor2, etc) ao final de uma array, retornando o seu novo tamanho. 2.3.3 Adiciona Deployment de aplicações 21 Exemplo: a de variável novo será 4 e os dois elementos serão adicionados. 3 Análise arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações WEB 21 nivel = new na Array("baixo","medio"); 3.3 Arquitetura MVC para a Web 21 novo = nivel.push("alto","muito alto"); 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 reverse() 4.1 Tomcat 23 Inverte a ordem dos elementos. O primeiro se torna o último e o último se torna o primeiro. 4.1.1 Exemplo: Instalar Java JSE SDK (JDK) 24 (nivel[0], nivel[1] e nivel[2] serão respectivamente "alto", "médio" e "baixo"). 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 nivel = new Array("baixo","medio","alto"); 4.2 Instalar Tomcat 25 nivel.reverse(); 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 shift 4.2.2.1 Remove [Windows] Tomcat como serviço 25 o primeiro elemento e retorna esse elemento, reduzindo o tamanho da array. 4.2.2.2 Exemplo: Tomcat como processo 26 (a variável removido terá "muito baixo" e a nivel não terá esse elemento). 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 nivel = new Array("muito baixo","baixo","medio","alto"); 4.4.1 Estrutura de diretórios 26 removido = nivel.shift(); 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 slice(ini[, fim) 4.4.4 Ativar contexto 29 Extrai uma parte de um array e retorna uma nova com essa parte. O parâmetro ini é o índice base zero a 4.4.5 Testar contexto 29 partir do qual começa a extração. Os elementos são extraídos até o índice base zero dado por fim, mas não 4.5 Bibliotecas Servlet 29 incluindo. 4.6 Testar seus servlets 30 Se este não é indicado, a operação se dá até o final da seqüência. 4.7 Testar seus JSPs 31 A função 4.8 Logs não altera o objeto original. Os valores são copiados para a nova array. 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 174 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 192 www.3way.com.br nivel = new Array("baixo","medio","alto"); Java WEB Java WEB Exemplo: (escreve: "baixo,médio,alto"). Sumário 1 JDBC 8 document.write(nivel.slice(1,4); 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 sort(func_comp) 1.2.1 java.sql.DriverManager 8 Ordena os elementos de uma array segundo o critério da função de comparação func_comp. Se esta não é 1.3 Fábrica de Conexões 9 dada, a ordenação se dá como se fosse um dicionário. No caso de strings de texto, em geral essa operação é 1.4 Criar Banco de Dados e Tabelas 10 desejada. No caso de números, pode não ser, uma vez que, por exemplo, 12 fica antes de 4. 1.5 Classes Javabeans – Entidades 10 A função de comparação deve ser uma do tipo comparar(a,b) tal que: 1.6 Inserindo Dados 11 - se Fechando retornar valor < 0, b fica em índice menor que a. 1.7 a Conexão 12 - se PreparedStatement retornar valor = 0, a ou e bStatement não mudam de índice. 1.8 12 se retornar valor > 0, b fica em índice maior que a. 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 comparar números, a função pode ser simplesmente: 1.9.2 Para Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 comparar(a, b) 1.9.4 function Alteração 16 { 1.9.5 Exclusão 16 return a – Enterprise b; 2 Introdução a Java Edition 17 } Porque Java EE tem sido tão utilizado? 2.1 17 2.2 O que é Java Enterprise Edition? 18 Exemplo: 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 function comparar(a, b) 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 { 3 Análise de arquiteturas 21 return a – b; 3.1 Arquitetura Física e Arquitetura Lógica 21 } 3.2 Tipos de aplicações na WEB 21 num = new Array("11", "10", "7", "8", "9"); 3.3 Arquitetura MVC para a Web 21 document.write(num.sort()); //escreve 10,11,7,8,9 3.4 Vantagens da arquitetura MVC 22 document.write("<br>"); //avança uma linha 4 Ambiente de desenvolvimento 23 document.write(num.sort(comparar)); //escreve 7,8,9,10,11 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 splice(iniNdx, quant, [elm1][, ..., elmN]) 4.1.2 Qual versão de JDK utilizar 24 Muda o conteúdo de uma array, adicionando novos elementos e removendo outros. 4.1.2.1 JAVA_HOME 24 - iniNdx é o índice base zero a partir do qual a operação começa. 4.2 Instalar Tomcat 25 é um inteiro indicando é 4.2.1 - quant Qual versão de Tomcat utilizar o número de elementos a remover. Se é zero, nenhum elemento25 removido, mas deve ser indicado pelo menos um novo elemento. 4.2.2 Iniciar e parar o Tomcat 25 ... elemN são os como novosserviço elementos a adicionar. Se não indicados, a função apenas remove elementos. 4.2.2.1 - elm1 [Windows] Tomcat 25 4.2.2.2 Tomcat como processo 26 Se o número de elementos a adicionar é diferente do número de elementos a remover, o tamanho da 4.3 Testar Tomcat 26 arrray é alterado. A função retorna uma array com os elementos removidos. 4.4 Criar contexto de desenvolvimento 26 4.4.1 Exemplos: Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 num = contexto: new Array("10", "20", "30", "40"); 4.4.3 Configurar web.xml 27 document.write(num); //escreve 10,20,30,40 4.4.4 Ativar contexto 29 document.write("<br>"); //avança uma linha 4.4.5 Testar contexto 29 de_fora = num.splice(2,0,"25"); 4.5 Bibliotecas Servlet 29 document.write(num); //escreve 10,20,25,30,40 4.6 Testar seus servlets 30 document.write("<br>"); //avança uma linha 4.7 Testar seus JSPs 31 4.8 Logsde_fora = num.splice(2,1,"28"); 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 175 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 193 www.3way.com.br nivel = new Array("muito baixo","baixo","medio","alto","muito alto"); Java WEB Java WEB document.write(num); //escreve 10,20,28,30,40 document.write("<br>"); //avança uma linha document.write(de_fora); //escreve 25 Sumário 1 JDBC 8 1.1 Banco de Dados Relacional 8 toString() 1.2 JDBC – Java Database Connectivity 8 Retorna uma string com os elementos dispostos seqüencialmente e separados por vírgula. 1.2.1 Exemplo: java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 num = new Array("10", "20", "30", "40"); 1.5 Classes – Entidades //str contém "10,20,30,40" 10 strJavabeans = num.toString(); 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 unshift(elm1,..., elmN) 1.8 PreparedStatement ou Statement Adiciona um ou mais elementos no início da array e retorna seu novo tamanho. Os parâmetros (elm1, 12 ..., 1.9 são os Design 13 elmN) novosPatterns elementos. 1.9.1 DAO – Data Access Object 13 Exemplo (escreve: "baixo,médio,alto"): 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 nivel = new Array("baixo","medio","alto","muito alto"); 1.9.4 Alteração 16 nivel.unshift("muito baixo"); 1.9.5 Exclusão 16 document.write(nivel); //escreve "muito baixo,baixo,medio,alto,muito alto" 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 18.12.11 Funções 2.2 O que é Java Enterprise Edition? 18 Uma função é um set de instruções, que só devem ser executadas quando a função for acionada. A sintaxe 2.3 A plataforma Java Enterprise Edition 18 geral é a seguinte: 2.3.1 APIs 19 2.3.2 Contêiners 19 NomeFunção(Parâmetros) 2.3.3 function Deployment de aplicações 21 { Análise de arquiteturas 3 21 Ação(ões) 3.1 Arquitetura Física e Arquitetura Lógica 21 } Tipos de aplicações na WEB 3.2 21 3.3 Arquitetura MVC para a Web 21 Suponha uma da função que tenha 3.4 Vantagens arquitetura MVC como objetivo informar se uma pessoa é maior ou menor de idade, 22 recebendo como parâmetro a sua idade. 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 function Instalar Java JSE (Anos) SDK (JDK) 24 Idade 4.1.2 { Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 if(Anos > 17) 4.2 Instalar Tomcat 25 { 4.2.1 Qual versão alert("Maior de Tomcat utilizar 25 de Idade") 4.2.2 Iniciar e parar o Tomcat 25 }else 4.2.2.1 [Windows] Tomcat como serviço 25 { 4.2.2.2 Tomcat como processo 26 alert("menor de Idade") 4.3 Testar Tomcat 26 } 4.4 Criar contexto de desenvolvimento 26 4.4.1 } Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 Funções na contexto: própria linguagem 4.4.3 embutidas Configurar web.xml 27 A sintaxe geral é a seguinte: 4.4.4 Ativar contexto 29 - Calcula o conteúdo da string 4.4.5 - eval Testar contexto 29 - parseInt - Transforma 4.5 Bibliotecas Servlet string em inteiro 29 parseFloat Transforma string em número com ponto flutuante 4.6 Testar seus servlets 30 - date() - Retorna a data e a hora (veja o capítulo manipulando datas) 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 176 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 194 www.3way.com.br Java WEB Java WEB Exemplo: Sumário 1 JDBC 8 ex2: Result = eval (string) 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 No primeiro exemplo Result seria igual a 194. No segundo, depende do conteúdo da string, que também 1.2.1 java.sql.DriverManager 8 pode ser o conteúdo (value) de uma caixa de texto. 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 Funções tipicamente Matemáticas 1.5 Classes Javabeans – Entidades 10 Essas funções abaixo são chamadas de funções Matemáticas e fazem parte das classes ultilitárias: 1.6 Inserindo Dados 11 – Math.abs(n) retorna o valor absoluto do número (ponto flutuante) 1.7 Fechando a-Conexão 12 – Math.ceil(n) - retorna ou o próximo valor inteiro maior que o número 1.8 PreparedStatement Statement 12 – Math.floor(n) retorna o próximo valor inteiro menor que o número 1.9 Design Patterns 13 - retorna o valor inteiro, arredondado, do número 1.9.1 – Math.round(n) DAO – Data Access Object 13 1.9.2 – Math.pow(base, Pesquisando expoente) - retorna o cálculo do exponencial 14 – Math.max(n1, n2) retorna o maior número dos dois fornecidos 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 – Math.min(n1, Alteração n2) - retorna o menor número dos dois fornecidos 16 – Math.sqrt(n) retorna a raiz quadrada do número 1.9.5 Exclusão 16 – Math.SQRT2 - retorna a raiz quadrada 2 Introdução a Java Enterprise Edition de 2 (aproximadamente 1.414) 17 2.1 Porque Java EE tem sido tãoquadrada utilizado?de 1/2 (aproximadamente 0.707) 17 – Math.SQRT_2 - retorna a raiz 2.2 O que é Java Enterprise Edition? 18 – Math.sin(n) - retorna o seno de um número (anglo em radianos) 2.3 A plataforma Java Enterprise Edition 18 – Math.asin(n) - retorna o arco seno de um número (em radianos) 2.3.1 – Math.cos(n) APIs 19 - retorna o cosseno de um número (anglo em radianos) 2.3.2 – Math.acos(n) Contêiners - retorna o arco cosseno de um número (em radianos) 19 2.3.3 – Math.tan(n) Deployment de aplicações 21 - retorna a tangente de um número (anglo em radianos) 3 Análise de arquiteturas 21 – Math.atan(n) - retorna o arco tangente de um número (em radianos) 3.1 Arquitetura Física e Arquitetura Lógica 21 – Math.pi - retorna o valor de PI (aproximadamente 3.14159) 3.2 Tipos de aplicações na WEB 21 – Math.log(n) - retorna o logarítmo de um número 3.3 Arquitetura MVC para a Web 21 – Math.E - retorna a base dos logarítmos naturais (aproximadamente 2.718) 3.4 Vantagens da arquitetura MVC 22 – Math.LN2 - retorna o valor do logarítmo de 2 (aproximadamente 0.693) 4 Ambiente de desenvolvimento 23 – Math.LOG2E - retorna a base do logarítmo de 2 (aproximadamente 1.442) 4.1 Tomcat 23 – Math.LN10 - retorna o valor do logarítmo de 10 (aproximadamente 2.302) 4.1.1 Instalar Java JSE SDK (JDK) 24 – Math.LOG10E - retorna a base do logarítmo de 10 (aproximadamente 0.434) 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 18.12.12 Classes Utilitária 4.2.1 Qual versão de Tomcat utilizar 25 Clásses ultilitárias são as classes elementares do JavaScript. 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 18.12.12.1 String 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 O objeto String 4.4 Criar contexto de desenvolvimento 26 através de: new String(str). Onde str é uma string qualquer. Notar a diferença entre string literal e 4.4.1 É criado Estrutura de diretórios 26 string objeto. 4.4.2 Criar contexto de aplicação web 27 4.4.3 Exemplos: Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 str_1 = "abc" (string literal) e 4.4.5 Testar contexto 29 str_2 Servlet = new String("abc") (string objeto). 4.5 Bibliotecas 29 4.6 Testar seus servlets 30 Na prática, quaisquer 4.7 Testar seus JSPs das funções aqui dadas podem ser usadas com strings literais. A linguagem cria um 31 objeto 4.8 temporário Logs e o descarta após a execução. 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 177 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 195 www.3way.com.br Result = eval ( " (10 * 20) + 2 - 8") Java WEB Java WEB Sumário A propriedade length Indica o comprimento (número de caracteres) da string. 1 JDBC (a variável len assume valor 7): 8 Exemplo 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 str = "Bom dia"; 1.2.1 java.sql.DriverManager 8 len = str.length; 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 anchor(nome) 1.5 Classes Javabeans – Entidades 10 Cria uma âncora no documento HTML com o atributo NAME igual a nome. 1.6 Inserindo Dados 11 Exemplo: 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 str = "Início da página"; 1.9 Design Patterns 13 1.9.1 DAOdocument.write(str.anchor("inicio_pagina")); – Data Access Object 13 1.9.2 Pesquisando 14 Produz o mesmo resultado da seguinte linha HTML: 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 <A name="inicio_pagina">Início da página</A> 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 big() 2.1 Porque Java EE tem sido tão utilizado? 17 Faz a string aparecer como se estivesse entre as marcas <BIG> e </BIG> de HTML. 2.2 O que é Java Enterprise Edition? 18 Exemplo: 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 str = "Bom dia"; 2.3.2 Contêiners 19 document.write(str.big()); 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 Produz o mesmo resultado da seguinte linha HTML: 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 <big>Bom dia</big> 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 blink() 4 Ambiente de desenvolvimento 23 Faz a string piscar como se estivesse entre as marcas <BLINK> e </BLINK> de HTML (Netscape somente). 4.1 Tomcat 23 4.1.1 Exemplo: Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 str = "Bom dia"; 4.1.2.1 JAVA_HOME 24 document.write(str.blink()); 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 Produz o mesmo resultado da seguinte linha HTML: 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 <blink>Bom dia</blink> 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 Bold() 4.4 Criar contexto de desenvolvimento 26 a string aparecer em negrito como se estivesse entre as marcas <B> e </B> de HTML. 4.4.1 Faz Estrutura de diretórios 26 Exemplo: 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 str = "Bom dia"; 4.4.4 Ativar contexto 29 document.write(str.bold()); 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 Produz o mesmo resultado da seguinte linha HTML: 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs<b>Bom dia</b> 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 178 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 196 www.3way.com.br Java WEB Java WEB Sumário charAt(index) Retorna o caractere da posição especificada por index, um inteiro entre 0 e comprimento da string menos 1 (-1). JDBC 8 um 1.1 Banco Dadosstr_2 Relacional 8 Exemplo (ade variável será "o"): 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 str_1 = "Bom dia"; 1.3 Fábrica de Conexões 9 str_2 = str_1.charAt(1); 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 charCodeAt(index) 1.6 Inserindo Dados 11 Retorna o valor ASCII do caractere na posição especificada por ndx, um inteiro entre 0 e comprimento 12 da 1.7 Fechando a Conexão string menos 1. Se não indicado, o valor 0 é assumido. 1.8 PreparedStatement ou Statement 12 Exemplo (a variável val será 97, o valor ASCII de "a"): 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 str = "Bom dia"; 1.9.2 Pesquisando 14 val = str.charCodeAt(6); 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 concat(str2, str3 [, ..., strN]) 1.9.5 Exclusão 16 Combina duas ou mais strings, retornando 2 Introdução a Java Enterprise Edition uma nova. str2, ..., strN são as strings a combinar. 17 2.1 Porque Java EE tem sido tão utilizado? 17 Exemplo (a variável nova_str contém "Bom dia"): 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 str = "Bom "; 2.3.1 APIsnova_str = str.concat("dia"); 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 fixed() 3 Análise de arquiteturas Faz a string ser exibida com uma fonte de largura fixa, como se estivesse entre as marcas <tt> e </tt> 21 de 3.1 Arquitetura Física e Arquitetura Lógica 21 HTML. 3.2 Tipos de aplicações na WEB 21 Exemplo: 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 str = "Bom dia"; 4 Ambiente de desenvolvimento 23 document.write(str.fixed()); 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 o versão mesmode resultado da seguinte linha HTML: 4.1.2 Produz Qual JDK utilizar 24 4.1.2.1 JAVA_HOME 24 <tt>Bom dia</tt> 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 fontcolor(cor) 4.2.2 Iniciar e parar o Tomcat 25 a string na cor especificada, como se estivesse entre as marcas <font color=cor> e </font> de HTML 4.2.2.1 Exibe [Windows] Tomcat como serviço 25. O parâmetro cor é uma string literal da cor reconhecida pelo navegador ou na forma RGB hexadecimal . Por 4.2.2.2 Tomcat como processo 26 exemplo, FF0000 para vermelho. 4.3 Testar Tomcat 26 Exemplo: 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 str = "Bom dia"; 4.4.2 Criar contexto de aplicação web 27 document.write(str.fontcolor("blue")); 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 o mesmo resultado da seguinte linha HTML: 4.4.5 Produz Testar contexto 29 4.5 Bibliotecas Servlet 29 <font color= "blue" >Bom dia</font> 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 179 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 197 www.3way.com.br Java WEB Java WEB fontsize(sz) Sumário 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. 1 JDBC 8 Exemplo: 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 str = "Bom dia"; 1.2.1 java.sql.DriverManager 8 document.write(str.fontsize("3")); 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 Produz o mesmo resultado da seguinte linha HTML: 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 <font size="3">Bom dia</font> 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 fromCharCode(cod1,cod2,...,codN) 1.9 Design Patterns 13 string (não objeto String) com os caracteres dados pelos valores ASCII cod1, ...,codN. Deve ser 1.9.1 Retorna DAO uma – Data Access Object 13 sempre na forma String.fromCharCode(...) em vez de um objeto string criado. 1.9.2 usado Pesquisando 14 Exemplo (retorna "abc"): 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 String.fromCharCode(97,98,99); 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 Os eventos KeyDown, e KeyUp contém os códigos ASCII da tecla usada. Para saber o símbolo 17 da 2.1 Porque Java EE temKeyPress sido tão utilizado? tecla, pode-se usar a propriedade which: 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 String.fromCharCode(KeyDown.which); 2.3.1 APIs 19 2.3.2 Contêiners 19 indexOf(Str, index) 2.3.3 Deployment de aplicações 21 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 é 3 Análise de arquiteturas 21 encontrado, retorna -1. É sensível a letras maiúsculas e minúsculas. 3.1 Arquitetura Física e Arquitetura Lógica 21 Exemplos: 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 "Bom dia".indexOf("Bom") //retorna 0. 3.4 Vantagens da arquitetura MVC 22 "Bom dia".indexOf("Bon") //retorna -1. 4 Ambiente de desenvolvimento 23 "Bom dia".indexOf("d") //retorna 4. 4.1 Tomcat 23 "Bom dia".indexOf("bom") //retorna -1. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 lastIndexOf(Str, index) 4.1.2.1 JAVA_HOME 24 Retorna o índice da última ocorrência de Str ou -1 se não encontrado. A procura é feita na ordem inversa 4.2 Instalar Tomcat 25 (direita esquerda), começando do índice index ou do comprimento da string se ele não é indicado. Caracteres 4.2.1 para Qual versão de Tomcat utilizar 25 são indexados da esquerda para a direita, a partir de 0. A procura é sensível a letras maiúsculas e minúsculas. 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 Exemplos: [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 "Boa noite".lastIndexOf("Boa") retorna 0. 4.3 Testar Tomcat 26 "Boa noite".lastIndexOf("o") retorna 5. 4.4 Criar contexto de desenvolvimento 26 "Boa de noite".lastIndexOf("b") retorna -1. 4.4.1 Estrutura diretórios 26 4.4.2 Criar contexto de aplicação web 27 link(href) 4.4.3 Configurar contexto: web.xml 27 Cria um link de hipertexto HTML para a URL (absoluta ou relativa) dada por hRef . 4.4.4 Ativar contexto 29 4.4.5 Exemplo: Testar contexto 29 4.5 Bibliotecas Servlet 29 str = "Página inicial da 3way"; 4.6 Testar seus servlets 30 url = JSPs "http://www.3way.com.br"; 4.7 Testar seus 31 4.8 Logsdocument.write(str.link(url); 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 180 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 198 www.3way.com.br Java WEB Java WEB Sumário Produz o mesmo resultado da seguinte linha HTML: 1 JDBC 8 <a href="http://www.3way.com.br">Página inicial da 3way</A> 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 replace(rExp, nStr) 1.2.1 Procura java.sql.DriverManager 8 ocorrências da expressão regular em uma string e substitui por nStr. rExp é o nome da expressão 1.3 Fábrica de Conexões 9 regular, podendo ser uma variável ou literal. nStr pode ser substituída por uma função. O conteúdo do objeto string 1.4 Criar Banco de Dados e Tabelas 10 original não é alterado. Uma nova string é retornada. 1.5 Classes Javabeans Entidades 10 Exemplo (retorna "Boa–noite"): 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 str = "Boa tarde"; 1.8 PreparedStatement ou Statement 12 re = /'tarde/gi; 1.9 Design Patterns 13 = str.replace(re,"noite"); 1.9.1 DAOstr_1 – Data Access Object 13 document.write(str_1); 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 search(rExp) 1.9.4 Alteração 16 Procura um dado formato especificado pela expressão regular rExp , que pode ser uma variável ou literal. Se 1.9.5 Exclusão 16 encontrado, retorna o índice da expressão na string. Caso contrário, retorna -1. 2 Introdução a Java Enterprise Edition 17 Exemplo: 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 strMail Java = new String("[email protected]"); 2.3 A plataforma Enterprise Edition 18 2.3.1 APIsre = /^[^@]+@[^@]+.[a-z]{2,}$/i; 19 2.3.2 Contêiners 19 if(strMail.search(re) == -1) 2.3.3 Deploymentdocument.write("O de aplicações 21 endereço de email não é válido"); 3 Análise de arquiteturas 21 3.1 Arquitetura 21 slice(iniNdx, fimNdx) Física e Arquitetura Lógica 3.2 Tipos de aplicações na WEB 21 Extrai parte de uma string, retornando uma nova. iniNdx é o índice base zero inicial e fimNdx é o índice 3.3 Arquitetura MVC para a Web 21 base zero final. Se não especificado, a operação se dá até o final da string. Valor negativo para fimNdx indica 3.4 Vantagens da final. arquitetura MVC slice(1,-1) extrai do segundo até o penúltimo caracter. 22 deslocamento a partir do Por exemplo, 4 Ambiente de desenvolvimento 23 Exemplo (escreve "tarde"): 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 str = "Boa tarde"; 4.1.2 Qual versão de JDK utilizar 24 str_1 = str.slice(4); 4.1.2.1 JAVA_HOME 24 document.write(str_1); 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 split(sep, lim) 4.2.2 Iniciar e parar o Tomcat 25 uma string em um conjunto (array) de strings, usando como separador o caractere indicado por sep 4.2.2.1 Separa [Windows] Tomcat como serviço 25. O parâmetro opcional lim é um inteiro que limita o número de separações. 4.2.2.2 Tomcat como processo 26 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] 4.3 Testar Tomcat 26 contém "DD"): 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 str_1 = new String("AA,BB,CC,DD"); 4.4.2 Criar contexto de aplicação web 27 str_2 contexto: = str.split(","); 4.4.3 Configurar web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 substr(ini [, Bibliotecas compr]) Servlet 4.5 29 Extrai parte de uma string, começando no índice base zero dado por ini. Se este é negativo, significa índice 4.6 Testar seus servlets 30 a partir do final daseus string. O parâmetro opcional compr é número de caracteres a extrair a partir do índice dado. 31 Se 4.7 Testar JSPs omitido, a operação se dá até o final da string. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 181 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 199 www.3way.com.br Java WEB Java WEB Exemplo (resulta "dia"): Sumário 1 JDBC 8 document.write(str.substr(4,3)); 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 substring(ndx1, ndx2) 1.2.1 java.sql.DriverManager 8 Extrai parte de uma string, começando do índice base zero ndx1 e terminando, mas não incluindo, no 1.3 Fábrica de Conexões 9 índice base zero ndx2. 1.4 Criar Banco de Dados e Tabelas 10 Exemplo (resulta "Bom"): 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 str = "Bom dia"; 1.7 Fechando a Conexão 12 document.write(str.substring(0,3)); 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 toLowerCase() 1.9.1 DAO – Data Access Object 13 a string original com os caracteres minúsculos. Não altera a original. 1.9.2 Retorna Pesquisando 14 (resulta "bomO dia"): 1.9.3 Exemplo Recurso avaçando: Cursor 15 1.9.4 Alteração 16 1.9.5 Exclusão 16 str = "Bom dia"; 2 Introdução a Java Enterprise Edition 17 document.write(str.toLowerCase()); 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 toString() 2.3 A plataforma Java Enterprise Edition 18 Retorna a string do objeto especificado. 2.3.1 Exemplo APIs (resulta "Bom dia"): 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 str = new String("Bom dia"); 3 Análise de arquiteturas 21 document.write(str.toString()); 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 toUpperCase() 3.3 Arquitetura MVC para a Web 21 Retorna a string original com os caracteres maiúsculos. Não altera a original. 3.4 Vantagens da arquitetura MVC 22 Exemplo (resulta "BOM DIA"): 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 str = "Bom dia"; 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qualdocument.write(str.toUpperCase()); versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 18.12.12.2 Date 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar A data é dada em milissegundos, a 25 O objeto Date() 4.2.2 Iniciar e parar o Tomcat partir de 00:00:00 h GMT de 01 de 25 trabalhar comcomo datas e horas. Pode ser criado por 4.2.2.1 Permite [Windows] Tomcat serviço 25 janeiro de 1970. Se nenhum uma das formas abaixo: 4.2.2.2 Tomcat como processo 26 parâmetro é fornecido, são 4.3 Testar Tomcat 26 4.4 CriarDate() contexto de desenvolvimento - new assumidas a data e hora locais, isto 26 4.4.1 Estrutura de diretórios é, do computador que executa o 26 4.4.2 - new CriarDate(ms) contexto de aplicação web 27 script. 4.4.3 Configurar contexto: web.xml 27 4.4.4 - new Ativar contexto 29 Date(string_de_data) 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 - new Date(nAno, nMês, nDia [, nHora, nMin, 4.6 Testar seus) servlets 30 nSeg, nMs] 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 182 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 200 www.3way.com.br str = "Bom dia"; Java WEB Java WEB Parâmetros: Sumário – ms: milissegundos desde a data inicial dada acima. – string_de_data: uma seqüência de caracteres em um formato suportado. Exemplo: "Mon, 27 Dec 2004 1 JDBC GMT". 8 12:00:00 1.1 Banco de Dados 8 - nAno, nMês, nDia, Relacional etc: valores inteiros representando partes da data. Exemplo: Janeiro 0, Fevereiro 1, etc. 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 Exemplo 1: a variável intervalo armazena o tempo de execução em milissegundos das outras instruções. 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 tempo_1 = new Date(); 1.5 Classes Javabeans – Entidades 10 // outras instruções 1.6 Inserindo Dados 11 tempo_2 = new Date(); 1.7 Fechando a Conexão 12 intervalo = tempo_2 – tempo_1 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 2: este é um Object exemplo dinâmico, que atualiza o objeto Date() a cada segundo, permitindo um 1.9.1 Exemplo DAO – Data Access 13 relógio em vez da simples hora e data do carregamento da página. O script abaixo deve estar entre <head> e 1.9.2 na tela Pesquisando 14 </head> da página: 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 <script language= "JavaScript" > 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 function DataHora() 2.1 Porque Java{ EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise 18 var Edition? data = new Date(); 2.3 A plataforma Java Enterprise Edition 18 tempo.innerHTML = data; 2.3.1 APIs 19 setTimeout("DataHora()",1000) 2.3.2 Contêiners } 19 2.3.3 Deployment de aplicações 21 </script> 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 O código seguinte deve estar dentro de <body>: onLoad="DataHora()". E este no corpo da página (entre 3.2 Tipos de aplicações na WEB 21 <body> e </body>): <span id=tempo></span> 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 getDate() 4 Ambiente de desenvolvimento 23 Retorna um número inteiro entre 1 e 31, que representa o dia do mês do objeto Date. 4.1 Tomcat 23 a variável contém 4.1.1 Exemplo: Instalar Java JSEdia SDK (JDK) dia do mês da data atual. 24 4.1.2 Qual versão de JDK utilizar 24 data = new Date(); 4.1.2.1 JAVA_HOME 24 diaTomcat = data.getDate(); 4.2 Instalar 25 4.2.1 Qual versão de Tomcat utilizar 25 getDay() 4.2.2 Iniciar e parar o Tomcat 25 um número inteiro do dia da semana. Domingo 0, segunda 1, terça 2, etc. 4.2.2.1 Retorna [Windows] Tomcat como serviço 25 a variável dia_semana contém o dia da semana da data atual. 4.2.2.2 Exemplo: Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 data = new Date(); 4.4.1 Estrutura de diretórios 26 dia_semana = data.getDay(); 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 getFullYear() 4.4.4 Retorna Ativar contexto 29 o ano do objeto Date em números absolutos, por exemplo 1998. 4.4.5 Exemplo: Testaracontexto 29 variável ano contém o ano da data atual. 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 data = new Date(); 4.7 Testar seus JSPs 31 ano = data.getFullYear(); 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 183 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 201 www.3way.com.br Java WEB Java WEB getHours() Sumário Retorna a hora do objeto Date, um número inteiro entre 0 e 23. Exemplo: 1 JDBC 8 1.1 Banco de Dados Relacional 8 data = new Date(); 1.2 JDBC – Java Database Connectivity 8 hora = data.getHours(); 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 getMilliseconds() 1.4 Criar Banco de Dados e Tabelas 10 Retorna os milissegundos do objeto Date, um inteiro entre 0 e 999. 1.5 Classes Javabeans – Entidades 10 Exemplo: 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 data = new Date(); 1.8 PreparedStatement ou Statement 12 ms = data.getMilliseconds(); 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 getMinutes() 1.9.2 Pesquisando 14 os minutos do O objeto Date, um inteiro entre 0 e 59. Exemplo: 1.9.3 Retorna Recurso avaçando: Cursor 15 1.9.4 Alteração 16 1.9.5 Exclusão 16 data = new Date(); 2 Introdução Java Enterprise Edition 17 min = adata.getMinutes(); 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 getMonth() 2.3 A plataforma Java Enterprise Edition 18 Retorna o mês do objeto Date, um inteiro entre 0 e 11 (0 janeiro, 1 fevereiro, etc). 2.3.1 Exemplo: APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 data = new Date(); 3 Análise de arquiteturas 21 mes = data.getMonth(); 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 getSeconds() 3.3 Arquitetura MVC para a Web 21 Retorna os segundos do objeto Date, um número inteiro entre 0 e 59. 3.4 Vantagens da arquitetura MVC 22 Exemplo: 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 data = JSE new Date(); 4.1.1 Instalar Java SDK (JDK) 24 = data.getSeconds(); 4.1.2 Qualseg versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 getTime() 4.2 Instalar Tomcat 25 número milissegundos 4.2.1 Retorna Qual o versão de de Tomcat utilizar da data conforme informado no primeiro tópico. Em geral usado para 25 especificar a data e hora de um outro objeto Date . 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 Exemplo: [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat = new Date("May 15, 1998"); 26 certo_dia 4.4 Criaroutro_dia contexto de = desenvolvimento 26 new Date(); 4.4.1 Estrutura de diretórios 26 outro_dia.setTime(certo_dia.getTime()); 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 getTimezoneOffset() 4.4.4 Retorna Ativar 29 a contexto diferença, em minutos, entre a hora local e a hora GMT. 4.4.5 Exemplo: Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 data = new Date(); 4.7 Testar seus JSPs 31 dif_gmt_horas = data.getTimezoneOffset() / 60; 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 184 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 203 www.3way.com.br Java WEB Java WEB setFullYear(nAno [, nMes, nDia]) Sumário 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 31 1 o dia do JDBC 8 para mês. Se é dado um valor para nDia, é obrigatório um valor para nMes. 1.1 Banco de Dados 8 Se um parâmetro éRelacional especificado fora da faixa, a função tenta atualizar os demais de forma coerente. 1.2 JDBC – Java Database Connectivity 8 Exemplo: se um valor de 15 é dado para nMes, o ano é aumentado de 1 e o valor 4 é usado para nMes. 1.2.1 Exemplo: java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 certo_dia = new Date(); 1.5 Classes Javabeans – Entidades 10 certo_dia.setFullYear(1995); 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 setHours(nHora, nMin, nSeg, nMs) 1.8 PreparedStatement ou Statement 12 Especifica a hora para um objeto Date. nHora é um inteiro entre 0 e 23. Os demais parâmetros são 1.9 Design Patterns 13 opcionais: nMin entre 0 e 59), nSeg (inteiro entre 0 e 59) e nMs (inteiro entre 0 e 999 para 13 os 1.9.1 DAO –(inteiro Data Access Object milissegundos). Se nSeg é fornecido, nMin também deve ser dado. Se nMs é especificado, nMin e nSeg também 1.9.2 Pesquisando 14 devem ser. 1.9.3 Recurso avaçando: O Cursor 15 parâmetro é especificado fora da faixa, a função tenta atualizar os demais de forma coerente. 1.9.4 Se um Alteração 16 Exemplo: se 70 é dado para nMin, a hora é aumentada de 1 e 10 é usado para nMin. 1.9.5 Exclusão 16 Exemplo: 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 certo_dia = new Date(); 2.2 O que é Java Enterprise Edition? 18 certo_dia.setHours(10); 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 setMinutes(nMin [, nSeg, nMs]) 2.3.2 Contêiners 19 2.3.3 Especifica Deployment de aplicações 21 os minutos para um objeto Date. nMin deve ser um inteiro entre 0 e 59. Os demais parâmetros 3 opcionais: Análise de(inteiro arquiteturas são nSeg entre 0 e 59) e nMs (inteiro entre 0 e 999 para os milissegundos). Se nSeg21 é 3.1 Arquitetura Física e Arquitetura Lógica 21 especificado, nMin também deve ser. Se nMs é dado, nMin e nSeg também devem ser. 3.2 Tipos de aplicações nafora WEB Se um parâmetro é dado da faixa, a função tenta atualizar os demais de forma coerente. Exemplo: 21 se 3.3 Arquitetura MVC para a Web 21 nSeg é 80, os minutos são aumentados de 1 e 20 é usado para os segundos. 3.4 Vantagens da arquitetura MVC 22 Exemplo: 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 certo_dia = new Date(); 4.1.1 Instalar Java JSE SDK (JDK) 24 certo_dia.setMinutes(25); 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 setMonth(nMes [, nDia]) 4.2 Instalar Tomcat 25 Especifica o mês de um objeto Date. nMes deve ser um inteiro entre 0 e 11 (0 janeiro, 1 fevereiro, etc). nDia 4.2.1 Qual versão de Tomcat utilizar 25 é 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ção 4.2.2 atualizar Iniciar e parar Tomcat 25 tenta o objeto deoforma coerente. Exemplo: se 12 é dado para o mês, o ano é aumentado de 1 e 1 é usado 4.2.2.1 [Windows] Tomcat como serviço 25 para o mês. 4.2.2.2 Tomcat como processo 26 Exemplo: 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 certo_dia = new Date(); 4.4.1 Estrutura de diretórios 26 certo_dia.setMonth(4); 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 setSeconds(nSeg [, nMs]) 4.4.4 Ativar contexto 29 segundos de um objeto Date. nSeg deve ser um inteiro entre 0 e 59. nMs é um parâmetro 4.4.5 Especifica Testar os contexto 29 opcional para os milissegundos 4.5 Bibliotecas Servlet (inteiro entre 0 e 999). Se um parâmetro é dado fora da faixa, a função tenta 29 atualizar o objeto de forma coerente. Exemplo: se 70 é dado para nSeg, os minutos são aumentados de 1 e 10 é 4.6 Testar seus servlets 30 usado para os segundos. 4.7 Testar seus JSPs 31 Exemplo: 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 185 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 204 www.3way.com.br Java WEB Java WEB Sumário 1 JDBC 8 1.1 Banco de Dados Relacional 8 setTime(nMs) 1.2 JDBC – Java Database Connectivity 8 Especifica um valor para o objeto Date. nMs é um inteiro correspondente ao número de milissegundos 1.2.1 java.sql.DriverManager 8 desde 01 de janeiro de 1970 00:00:00 h. 1.3 Fábrica de Conexões 9 Exemplo: 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 certo_dia = new Date("May 15, 1998"); 1.6 Inserindo Dados 11 outro_dia = new Date(); 1.7 Fechando a Conexão 12 outro_dia.setTime(certo_dia.getTime()); 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 toLocaleString() 1.9.1 DAO – Data Access Object 13 uma seqüência de caracteres (string) de data, com formato definido pelas configurações 14 do 1.9.2 Retorna Pesquisando sistema operacional. 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Exemplo: Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 <script language= "JavaScript" > 2.1 Porque Java EE tem sido tão utilizado? 17 var d = new Date(); 2.2 O que é Java Enterprise Edition? 18 document.write(d.toLocaleString()); 2.3 A plataforma Java Enterprise Edition 18 </script> 2.3.1 APIsSaída: Qui 17 Abr 2008 15:01:33 BRT 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 18.12.13 Objeto Window Window é o objeto 3 Análise de arquiteturas 21 Dele dependem todos os demais objetos da hierarquia. Vamos ver a lista de principal na 3.1 Arquitetura Física e Arquitetura Lógica 21 suas propriedades e métodos. 3.2 Tipos de aplicações na WEB 21 hierarquia e contém 3.3 Arquitetura MVC para a Web 21 as propriedades e Propriedades do objeto window 3.4 Vantagens da arquitetura MVC 22 métodos para A seguir podemos ver as propriedades do objeto Window. Existem algumas 4 Ambiente de desenvolvimento 23 muito úteis e outras menos: controlar a janela do 4.1 Tomcat 23 – closed - Indica a possibilidade de que tenha fechado a janela. (Javascript 1.1) 4.1.1 Instalar Java JSE SDK (JDK) navegador. 24 - Texto que se escreve por padrão na barra de estado do 4.1.2 – defaultStatus Qual versão de JDK utilizar 24 navegador. 4.1.2.1 JAVA_HOME 24 – document - Objeto que contem na página web que está sendo mostrada. 4.2 Instalar Tomcat 25 Um objeto frame utilizar de uma página web. Acessa-se pelo nome dele. 4.2.1 – Frame Qual versão de Tomcat 25 – frames array O vetor que contem todos os frames da página. Acessa-se pelo 4.2.2 Iniciar e parar o Tomcat 25 a partir de 0. 4.2.2.1 índice [Windows] Tomcat como serviço 25 - Objeto histórico de páginas visitadas. 4.2.2.2 – history Tomcat como processo 26 – innerHeight Tamanho em pixels do espaço onde se visualiza a página, na 4.3 Testar Tomcat 26 vertical. 1.2) 4.4 Criar(Javascript contexto de desenvolvimento 26 - Tamanho em pixels do espaço onde se visualiza a página, na horizontal. (Javascript 1.2) 26 4.4.1 – innerWidth Estrutura de diretórios Número de de aplicação frames daweb janela. 4.4.2 – length Criar contexto 27 - A URL do documento 4.4.3 – location Configurar contexto: web.xml que está sendo visualizado. Podemos mudar o valor desta propriedade 27 para irmos a outra página. Ver também a propriedade location do objeto document . 4.4.4 Ativar contexto 29 - Objeto barra de endereços da janela. (Javascript 1.2) 4.4.5 – locationbar Testar contexto 29 – menubar - Objeto barra de menus da janela. (Javascript 1.2) 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 – name - Nome da janela. Atribuímos quando abrimos uma nova janela. 4.7 Testar -seus 31 – opener Faz JSPs referência à janela do navegador que abriu a janela onde estamos trabalhando. Será vista 4.8 Logs 31 com mais detalhes no tratamento de janelas com Javascript. 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 186 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 205 www.3way.com.br certo_dia = new Date(); certo_dia.setSeconds(15); Java WEB Java WEB – outherHeight - Tamanho em pixels do espaço de toda a janela, na vertical. Isto inclui as barras de Sumário deslocamento, botões, etc. (Javascript 1.2) – outherWidth - Tamanho em pixels do espaço de toda a janela, na horizontal. Isto inclui as barras de 1 JDBC 8 deslocamento. (Javascript 1.2) 1.1 Banco de Dados Relacional 8 – parent - Faz referência à janela onde está situado o frame que estamos trabalhando. Veremos 1.2 JDBC – Java Database Connectivity 8 detalhadamente ao estudar o controle de frames com Javascript. 1.2.1 – personalbar java.sql.DriverManager 8 - Objeto barra pessoal do navegador. (Javascript 1.2) 1.3 Fábrica de Conexões 9 – self - Janela ou frame atual. 1.4 Criar Banco de Dados e Tabelas 10 – scrollbars - Objeto das barras de deslocamento da janela. 1.5 Classes Javabeans – Entidades 10 – status - Texto da barra de estado. 1.6 Inserindo Dados 11 – statusbar - Objeto barra de estado do navegador. (Javascript 1.2) 1.7 Fechando a Conexão 12 – toolbar - Objeto barra de ferramentas. (Javascript 1.2) 1.8 PreparedStatement ou Statement 12 – top Faz referência à janela onde está situado o frame que estamos trabalhando. Como a propriedade 1.9 Design Patterns 13 . – Data Access Object 1.9.1 parent DAO 13 - Faz referência à janela atual, assim como a propriedade self. 1.9.2 – window Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 Métodos de window em Javascript 1.9.4 Alteração 16 O objeto window de Javascript tem a disposição dos programadores uma longa lista de métodos. 1.9.5 Exclusão 16 Estudaremos e veremos Vamos ver agora os distintos métodos que tem o objeto window. Muitos destes 2 Introdução a exemplos. Java Enterprise Edition 17 métodos terão que Java ser vistos separadamente porque são muito úteis e ainda não o utilizamos, agora vamos listá-los 2.1 Porque EE tem sido tão utilizado? 17 e já veremos alguns exemplos. 2.2 O que é Java Enterprise Edition? 18 – alert(texto) - Apresenta uma janela de alerta onde se pode ler o texto que recebe por parâmetro. 2.3 A plataforma Java Enterprise Edition 18 2.3.1 – back() APIs - Ir uma página atrás no histórico de páginas visitadas. Funciona como o botão de voltar da barra 19 de ferramentas. (Javascript 1.2) 2.3.2 Contêiners 19 - Tirar o foco da janela atual. (Javascript 1.1) 2.3.3 – blur() Deployment de aplicações 21 – captureEvents(eventos) - Captura os eventos que se indiquem por parâmetro (Javascript 1.2). 3 Análise de arquiteturas 21 – clearInterval() - Elimina a execução de sentenças associadas a um intervalo indicadas com o método 3.1 Arquitetura Física e Arquitetura Lógica 21 setInterval() 1.2) 3.2 Tipos de .(Javascript aplicações na WEB 21 – clearTimeout() - Elimina a execução de sentenças associadas a um tempo de espera indicadas com o 3.3 Arquitetura MVC para a Web 21 método setTimeout() . 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de a desenvolvimento 23 – close() - Fecha janela. (Javascript 1.1) 4.1 Tomcat 23 – confirm(texto) - Mostra uma janela de confirmação e permite aceitar ou rejeitar. 4.1.1 – find() Instalar Java JSE SDK (JDK) de busca. (Javascript 1.2 para Netscape) 24 - Mostra uma janelinha 4.1.2 – focus() Qual versão de JDK utilizar 24 - Coloca o foco da aplicação na janela. (Javascript 1.1) 4.1.2.1 – forward() JAVA_HOME - Ir uma página adiante no histórico de páginas visitadas. Como se clicássemos o botão 24 de 4.2 Instalar Tomcat 25 adiante do navegador. (Javascript 1.2) 4.2.1 – home() Qual versão de Tomcat utilizar 25 - Ir à página de início o explorador que tenha configurado. (Javascript 1.2) 4.2.2 – moveBy(pixelsX, Iniciar e parar o pixelsY) Tomcat - Move a janela do navegador os pixels que se indicam por parâmetro para 25 a 4.2.2.1 direita [Windows] Tomcat como serviço 25 e para baixo. (Javascript 1.2) 4.2.2.2 – moveTo(pixelsX, Tomcat como processo 26 pixelsY) - Move a janela do navegador à posição indicada nas coordenadas que recebe 4.3 Tomcat 26 por Testar parâmetro. (Javascript 1.2) 4.4 Criar contexto de desenvolvimento 26 – open() - Abre uma janela secundária do navegador. 4.4.1 – print() Estrutura de diretórios 26 - Como se clicássemos o botão de imprimir do navegador. (Javascript 1.2) 4.4.2 – prompt(pergunta,inicio_da_resposta) Criar contexto de aplicação web 27 - Mostra uma caixa de diálogo para pedir um dado. Devolve o dado 4.4.3 queConfigurar contexto: web.xml 27 se escreveu. 4.4.4 Ativar contexto 29 – releaseEvents(eventos) - Deixa de capturar eventos do tipo que se indique por parâmetro. (Javascript 1.2) 4.4.5 Testar contexto 29 – resizeBy(pixelslargo,pixelsAlto) - Redimensiona o tamanho da janela, acrescentando ao seu tamanho 4.5 Bibliotecas Servlet 29 atual os valores indicados nos parâmetros. O primeiro para a altura e o segundo para a largura. Admite 4.6 Testar seus servlets 30 valores negativos se se deseja reduzir a janela. (Javascript 1.2) 4.7 Testar seus JSPs 31 – resizeTo(pixelslargo,pixelsAlto) - Redimensiona a janela do navegador para que ocupe o espaço em pixels 4.8 Logs 31 que se indica por parâmetro (Javascript 1.2) 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 187 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 206 www.3way.com.br Java WEB Java WEB – routeEvent() - Encaminha um evento pela hierarquia de eventos. (Javascript 1.2) Sumário – scroll(pixelsX,pixelsY) - Faz um scroll da janela para a coordenada indicada por parâmetro. Este método está desaconselhado, pois agora se debería utilizar scrollTo() (Javascript 1.1) 1 JDBC – scrollBy(pixelsX,pixelsY) - Faz um scroll do conteúdo da janela relativo à posição atual. (Javascript 1.2) 8 1.1 Banco de Dados Relacional 8 – scrollTo(pixelsX,pixelsY) - Faz um scroll da janela à posição indicada pelo parâmetro. Este método tem 1.2 JDBC – Java Database Connectivity 8 que ser utilizado ao invés do scroll. (Javascript 1.2) 1.2.1 java.sql.DriverManager 8 – setInterval() - Define um script para que seja executado indefinidamente em cada intervalo de tempo. 1.3 Fábrica de Conexões 9 (Javascript 1.2) 1.4 Criar Banco de Dados e Tabelas 10 – setTimeout(sentença,segundos) - Define um script para que seja executado uma vez depois de um 1.5 Classes Javabeans – Entidades 10 tempo de espera determinado. 1.6 Inserindo Dados 11 – stop() - Como clicar o botão de stop da janela do navegador. (Javascript 1.2) 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 O objeto document 18.12.14 Objeto Document 1.9 Design Patterns 13 é a página atual o objeto controla-se a página web e todos os elementos que 1.9.1 Com DAO – Data document Access Object 13 que está sendo14 contem. do objeto window, mas também pode depender do objeto frame no 1.9.2 Depende Pesquisando caso de queRecurso a página esteja sendo mostrada em um frame. visualizada 15 1.9.3 avaçando: O Cursor 1.9.4 Alteração momento. 16 Propriedades do objeto document 1.9.5 Exclusão 16 Vejamos uma lista das propriedades do objeto document e logo veremos algum 2 Introdução a Java Enterprise Edition 17 exemplo. 2.1 Porque Java EE tem sido tão utilizado? 17 – alinkColor Cor dos links ativos 2.2 O que é Java Enterprise Edition? 18 – Anchor - Uma daEdition página. Consegue-se com a etiqueta <A 2.3 A plataforma Java âncora Enterprise 18 . Acessa-se pelo seu nome. 2.3.1 name="nome_da_ancora"> APIs 19 – anchors array Um array das âncoras do documento. 2.3.2 Contêiners 19 - Um applet da página. Acessa-se pelo seu nome. (Javascript 1.1) 2.3.3 – Applet Deployment de aplicações 21 – applets array - Um array com todos os applets da página. (Javascript 1.1) 3 Análise de arquiteturas 21 – Area - Uma etiqueta , das que estão vinculadas aos mapas de imagens (Etiqueta ). Acessa-se pelo 3.1 Arquitetura Física e <area> Arquitetura Lógica 21 seu Tipos nome. (Javascript 1.1) 3.2 de aplicações na WEB 21 – bgColor - A cor de fundo do documento. 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura 22 – classes - As classes definidasMVC na declaração de estilos CSS. (Javascript 1.2) 4 Ambiente desenvolvimento 23 – cookie - Um de cookie. 4.1 Tomcat 23 – domain - Nome do domínio do servidor da página. 4.1.1 – Embed Instalar SDK (JDK) 24 - Java Um JSE elemento da página incrustado com a etiqueta <embed>. Acessa-se pelo seu nome. 4.1.2 (Javascript Qual versão de JDK utilizar 24 1.1) 4.1.2.1 – embeds JAVA_HOME 24 array - Todos os elementos da página incrustados com <embed>. (Javascript 1.1) 4.2 Instalar Tomcat 25 – fgColor - A cor do texto. Para ver as mudanças há que reescrever a página. 4.2.1 – From Qual versão de Tomcat utilizar 25 - Um formulário da página. Acessa-se pelo seu nome. 4.2.2 – forms Iniciar e parar oarray Tomcat 25 array - Um com todos os formulários da página. 4.2.2.1 – ids [Windows] Tomcat como serviço 25 - Para acessar a estilos CSS. (Javascript 1.2) 4.2.2.2 – Image Tomcat como processo 26 - Uma imagem da página web. Acessa-se pelo seu nome. (Javascript 1.1) 4.3 Testar Tomcat 26 – images array - Cada uma das imagens da página introduzidas em um array. (Javascript 1.1) 4.4 Criar contexto de desenvolvimento 26 – lastModified - A data de última modificação do documento. 4.4.1 Estrutura de diretórios 26 – linkColor - A cor dos links. 4.4.2 Criar contexto de aplicação web 27 – Link - Um link da página. Acessa-se pelo seu nome. 4.4.3 Configurar contexto: web.xml 27 – links array - Um array com cada um dos links da página. 4.4.4 Ativar contexto 29 – location - A URL do documento que se está visualizando. É somente de leitura. 4.4.5 Testar contexto 29 – referrer - A página da qual vem o usuário. 4.5 Bibliotecas Servlet 29 – tags Estilos definidos às etiquetas de HTML na página web. (Javascript 1.2) 4.6 Testar seus servlets 30 – title - O título da página. 4.7 Testar seus JSPs 31 4.8 4.9 Logs Variáveis de Ambiente os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 31 32 188 1 207 Java WEB Java WEB – URL - O mesmo que location, mas é aconselhável utilizar location já que URL não existe em todos os Sumário navegadores. – vlinkColor - A cor dos links visitados. 1 JDBC 8 1.1 Banco de Dados Relacional 8 Métodos do document 1.2 JDBC – Java Database Connectivity 8 Vemos uma lista dos eventos disponíveis no objeto document, localizado abaixo do objeto window na 1.2.1 java.sql.DriverManager 8 hierarquia de objetos de Javascript. 1.3 Fábrica de Conexões 9 – captureEvents() - Para capturar os eventos que acontecem na página web. Recebe como parâmetro o 1.4 Criar Banco de Dados e Tabelas 10 evento que se deseja capturar. 1.5 Classes Javabeans – Entidades 10 – close() - Fecha o fluxo do documento. (Será visto mais adiante neste manual um artigo sobre o fluxo do 1.6 Inserindo Dados 11 documento) 1.7 Fechando a Conexão 12 – contextual() - Oferece uma linha de controle dos estilos da página. No caso de desejarmos especificá-los 1.8 PreparedStatement ou Statement 12 com Javascript. 1.9 Design Patterns 13 – getSelection() - Devolve um string que contem o texto que foi selecionado. Funciona somente em 1.9.1 DAO – Data Access Object 13 Netscape. 1.9.2 Pesquisando 14 – handleEvent() Invoca o manipulador de eventos do elemento especificado. 1.9.3 Recurso avaçando: O Cursor 15 - Abre o fluxo do documento. 1.9.4 – open() Alteração 16 – releaseEvents() Libera os eventos capturados do tipo que se especifique, enviando-os aos objetos 1.9.5 Exclusão 16 seguintes na hierarquia. 2 Introdução a Java Enterprise Edition 17 – routeEvent() - Passa um evento capturado através da hierarquia de eventos habitual. 2.1 Porque Java EE tem sido tão utilizado? 17 – write() Escreve dentro da página web. Podemos escrever etiquetas HTML e texto normal. 2.2 O que é Java Enterprise Edition? 18 – writeln() - Escreve igual que o método 2.3 A plataforma Java Enterprise Edition write(), embora coloque uma quebra de linha no final. 18 2.3.1 APIs 19 18.12.15 Objeto Form Formulário 2.3.2 Contêiners 19 utiliza-se um objeto, denominado form, para referenciar os elementos dos formulários, que 2.3.3 No JavaScript Deployment de aplicações 21 são usados em HTML. Vejamos uma descrição do que é o objeto form e qual o conjunto 21 de 3 os tradicionalmente Análise de arquiteturas propriedades e métodos que utiliza. 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 Um documento 21 Propriedades 3.3 Arquitetura MVC para a Web 3.4 Vantagens arquitetura MVC 22 – action - Uma da string contendo o valor a atribuir ao atributo action, do elemento pode conter vários 4 Ambiente de desenvolvimento HTML <form>, que contém o script CGI a ser executado quando o conteúdo do forms, razão pela23 4.1 Tomcaté submetido. 23 formulário qual os objetos de 4.1.1 – elements Instalar Java SDK (JDK) 24 - UmJSE array contendo uma entrada correspondente a cada elemento tipo form se 24 4.1.2 existente Qual versão de JDK utilizar no formulário (campos de texto, caixas de escolha, etc...). 4.1.2.1 – encoding JAVA_HOME - Tipo de codificação MIME utilizado no conteúdo enviado para o agrupam em 24 4.2 Instalar Tomcat servidor (correspondente ao atributo enctype, do elemento HTML <form>. arrays de forms. 25 4.2.1 – length Qual versão de Tomcat utilizar 25 Número de elementos contidos no formulário, ou seja, o comprimento 4.2.2 do array Iniciar e parar o Tomcat 25 elements. 4.2.2.1 – method [Windows] Tomcat como serviço 25 - Identifica o atributo method. 4.2.2.2 – name Tomcat como processo 26 - String contendo o nome da form (correspondente ao atributo name). 4.3 Testar Tomcat 26 – target - Por fim, este parâmetro que traduz o target do elemento <form> e que 4.4 Criar contexto de desenvolvimento 26 é utilizado para conter o nome da Frame e que a form é utilizada. 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 Métodos 4.4.3 Configurar contexto: web.xml 27 – submit() 4.4.4 Submete Ativarocontexto 29 formulário para o programa CGI ou server side script correspondente. Os formulários em HTML 4.4.5 Testar contexto 29 são construídos com base num conjunto de elementos distintos, usados para a entrada dos dados. Os scripts 4.5 Bibliotecas Servlet 29 JavaScript operaram sobre os elementos componentes dos formulários, bem como sobre os seus conteúdos, 4.6 Testar seus servlets 30 utilizando, para tal, as propriedades e métodos dos objectos associados. 4.7 Testar seus JSPs 31 Exemplo do uso desses objetos para a validação de formulários: 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 189 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 208 www.3way.com.br Java WEB Java WEB <html> <head> Sumário <title> Encomenda de Pizzas </title> <script language = "JavaScript"> 1 JDBC 8 function validar(form) 1.1 Banco de Dados Relacional 8 { 1.2 JDBC – Java Database Connectivity 8 // Testa se o utilizador escolheu pelo menos 1 Pizza 1.2.1 if(form.pizza.selectedIndex java.sql.DriverManager 8 == 0 || form.quantp.selectedIndex == 0 ) { 1.3 Fábrica de Conexões 9 que seleccionar pelo menos 1 Pizza!"); 1.4 Criarwindow.alert("Tem Banco de Dados e Tabelas 10 return(false); 1.5 Classes Javabeans – Entidades 10 }else 1.6 11 { Inserindo Dados 1.7 Fechando a Conexão 12 // Testa se os dados para entrega estão preenchidos var s = form.nome.value; 1.8 PreparedStatement ou Statement 12 var s1 = form.morada.value; 1.9 Design Patterns 13 s2 = form.telefone.value; 1.9.1 DAOvar – Data Access Object 13 if( (s.length < 5) || (s1.length < 6) || (s2.length < 9) ) 1.9.2 Pesquisando 14 { 1.9.3 Recurso avaçando: O Cursor window.alert("preencha correctamente o seu Nome, Morada e Telefone"); 15 return(false); 1.9.4 Alteração 16 } else 1.9.5 Exclusão 16 { 2 Introdução a Java Enterprise Edition 17 // Testa se os dados de pagamento estão correctos 2.1 Porque Java if EE tem sido tão utilizado? 17 (form.pag[0].checked != true && form.pag[1].checked != true 2.2 O que é Java Enterprise 18 && Edition? form.pag[2].checked != true ) 2.3 A plataforma 18 { Java Enterprise Edition window.alert("Escolha a forma de pagamento!"); 2.3.1 APIs 19 return ( false ); 2.3.2 Contêiners 19 } else 2.3.3 Deployment de aplicações 21 { 3 Análise de arquiteturas 21 if(form.pag[0].checked == true && form.nvisa.value.length != 12) 3.1 Arquitetura Física 21 { e Arquitetura Lógica window.alert("Introduza correctamente o seu numero VISA"); 21 3.2 Tipos de aplicações na WEB return (false); 3.3 Arquitetura MVC para a Web 21 } else 3.4 Vantagens da arquitetura MVC 22 { 4 Ambiente de desenvolvimento 23 return(true); 4.1 Tomcat 23 // Só neste caso e que é autorizada a encomenda! 4.1.1 Instalar Java JSE } SDK (JDK) 24 4.1.2 Qual versão } de JDK utilizar 24 } 4.1.2.1 JAVA_HOME 24 } 4.2 Instalar Tomcat 25 } 4.2.1 Qual versão de Tomcat utilizar 25 </script> 4.2.2 Iniciar e parar o Tomcat 25 </head> <body> 4.2.2.1 [Windows] Tomcat como serviço 25 <h2> Ficha de Encomenda de Pizzas </h2><p/> 4.2.2.2 Tomcat como processo 26 <form name = "PizzaExp" method= "post" action = "mailto:[email protected]" onSubmit = 4.3 Testar Tomcat 26 "return validar(document.PizzaExp)"> 4.4 Criar contexto de desenvolvimento 26 <table> 4.4.1 <tr> Estrutura de diretórios 26 4.4.2 Criar<td> contexto de a aplicação 27 Qual Pizza web a encomendar? </td> <td> contexto: web.xml 4.4.3 Configurar 27 <select name= "pizza" > 4.4.4 Ativar contexto 29 <option> Marguerita </option> 4.4.5 Testar contexto 29 <option> Capriciosa </option> 4.5 Bibliotecas Servlet <option> Quatro Estações </option> 29 4.6 Testar seus servlets <option> Calzone </option> 30 <option> Tropical </option> 4.7 Testar seus JSPs 31 <option> Maritima </option> 4.8 Logs 31 </select> 4.9 Variáveis de Ambiente os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 32 190 1 209 Java WEB Java WEB </td> <td> Quantidade: </td> <td> <select name = "quantp"> 1 JDBC <option> 0 </option> 1.1 Banco de Dados Relacional <option> 1 </option> 1.2 JDBC – Java Database Connectivity <option> 2 </option> 1.2.1 java.sql.DriverManager <option> 3 </option> 1.3 Fábrica de Conexões<option> 4 </option> <option> 1.4 Criar Banco de Dados e Tabelas 5 </option> <option> 6 </option> 1.5 Classes Javabeans – Entidades </select> 1.6 Inserindo Dados </td> 1.7 Fechando a Conexão </tr> <tr> 1.8 PreparedStatement ou Statement <td> Qual a bebida? </td> 1.9 Design Patterns <td> 1.9.1 DAO – Data Access Object <select name="bebida"> 1.9.2 Pesquisando <option> Coca Cola </option> 1.9.3 Recurso avaçando: O Cursor <option> Seven Up </option> 1.9.4 Alteração <option> Água </option> <option> Cerveja </option> 1.9.5 Exclusão </select> 2 Introdução a Java Enterprise Edition </td> 2.1 Porque Java EE tem sido tão utilizado? <td> Quantidade: </td> 2.2 O que é Java Enterprise Edition? <td> 2.3 A plataforma Java Enterprise <select name Edition = "quantb"> <option> 0 </option> 2.3.1 APIs <option> 1 </option> 2.3.2 Contêiners <option> 2 </option> 2.3.3 Deployment de aplicações <option> 3 </option> 3 Análise de arquiteturas <option> 4 </option> 3.1 Arquitetura Física e Arquitetura <option> Lógica 5 </option> <option> 6 </option> 3.2 Tipos de aplicações na WEB </select> 3.3 Arquitetura MVC para a Web </td> 3.4 Vantagens da arquitetura MVC </tr> 4 </table> Ambiente de desenvolvimento 4.1 Tomcat <table> 4.1.1 <tr> Instalar Java JSE SDK (JDK) <input type="checkbox" name= "opcao1" /> Extra Queijo </td> 4.1.2 Qual<td> versão de JDK utilizar <td> <input type= "checkbox" name= "opcao2" /> Massa Grossa </td> 4.1.2.1 JAVA_HOME <td> <input type="checkbox" name= "opcao3" /> Pimentos </td> 4.2 Instalar Tomcat <td> <input type="checkbox" name= "opcao4" /> Cogumelos </td> 4.2.1 </tr> Qual versão de Tomcat utilizar 4.2.2 Iniciar e parar o Tomcat </table> <hr/> 4.2.2.1 [Windows] Tomcat como serviço <table> 4.2.2.2 Tomcat como processo <tr> 4.3 Testar Tomcat <td> <strong> Dados para entrega: </strong> </td> 4.4 Criar contexto de desenvolvimento </tr> 4.4.1 <tr> Estrutura de diretórios 4.4.2 Criar<td> contexto de aplicação Nome: </td> web <td> <input = "text" name="nome" size = "40" > </td> 4.4.3 Configurar contexto:type web.xml <td> Morada: </td> 4.4.4 Ativar contexto <td> <input type = "text" name= "morada" size = "40" > </td> 4.4.5 </tr> Testar contexto 4.5 Bibliotecas Servlet <tr> 4.6 Testar seusTelefone: servlets <td> </td> <td> type = "text" name = "telefone" > </td> 4.7 Testar seus<input JSPs </tr> 4.8 Logs </table> Sumário 4.9 Variáveis de Ambiente os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 8 8 8 8 9 10 10 11 12 12 13 13 14 15 16 16 17 17 18 18 19 19 21 21 21 21 21 22 23 23 24 24 24 25 25 25 25 26 26 26 26 27 27 29 29 29 30 31 31 32 191 1 210 Java WEB Java WEB <hr/> <table> Sumário <tr> <td> <strong> Forma de pagamento: </strong> </td> 1 JDBC 8 </tr> 1.1 Banco de Dados Relacional 8 <tr> 1.2 JDBC – Java Database Connectivity 8 <td> <input type = "radio" name = "pag" /> VISA </td> 1.2.1 java.sql.DriverManager 8 <td> <input type = "radio" name = "pag" /> Contra entrega </td> <td> <input type = "radio" name = "pag" /> Factura (30 dias,+15% ) </td> 1.3 Fábrica de Conexões 9 </tr> 1.4 Criar Banco de Dados e Tabelas 10 </table> 1.5 Classes Javabeans – Entidades 10 <table> 1.6 Inserindo Dados 11 <tr> 1.7 Fechando Conexãodo cartão VISA </td> 12 <td> aNúmero <td> <input ou type = "text" name = "nvisa" /> </td> 1.8 PreparedStatement Statement 12 </tr> 1.9 Design Patterns 13 </table> 1.9.1 DAO – Data Access Object 13 <hr/> 1.9.2 <input Pesquisando 14 type = "submit" value = "Enviar!" /> 1.9.3 <input Recurso avaçando: O Cursor 15 type = "reset" value = "Limpar" /> 1.9.4 Alteração 16 </form> </body> 1.9.5 Exclusão 16 </html> 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 192 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 211 www.3way.com.br Java WEB Java WEB Sumário Diálogos 18.12.16 Método Alert() 1 JDBC 8 A finalidade deste método é emitir uma caixa de diálogo do windows conforme mostrado no exemplo 1.1 Banco Dados Relacional 8 passado com umade mensagem e um botão de OK. Este método é pertencente ao objeto window do JavaScript, 1.2 JDBC – Java Database Connectivity porém seu uso com a sintaxe de ponto é opcional, assim sendo observe a sintaxe de seu funcionamento e 8 o 1.2.1 java.sql.DriverManager 8 exemplo da próxima figura: 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 window.alert("Meu Primeiro Script"); 1.5 Classes Javabeans – Entidades 10 ou 1.6 Inserindo Dados 11 alert("Meu Primeiro 1.7 Fechando a Conexão Script"); ] 12 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 Método Confirm() 2.3 A plataforma Java Enterprise Edition 18 Uma outra alternativa além do método alert() está no método confirm() que exibe uma caixa de diálogo e 2.3.1 APIs 19 os botões de OK e CANCELAR. Caso seja pressionado o botão OK, o método retornará o valor booleano TRUE e 2.3.2 Contêiners 19 pressionado o botão CANCELAR, é retornado o valor FALSE. 2.3.3 Deployment de aplicações 21 Com isto, o usuário poderá determinar uma tomada de decisão dentro de seu script. Assim como o método 3 Análise de arquiteturas 21 alert(), o método confirm é pertencente ao objeto window, sendo seu uso opcional, observe sua sintaxe abaixo e 3.1 Arquitetura Física e Arquitetura Lógica 21 veja o exemplo da caixa de diálogo presente na figura a seguir: 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 window.confirm("Tem Certeza??"); 3.4 Vantagens da arquitetura MVC 22 ou Ambiente de desenvolvimento 4 23 confirm("Tem Certeza??"); 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 18.12.17 Status 4.4.1 Estrutura de diretórios 26 Para adicionar status em sua página na web, nos links, etc..., basta usar o metodo status() do objeto 4.4.2 Criar contexto de aplicação web 27 window. Exemplo: 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 – Ao carregar a página: 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 <body onload=”window.status('Site do fulano de tal')”> 4.6 Testar seus servlets 30 texto, imagem, links, midia... 4.7 Testar seus JSPs 31 <body> 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 193 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 212 www.3way.com.br Java WEB Java WEB – No link: Sumário 1 JDBC 8 <a href=”www.google.com.br” onmouseover =”window.status(' site do Google' )” >G</a> 1.1 Banco de Dados Relacional 8 href= ”www.3way.com.br” 1.2 JDBC – Java <a Database Connectivity 8 onmouseover=”window.status('site da 3way')”>3Way</a> 1.2.1 java.sql.DriverManager 8 </body> 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 O método status pode ser usado em qualquer elemento HTML se ele suportar algum evento. 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 18.12.18 Navigator 1.7 Fechando a Conexão 12 Neste objeto ficam armazenadas as informações sobre o browser que está sendo utilizado. Forma geral: 1.8 PreparedStatement ou Statement 12 Navigator.propriedade. 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 Propriedades 1.9.2 Pesquisando 14 – appCodeName Armazena o codnome do browser. 1.9.3 Recurso avaçando: O Cursor 15 - Armazena o nome do browser. 1.9.4 – appName Alteração 16 – appVersion Armazena a versão do browser. 1.9.5 Exclusão 16 – userAgent - Armazena o cabeçalho (user-agent) que é enviado para o servidor, no protocolo HTTP, isto 2 Introdução a Java Enterprise Edition 17 serve para que oEE servidor identifique o software que está sendo usado pelo cliente. 2.1 Porque Java tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 Exemplo: 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 <script language="javascript"> 2.3.3 Deploymentdocument.write("Code de aplicações 21 Name: "+ navigator.appCodeName +"<br>"); 3 Análise de arquiteturas 21 document.writeln("Nome: "+ navigator.appName +"<br>"); 3.1 Arquitetura document.writeln("Versão: Física e Arquitetura Lógica 21 "+ navigator.appVersion +"<br>"); 3.2 Tipos de aplicações na WEB 21 document.writeln("Agente: "+ navigator.userAgent +"<br>"); 3.3 Arquitetura MVC para a Web 21 </script> 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 Saída: 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 18.12.19 History 4.2.2 Iniciar e parar o Tomcat 25 objeto armazena URL das páginas HTML por onde o usuário passou durante a sessão atual 25 do 4.2.2.1 Este[Windows] Tomcattodas comoas serviço browser. É uma cópia das informações armazenadas na opção Go da barra de menu do Navigator . 4.2.2.2 Tomcat como processo 26 Forma geral: 4.3 Testar Tomcat 26 history.propriedade 4.4 Criar contexto de desenvolvimento 26 history.método 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 Propriedades 4.4.3 Configurar contexto: web.xml 27 – lenght - Informa a quantidade de páginas visitadas. 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 Métodos 4.5 Bibliotecas Servlet 29 – back Retorna à página anterior, de acordo com a relação de páginas do objeto history . Equivale a clicar o 4.6 Testar seus servlets 30 botão (Voltar) do browser. 4.7 Testar seus JSPs 31 Ex: history.back() 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 194 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 213 www.3way.com.br <body> Java WEB Java WEB – forward - Passa para a próxima página, de acordo com a relação de páginas do objeto history. Equivale a Sumário clicar o botão (Próxima Página) do browser. 1 JDBC 8 1.1 Banco de Dados Relacional 8 – go - Permite que qualquer URL que esteja presente na relação de páginas visitadas do objeto history, seja 1.2 JDBC – Java Database Connectivity 8 carregada. 1.2.1 java.sql.DriverManager 8 Ex: history.go(parâmetro) 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 Existem duas possibilidades para parâmetro: 1.5 Classes Javabeans – Entidades 10 - parâmetro é um número: Ao definir um número, este deve ser inteiro. Se for positivo, a página alvo está 1.6 Inserindo Dadosà frente. Ao passo que se for negativo, a página alvo está parâmetro páginas para traz. 11 parâmetro páginas 1.7 Fechando a Conexão 12 - parâmetro é uma string: Neste caso, o alvo é a URL que mais se assemelhe ao valor da string definida por 1.8 PreparedStatement ou Statement 12 parâmetro. 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 18.13 Controle de Documento Via DOM 1.9.2 Pesquisando 14 Dom em Português significa Modelo de Objetos de Documentos, é a interface 1.9.3 Recurso avaçando: O Cursor 15 de programação ultilizada para acesso e manipulação de dados em documentos HTML É um modelo que16 1.9.4 Alteração e XML. Os nós seguem uma hierarquia, tornando, portanto, mais organizado o acesso, 1.9.5 Exclusão 16 disponibiliza os dados a insclusão, a alteração e a excluisão de informações. 2 Introdução a Java Enterprise Edition como um conjunto 17 de Exemplo de nós: 2.1 Porque Java EE tem sido tão utilizado? 17 nós, os quais podem18 ser 2.2 O que é Java Enterprise Edition? acessados por meio18 de 2.3 A plataforma Java Enterpriseul Edition 2.3.1 APIs 19. um código JavaScript 2.3.2 Contêiners 19 2.3.3 Deployment li de aplicações li 21 li 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 texto texto texto 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 01 02 03 3.4 Vantagens da arquitetura MVC 22 18.13.1 DOM API 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 – getElementsByTagName Instalar Java JSE SDK (JDK) 24 um array contento a relação dos nodos filhos do elemento especificado. 4.1.2 QualRetorna versão de JDK utilizar 24 – childNodes 4.1.2.1 JAVA_HOME 24 Indica uma lista contendo todos os filhos desse nodo. 4.2 Instalar Tomcat 25 4.2.1 – createTextNode(text) Qual versão de Tomcat utilizar 25 Cria um nodo de texto com a string especificada, retornando um objeto do tipo texto (text). 4.2.2 Iniciar e parar o Tomcat 25 new Child ) serviço 4.2.2.1 – appendChild( [Windows] Tomcat como 25 Adiciona nodo no final da lista de filhos do nodo especificado. 4.2.2.2 Tomcat comoum processo 26 – createElement(newElementName) 4.3 Testar Tomcat 26 um elemento do tipo especificado. A instância retornada implementa a interface do elemento, 4.4 CriarCria contexto de desenvolvimento 26 e, portanto, os atributos podem ser especificados no objeto de retorno. Se o nome informado 4.4.1 Estrutura de diretórios 26 algum caractere inválido, será gerada a exceção INVALID_CHARACTER_ERR. 4.4.2 Criarpossuir contexto de aplicação web 27 4.4.3 – removeChild(theChild) Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 Remove o nodo especificado na lista de filhos e o retorna. 4.4.5 – getAttribute(nome) Testar contexto 29 4.5 Bibliotecas Servlet 29 Pega o atributo de um determinado elemento. 4.6 Testar seus servlets 30 – setAttribute(nome, valor) 4.7 Testar seus JSPs 31 Atribui um valor a um determinado atributo do elememeto. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 195 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 214 www.3way.com.br Ex: history.forward() Java WEB Java WEB Exemplos: Sumário Script que adiciona nodos filhos a uma lista de nomes. 1 JDBC 8 <html> 1.1 Banco de Dados Relacional 8 <head> <script> 1.2 JDBC – Java Database Connectivity 8 function InserirNome() 1.2.1 java.sql.DriverManager 8 { 1.3 9 varFábrica nome de = Conexões document.Form.nome.value; //pega o valor digitado no campo nome 1.4 Criar Banco de Dados e Tabelas 10 var lista = document.getElementById('listaNomes');//referencia atributo id lista 1.5 Javabeans – 10 varClasses novoElemento =Entidades document.createElement('li'); var novoNome = document.createTextNode(nome); 1.6 Inserindo Dados 11 lista.appendChild(novoElemento); 1.7 Fechando a Conexão 12 novoElemento.appendChild(novoNome); 1.8 PreparedStatement ou Statement 12 } 1.9 Design Patterns 13 </script> 1.9.1 DAO – Data Access Object 13 </head> <body> 1.9.2 Pesquisando 14 <form name= "Form" > 1.9.3 Recurso avaçando: O Cursor 15 type="text" name="nome"> 1.9.4 <input Alteração 16 <input type="button" value="inserir" onClick="InserirNome()"> 1.9.5 Exclusão 16 </form> 2 Introdução a Java Enterprise Edition 17 <ul id="listaNomes"> 2.1 Porque Java e EE minha tem sido tão utilizado? 17 <li><b>Esta lista</b></li> </ul> 2.2 O que é Java Enterprise Edition? 18 <body> 2.3 A plataforma Java Enterprise Edition 18 </html> 2.3.1 APIs 2.3.2 Contêiners 2.3.3 Deployment de aplicações 3 Análise de arquiteturas 3.1 Arquitetura Física e Arquitetura Lógica 3.2 Tipos de aplicações na WEB 3.3 Arquitetura MVC para a Web 3.4 Vantagens da arquitetura MVC 4 Ambiente de desenvolvimento 4.1 Tomcat 4.1.1 Instalar Java JSE SDK (JDK) Acessando os elementos de nós usando os métodos. 4.1.2 Qual versão de JDK utilizar Lista de Nomes 4.1.2.1 JAVA_HOME  João 4.2 Instalar Tomcat Maria 4.2.1  Qual versão de Tomcat utilizar  Zezinho 4.2.2 Iniciar e parar o Tomcat Paulo 4.2.2.1  [Windows] Tomcat como serviço  Francisco 4.2.2.2 Tomcat como processo 4.3 Testar Tomcat <html> 4.4 Criar contexto de desenvolvimento <head> 4.4.1 <script> Estrutura de diretórios 4.4.2 function Criar contexto de aplicação web MostraFilhos() 4.4.3 { Configurar contexto: web.xml var nomes = document.getElementsByTagName('li'); 4.4.4 Ativar contexto for(i = 1; i < nomes.length; i++ ) 4.4.5 Testar contexto { 4.5 Bibliotecas Servlet var nome = nomes[i].childNodes; 4.6 Testar seus servlets alert(nome[0].nodeValue); } seus JSPs 4.7 Testar } Logs 4.8 </script> 4.9 Variáveis de Ambiente os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 19 19 21 21 21 21 21 22 23 23 24 24 24 25 25 25 25 26 26 26 26 27 27 29 29 29 30 31 31 32 196 1 215 Java WEB Java WEB </head> <body> Sumário <ul id="listaNomes"> <li><b>Esta e minha lista</b></li> JDBC <li>Jo&atilde;o</li> Banco de Dados Relacional <li>Maria</li> JDBC – Java Database Connectivity <li>Zezinho</li> java.sql.DriverManager <li>Paulo</li> <li>Francisco</li> Fábrica de Conexões </ul><br> Criar Banco de Dados e Tabelas <a href="javascript:MostraFilhos()">Mostrar Filhos</a> Classes Javabeans – Entidades <body> Inserindo Dados </html> 1 8 1.1 8 1.2 8 1.2.1 8 1.3 9 1.4 10 1.5 10 1.6 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 18.13.2 Marcar ou desmacar um conjunto de checkboxes 1.9 Design Patterns 13 <html> 1.9.1 <head> DAO – Data Access Object 13 1.9.2 Pesquisando 14 <title>Marcar e Desmarcar um conjunto de checkebox</title> 1.9.3 <script> Recurso avaçando: O Cursor 15 1.9.4 function Alteração 16 selecionarTodos(marcacao, total) 1.9.5 { Exclusão 16 2 Introdução a Java Enterprise Edition 17 for( i=1; i<=total; i++ ) 2.1 Porque Java EE tem sido tão utilizado? 17 { 2.2 O que é Javadocument.getElementById('chk_'+i).checked Enterprise Edition? 18 = marcacao; 2.3 A plataforma Java Enterprise Edition 18 } 2.3.1 } APIs 19 2.3.2 </script> Contêiners 19 2.3.3 </head> Deployment de aplicações 21 3 Análise de arquiteturas 21 <body> 3.1 Arquitetura Física e Arquitetura Lógica 21 <input type="checkbox" name="marcador" onclick="selecionarTodos(this.checked,5);">Marcar Todos 3.2 Tipos de aplicações na WEB 21 <div id="itens"> 3.3 Arquitetura MVC para a Web 21 <input id="chk_1"> Item 1<br> 3.4 Vantagens datype="checkbox" arquitetura MVC 22 <input type="checkbox" id="chk_2"> Item 2<br> 4 Ambiente de desenvolvimento 23 <input type="checkbox" id="chk_3"> Item 3<br> 4.1 Tomcat 23 <input type="checkbox" id="chk_4"> Item 4<br> 4.1.1 Instalar Java JSE SDK (JDK) 24 type="checkbox" id="chk_5"> Item 5<br> 4.1.2 Qual<input versão de JDK utilizar 24 </div> 4.1.2.1 JAVA_HOME 24 </body> 4.2 Instalar Tomcat 25 4.2.1 </html> Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 197 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 216 www.3way.com.br Java WEB Java WEB Sumário O exemplo acima nos mostra um das maneiras de selecionar vários checkbox. Na função selecionarTodos pegamos como parâmetro a marcação do checkbox que usamos como marcador e o número de checkbox que 1 JDBC 8 devemos selecionar. Depois criamos um laço e usando o método document.getElementById indentificamos os 1.1 Dados Relacional 8 checkbox a Banco serem de selecionados e atribuimos a eles o valor de seleção passado como parâmetro. 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 18.13.3 Evitando Duplo Clique do Usuário 1.3 Fábrica de Conexões 9 O ondblclick é um evento que ocorre em quase todos os elementos do HTML embora seja mais usado na 1.4 Criar Banco de Dados e Tabelas 10 Tag body. Ele é o evento responsável pelo duplo clique e podemos executar nele qualquer função. Veja um 1.5 Classes Javabeans – Entidades 10 exemplo para evitar o duplo clique: 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 <body ondblclick=”alert('Não é permitido duplo clique nesse site')”></body> 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 18.13.4 Validando Campos Obrigatórios 3.4 Vantagens da arquitetura MVC 22 No exemplo abaixo, fizemos uma validação de formulário via Javascript e DOM. Foi atribuída a variável 4 Ambiente de desenvolvimento 23 elementos um array contendo uma entrada correspondente a cada elemento existente no formulário. Percorrendo 4.1 Tomcat 23 esse array verificamos qual o tipo de elemento equivalente ao índice do array e foi verificado o atributo obrigatório 4.1.1 Instalar Java JSE SDK (JDK) 24 no elemento. 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 <html> 4.2 Instalar Tomcat 25 <head> 4.2.1 <title>Validação Qual versão de Tomcat 25 via utilizar DOM</title> <script language= "javascript" > 4.2.2 Iniciar e parar o Tomcat 25 function valida(form){ 4.2.2.1 [Windows] Tomcat como serviço 25 var elementos = form.elements; 4.2.2.2 forTomcat como processo 26 (var i=0; i< elementos.length; i++){ 4.3 Testar 26 ifTomcat (elementos[i].getAttribute("type")=="text"){ 4.4 Criar contexto desenvolvimento 26 ifde (elementos[i].getAttribute("obrigatorio")=="sim") { if (elementos[i].value=="") { 4.4.1 Estrutura de diretórios 26 alert("O campo "+elementos[i].getAttribute("name") 4.4.2 Criar contexto de aplicação web 27 é obrigatorio."); 4.4.3 Configurar contexto:+" web.xml 27 return false; 4.4.4 Ativar contexto 29 } 4.4.5 Testar contexto 29 } 4.5 Bibliotecas Servlet 29 } } 4.6 Testar seus servlets 30 return true ; seus JSPs 4.7 Testar 31 } 4.8 Logs 31 </script> 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 198 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 217 www.3way.com.br Java WEB Java WEB </head> <body> Sumário <form onSubmit="return valida(this);"> <input type= "text" name="Nome" obrigatorio="sim"><br> 1 JDBC <input type="text" name="E-mail" obrigatorio="nao"><br> 1.1 Banco de Dados name= Relacional <input type= "submit" "submit"> 1.2 JDBC – Java Database Connectivity </form> 1.2.1 java.sql.DriverManager </body> </html> 1.3 Fábrica de Conexões 8 8 8 8 9 1.4 Criar Banco de Dados e Tabelas 10 18.13.5 Validando tamanho – dos campos 1.5 Classeso Javabeans Entidades 10 Na função verificaTamanho() , é passado como parâmetro a indentificação do campo e o tamanho de 1.6 Inserindo Dados 11 caracteres que ele pode suportar. Enquanto o usuário utiliza o campo adicionando informações, usamos o evento 1.7 Fechando a Conexão 12 onkeyUp para verificar o tamanho campo, essa verificação ocorre quando o usuário libera uma tecla do teclado. 1.8 PreparedStatement ou do Statement 12 1.9 Design Patterns 13 1.9.1 <html> DAO – Data Access Object 13 1.9.2 <head> Pesquisando 14 <title>Validação via DOM</title> 1.9.3 <script Recurso avaçando: "javascript" O Cursor 15 language= > 1.9.4 Alteração 16 function verificaTamanho(campo,n) 1.9.5 Exclusão 16 { var campo.getAttribute('tamanho'); 2 Introdução a Javatamanho Enterprise= Edition 17 n sido > tamanho ) 2.1 Porque Javaif EE( tem tão utilizado? 17 alert("Campo "+campo.getAttribute('name')+ 2.2 O que é Java Enterprise Edition? 18 " deve ter no maximo "+tamanho+" caracteres!"); 2.3 A plataforma Java Enterprise Edition 18 campo.value = campo.value.substr(0,tamanho); 2.3.1 APIs} 19 2.3.2 </script> Contêiners 19 2.3.3 </head> Deployment de aplicações 21 <body> 3 Análise de arquiteturas 21 <form> 3.1 Arquitetura e Arquitetura Lógica 21 <inputFísica type= "text" name= "Nome" tamanho="30" 3.2 Tipos de aplicações na WEB 21 onblur="verificaTamanho(this,this.value.length)"><br> 3.3 Arquitetura MVC para a Web 21 <input type="text" name="E-mail"><br> <textarea name= "Mensagem" tamanho= "100" 3.4 Vantagens da arquitetura MVC 22 onkeyup="verificaTamanho(this,this.value.length)"></textarea><br> 4 Ambiente de desenvolvimento 23 <input type="submit" name="submit"> 4.1 Tomcat 23 </form> 4.1.1 </body> Instalar Java JSE SDK (JDK) 24 4.1.2 </html> Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 18.13.6 Cookies 4.2.1 Um Qual versão de Tomcat utilizar 25 cookie é um grupo de dados trocados entre o navegador e o servidor de páginas, colocado num arquivo 4.2.2 Iniciar pararno o Tomcat 25 (ficheiro) de texto e criado computador do usuário. A sua função principal é a de manter a persistência de sessões 4.2.2.1 [Windows] Tomcat como serviço 25 HTTP. A utilização e implementação de cookies foi um adendo ao HTTP e muito debatida na altura em que surgiu o 4.2.2.2 Tomcat como processo 26 conceito, introduzido pela Netscape, devido às consequências de guardar informações confidenciais num 4.3 Testar Tomcat computador - já que por vezes pode não ser devidamente seguro, como o uso costumeiro em terminais públicos. 26 4.4 Criar contexto de desenvolvimento 26 Um exemplo é aquele cookie que um site cria para que você não precise digitar sua senha novamente 4.4.1 Estrutura de diretórios 26 quando for ao site outra vez. Em JavaScript, podemos criar um script para manipulá-los utilizando 4.4.2 Criar contexto de aplicação web 27 document.cookie . 4.4.3 EstaConfigurar contexto: web.xml 27 propriedade contém uma String com o valor de todos os cookies que pertencem ao espaço de nomes 4.4.4 Ativar contexto 29 (domínio/caminho) do documento que possui a propriedade. A propriedade document.cookie é usada tanto para 4.4.5 Testar contexto 29 criar como para ler cookies. 4.5 Bibliotecas Servlet 29 Para definir um novo cookie, basta atribuir um string em um formato válido para o cabeçalho HTTP Set4.6 Testar seus servlets 30 Cookie à propriedade document.cookie . Como cookies não podem ter espaços, ponto-e-virgula e outros caracteres 4.7 Testar seus JSPs 31 especiais, pode-se usar a função escape (String) antes de armazenar o cookie, para garantir que tais caracteres 4.8 Logs 31 serão preservados em códigos hexadecimais: 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 199 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 219 www.3way.com.br Java WEB Java WEB Sumário nome="usuario"; 1 JDBC 8 vencimento="Monday, 22-Feb-99 00:00:00 GMT"; 1.1 Banco de Dados Relacional 8 document.cookie = nome + "=" + valor + "expires=" + vencimento; 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 A propriedade document.cookie não é um tipo string convencional. Não é possível apagar os valores 1.3 Fábrica de Conexões 9 armazenados simplesmente atribuíndo um novo valor à propriedade. 1.4 Criar Banco de Dados e Tabelas 10 Novos valores passados document.cookie criam novos cookies e aumentam a string: 1.5 Classes Javabeans –à Entidades 10 1.6 Inserindo Dados 11 document.cookie = "vidacurta=" + escape("é só por hoje!"); 1.7 Fechando a Conexão 12 document.cookie = ou "vidalonga=" + escape("é por duas semanas!") + "expires=" 12 + 1.8 PreparedStatement Statement vencimento; 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 estão todos armazenados na propriedade document.cookie, em um string que separa 14 os 1.9.2 Os cookies Pesquisando cookies pelo “;”. Se o valor de document.cookie for impresso agora: 1.9.3 Recurso avaçando: O Cursor 15 valor=escape("João Grandão"); // converte para Jo%E3o%20Grand%E3o 1.9.4 Alteração 16 document.write(document.cookie); 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 O texto a seguir mostrado na página, com os três cookies separados por “;”: 2.1 Porque Java será EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 usuario=Jo%E3o%20Grand%E3o; vidacurta=%C9%20s%F3%20por%20hoje%21; 2.3 A plataforma Java Enterprise Edition 18 2.3.1 vidalonga=%C9%20por%20duas%20semanas%21 APIs 19 2.3.2 Contêiners 19 letras acentuadas, espaços e outros caracteres especiais foram substituídos pelo seu código 2.3.3 As Deployment de aplicações 21 hexadecimal, após o “%”. Para decodificar o texto, pode-se usar unescape(): 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 document.write(unescape(document.cookie)); 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web 21 Se não for definido um campo expires com uma data no futuro, o cookie só sobreviverá à sessão atual 22 do 3.4 Vantagens da arquitetura MVC browser. Assim que o browser for fechado, ele se perderá. Por exemplo, se a sessão atual do browser for encerrada 4 Ambiente de desenvolvimento 23 e o browser for novamente iniciado, carregando a página que imprime document.cookie, teremos apenas dois 4.1 Tomcat 23 cookies, três como antes. porque o cookie vidacurta foi definido sem o campo expires: 4.1.1 e não Instalar Java JSE SDKIsto (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 usuario=Jo%E3o%20Grand%E3o; vidalonga=%C9%20por%20duas%20semanas%21 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 queremos definir o tempo de validade de um cookie de acordo com um intervalo relativo 25 de 4.2.1 Geralmente Qual versão de Tomcat utilizar tempo uma e data absoluta. O formato de data gerado pelo método toGMTString() de Date é compatível com 4.2.2 e não Iniciar parar o Tomcat 25 o formato aceito pelos Tomcat cookies.como Sendo assim, podemos criar, por exemplo, uma função para definir um cookie com 4.2.2.1 [Windows] serviço 25 validade em um número de dias a partir do momento atual: 4.2.2.2 baseada Tomcat como processo 26 4.3 Testar Tomcat 26 function setCookie(nome, valor, dias) { 4.4 Criar contexto de desenvolvimento 26 diasms = (new Date()).getTime() + 1000 * 3600 * 24 * dias; 4.4.1 Estrutura de diretórios 26 dias = new Date(diasms); 4.4.2 Criar contexto de aplicação web 27 expires = dias.toGMTString(); 4.4.3 Configurar contexto: web.xml 27 document.cookie = escape(nome) + "=" + 4.4.4 Ativar contexto 29 escape(valor) + "; expires=" + expires; 4.4.5 Testar contexto 29 } Bibliotecas Servlet 4.5 29 4.6 Testar seus servlets 30 4.7 Testaracima seus JSPs A função pode ser chamada tanto para criar cookies como para matar cookies no mesmo espaço 31 de 4.8 Logs 31 nomes. Para criar um novo cookie, com duração de 12 horas: 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 200 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 220 www.3way.com.br Java WEB Java WEB Sumário setCookie("cook", "Um, dois, tres", 0.5); 1 JDBC 8 Para matar o cookie criado com a instrução acima, basta criar um homônimo com data de vencimento no 1.1 Banco de Dados 8 passado. Podemos fazer istoRelacional passando um número negativo como tempo de validade em setCookie(): 1.2 JDBC – Java Database Connectivity 8 "", -365); 1.2.1 setCookie("cook", java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 Para extrair as informações úteis de um cookie, usamos os métodos de String que realizam operações com 1.4 Criar Banco de Dados e Tabelas 10 caracteres (Classes indexOf(), substring(), split()). Uma invocação do método split(";") coloca todos os pares nome/valor 1.5 Javabeans – Entidades 10 em células individuais de um vetor. 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 cookies = document.cookie.split(";"); 1.8 PreparedStatement ou Statement 12 1.9 Patterns 13 // Design cookies[0] = "usuario=Jo%E3o%20Grand%E3o" 1.9.1 // DAO – Data Access Object 13 cookies[1] = "vidacurta=%C9%20s%F3%20por%20hoje%21" 1.9.2 // Pesquisando 14 cookies[2] = "vidalonga=%C9%20por%20duas%20semanas%21" 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Uma Alteração 16 segunda invocação de split(), desta vez sobre cada um dos pares nome/valor obtidos acima, 1.9.5 Exclusão 16 separando-os pelo “=”, cria um vetor bidimensional. O string cookies[i] se transforma em um vetor para receber o 2 Introdução a Java Enterprise Edition 17 retorno de split("="). Criamos então duas novas propriedades: name e value para cada cookie, que contém 2.1 Porque EE sido tão utilizado?decodificados: 17 respectivamente, o Java nome etem valor, já devidamente 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 for (i = 0; i < cookies.length; i++) { 2.3.1 APIscookies[i] = cookies[i].split("="); 19 2.3.2 Contêiners 19 cookies[i].name = unescape(cookies[i][0]); 2.3.3 Deployment de aplicações 21 cookies[i].value = unescape(cookies[i][1]); 3 Análise de arquiteturas 21 } 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 18.14 Dom Style 3.3 Arquitetura MVC para a Web 21 O DOM STYLE representa um estilo individual declaração. O Estilo objeto pode ser acessado a partir do 3.4 Vantagens da arquitetura MVC 22 documento ou a partir dos elementos a que esse estilo é aplicado. Sintaxe para a utilização das propriedades Style 4 Ambiente de desenvolvimento 23 Object: 4.1 Tomcat 23 4.1.1 document.getElementById("id").style.property Instalar Java JSE SDK (JDK) 24 = "valor" 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 18.14.1 Categorias do Style Object: 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 18.14.1.1 Propriedades Background 4.2.2.1 [Windows] Tomcat como serviço 25 – background: define todas as propriedades de fundo. 4.2.2.2 Sintaxe: Tomcat como processo 26 4.3 Testar Tomcat 26 Object.style.background=background-color background-image background-repeat background4.4 Criar contexto de desenvolvimento 26 attachment background-position 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 Exemplo: 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 document.body.style.background="#FFCC80 url(bgdesert.jpg) repeat-y"; 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 – backgroundAttachment: define se uma imagem de fundo é fixa ou rola com a página. 4.6 Testar seus servlets 30 Sintaxe: 4.7 Testar seus JSPs 31 Object.style.backgroundAttachment=scroll|fixed 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 201 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 221 www.3way.com.br Java WEB Java WEB Exemplo: Sumário 1 JDBC 8 1.1 Banco de DadosaRelacional 8 – backgroundColor: define cor de fundo de um elemento. 1.2 JDBC – Java Database Connectivity 8 Sintaxe: 1.2.1 java.sql.DriverManager 8 Object.style.backgroundColor=color-name|color-rgb|color-hex|transparent 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 Exemplo: 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 document.body.style.backgroundColor="#FFCC80"; 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 – backgroundImage: define a imagem de fundo de um elemento. 1.9 Design Patterns 13 Sintaxe: 1.9.1 DAO – Data Access Object 13 Object.style.backgroundImage=url(URL)|none 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 Exemplo: 1.9.4 Alteração 16 1.9.5 Exclusão 16 document.body.style.backgroundImage=”url(foto.jpg)”; 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 – backgroundPosition: define a posição inicial de uma imagem de fundo. 2.2 O que é Java Enterprise Edition? 18 Sintaxe: 2.3 A plataforma Java Enterprise Edition 18 Object.style.backgroundPosition=position 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Parâmetros: Deployment de aplicações 21 – top - top center - top right - center left - center center - center right - bottom left - bottom 3 Análise deleft arquiteturas 21 center bottom right: Se você especificar apenas uma palavra-chave, o segundo valor será center . 3.1 Arquitetura Física e Arquitetura Lógica 21 – x% y%: O valor x indica a posição horizontal e y o valor indica a posição vertical. O canto 3.2 Tipos de aplicações na WEB 21 esquerdo superior é Web de 0% 0%. O canto inferior direito é 100% 100%. Se você especificar apenas um 3.3 Arquitetura MVC para a 21 valor, o outro valor será de 50%. 3.4 Vantagens da arquitetura MVC 22 – xposde – desenvolvimento ypos: O valor x indica a posição horizontal e y o valor indica a posição vertical. O canto 4 Ambiente 23 superior esquerdo, está 0 0. As unidades poderão ser pixels (0px 0px) ou quaisquer outras unidades 4.1 Tomcat 23 CSS.Java Se você especificar apenas um valor, o outro valor será de 50%. Você pode misturar%24 e 4.1.1 Instalar JSE SDK (JDK) unidades. 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 Exemplo: 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 document .body.style.backgroundPosition = “bottom center”; 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 – backgroundPositionX: define a posição horizontal de uma imagem de fundo. 4.2.2.2 Tomcat como processo 26 Sintaxe: 4.3 Testar Tomcat 26 Object.style.backgroundPositionX=position 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 Parâmetros: Criar contexto de aplicação web 27 left, center, right,web.xml x% ( 0% esquerdo e 100% direito ), xpos . 4.4.3 Configurar contexto: 27 4.4.4 Ativar contexto 29 4.4.5 Exemplo: Testar contexto 29 4.5 Bibliotecas Servlet 29 document .body.style.backgroundPositionX = “right”; 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 202 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 222 www.3way.com.br document.body.style.backgroundAttachment="fixed"; Java WEB Java WEB – backgroundPositionY: define a posição vertical de uma imagem de fundo. Sumário Sintaxe: Object.style.backgroundPositionY=position 1 JDBC 8 1.1 Banco de Dados Relacional 8 Parâmetros: 1.2 JDBC – Java Database Connectivity 8 top, center, bottom, y% ( 0% topo e 100% canto inferior ), ypos. 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 Exemplo: 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 document.body.style.backgroundPositionY = “center”; 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 – backgroundRepeat: define se/como uma imagem de fundo vai se repetir. 1.8 PreparedStatement ou Statement 12 Sintaxe: 1.9 Design Patterns 13 Object.style.backgroundRepeat=repeat_value 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 Parâmetros: 1.9.3 Recurso avaçando: O Cursor 15 repeat ( Default ), repeat-x, repeat-y, no-repeat. 1.9.4 Alteração 16 1.9.5 Exclusão 16 Exemplo: 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 document .body.style.backgroundRepeat = “repeat x”; 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 18.14.1.2 PROPRIEDADES de borda e margem 2.3.1 APIs 19 – border: Conjuntos de todas as propriedades para as quatro fronteiras em um elemento. 2.3.2 Contêiners 19 2.3.3 Sintaxe: Deployment de aplicações 21 Object.style.border=borderWidth borderStyle borderColor 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 Parâmetros: 3.2 Tipos de aplicações na WEB 21 borderWidth ( espessura 3.3 Arquitetura MVC para a Web ) : thin, medium, thick, lenght. 21 borderStyle: none, hidden, 3.4 Vantagens da arquitetura MVC dotted, dashed, solid, double, groove, ridge, inset, outset. 22 borderColor: color-name, color-rgb, color-hex, transparent. 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Exemplo: Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 document.getElementById(“id”).style.border = “1px dotted #FF0000”; 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar borderRight: define as propriedades para a borda inferior, esquerda, 25 – borderBottom, borderLeft, borderTop, do 4.2.2e a borda Iniciar e parar o Tomcat 25 topo direita respectivamente. 4.2.2.1 Sintaxe: [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 Object.style.borderBottom=borderWidth borderStyle borderColor 4.3 Testar Tomcat 26 Object.style.borderLeft=borderWidth borderStyle borderColor 4.4 Criar contexto de desenvolvimento 26 Object.style.borderTop=borderWidth borderStyle borderColor 4.4.1 Estrutura de diretórios 26 Object.style.borderRight=borderWidth borderStyle borderColor 4.4.2 Parâmetros: Criar contexto de aplicação web 27 os mesmos da propriedade border. 4.4.3 Configurar contexto: web.xml 27 4.4.4 Exemplo: Ativar contexto 29 4.4.5 document Testar contexto 29 .getElementByTagName('p').style.borderBottom = “thick solid black”; 4.5 Bibliotecas Servlet 29 document .getElementByTagName('p').style.borderLeft = “2px outset red”; document .getElementByTagName('p').style.borderBottom = “thick inset 4.6 Testar seus servlets 30 rgb(187,187,187)”; 4.7 Testar seus JSPs 31 document.getElementByTagName('p').style.borderBottom = “6px solid #FF00FF”; 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 203 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 223 www.3way.com.br Java WEB Java WEB – borderLeftColor, borderBottomColor, borderRightColor, borderTopColor: define a cor para a borda Sumário correspondente. Sintaxe: 1 JDBC 8 Object.style.borderLeftColor = color-name | color-rgb | color-hex 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 Exemplo: 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 document.getElementById(“id”).style.borderLeftColor = “#0000FF”; 1.4 Criar Banco de Dados e Tabelas 10 document.getEleme ntById(“id”).style.borderBottomColor = “red”; 1.5 Classes Javabeans – Entidades 10 document .getElementById(“id”).style.borderLeftColor = “rgb(128,128,128)”; 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 document .getElementById(“id”).style.borderLeftColor = “#F0F0F0”; 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 – borderLeftWidth, borderBottomWidth, borderRightWidth, borderTopWidth: define as espessuras das 1.9.1 DAO – Data Access Object 13 respectivas bordas. 1.9.2 Sintaxe: Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 Object.style.borderLeftWidth = thin | medium | thick | length; 1.9.4 Alteração 16 1.9.5 Exemplo: Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 document.getElementById(“id”).style.borderLeftWidth = “thin”; 2.2 O que é Java Enterprise Edition? 18 document.getElementById(“id”).style.borderBottomWidth = “medium”; 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIsdocument.getElementById(“id”).style.borderRightWidth = “2px”; 19 document .getElementById(“id”).style.borderTopWidth = “thick”; 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 – borderRightStyle, borderTopStyle: define os estilos das bordas 3 borderLeftStyle, Análise deborderBottomStyle, arquiteturas 21 correspondentes. 3.1 Arquitetura Física e Arquitetura Lógica 21 Sintaxe: 3.2 Tipos de aplicações na WEB 21 Object.style.borderRightStyle= none | hidden | dotted | dashed | solid | double | groove | ridge 3.3 Arquitetura MVC para a Web 21 | inset | outset 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 Exemplo: 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 document.getElementById(“id”).style.borderLeftStyle = “none”; 4.1.2.1 JAVA_HOME 24 document.getElementById(“id”).style.borderBottomStyle = “dotted”; 4.2 Instalar Tomcat 25 document.getElementById(“id”).style.borderRightStyle = “double”; 4.2.1 Qual versão de Tomcat utilizar 25 document .getElementById(“id”).style.borderTopStyle = “groove”; 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 – margin: Define as como margens de um elemento (pode ter até quatro valores). 4.2.2.2 Tomcat processo 26  Se você especificar um valor, tais como: div{margin: 50 pixels} todas as quatro margens serão 50 4.3 Testar Tomcat 26 pixelscontexto de desenvolvimento 4.4 Criar 26 Se você especificar dois valores, tais como: div { margin: 10px 50 pixels } - as margens superiores e 4.4.1  Estrutura de diretórios 26 inferiores serão 50 pixels, margens 4.4.2 Criar contexto de aplicação web esquerda e direita será 10px 27 Se você especificar três valores, tais como: div { margin: 10px 20px 50 pixels } - a margem superior será 4.4.3  Configurar contexto: web.xml 27 10 pixels , esquerda e direita margem será 20px , margem inferior será 50px 4.4.4 Ativar contexto 29 4.4.5  Testar contexto 29 Se você especificar quatro valores, tais como: div { margin: 10px 20px 30px 50 pixels } - a margem 4.5 Bibliotecas Servlet 29 superior será 50 pixels, margem direita será 10px, será 20px margem inferior, margem esquerda será 4.6 Testar 30 30px. seus servlets 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 204 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 224 www.3way.com.br Java WEB Java WEB Sintaxe: Sumário Object.style.margin= pos | %; 1 JDBC 8 Exemplo: 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 document.getElementById('id').margin = “10px”; 1.2.1 java.sql.DriverManager 8 document .getElementByTagName('div').margin = “5%”; 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 –1.5 marginLeft, marginBottom, marginTop: define, respectivamente, a margem esquerda, inferior, Classes Javabeans – marginRight, Entidades 10 direita e superior do elemento. 1.6 Inserindo Dados 11 Sintaxe: 1.7 Fechando a Conexão 12 Object.style.marginRight = pos | %; 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 1.9.1 Exemplo: DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 document .getElementById('id').marginLeft = “25px”; 1.9.4 Alteração 16 document.getElementByTagName('div').marginBottom = “15%”; 1.9.5 Exclusão 16 document.body.style.marginRight = “50px”; 2 Introdução a Java Enterprise Edition 17 document.getElementById('id').marginTop = “0px”; 2.1 Porque Java EE tem sido tão utilizado? 17 O que o é Java Enterprise Edition? 18 –2.2 padding: Define estofamento, preenchimento de um elemento (pode ter até quatro valores). É o espaço entre a 2.3 A plataforma Java Enterprise Edition 18 fronteira do elemento e o seu conteúdo. 2.3.1  APIs 19 Se você especificar um valor, tais como: div { padding: 50 pixels } - todos os quatro lados terão um 2.3.2 Contêiners 19 preenchimento de 50 pixels; 2.3.3 Deployment de aplicações 21  Se você especificar dois valores, tais como: div { padding: 10px 50 px } - o topo e canto inferior terá o 3 Análise de arquiteturas 21 preenchimento de 10 pixels, esquerda e direita será estofado com 50px; 3.1 Arquitetura Física e Arquitetura Lógica 21  Se você especificar três valores, tais como: div { padding: 10px 20px 50 px } - o preenchimento superior 3.2 Tipos de aplicações na WEB 21 será de 10 pixels, esquerda e direita será estofado com 20px, e o inferior será de 50px; 3.3 Arquitetura MVC para a Web 21  Se você especificar quatro valores, tais como: div {padding: 10px 20px 30px 50 px } o estofo superior 3.4 Vantagens da arquitetura MVC 22 será de 10px, o direitor será de 20px, inferior de 30px e o esquerdo de 50px. 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Sintaxe: Instalar Java JSE SDK (JDK) 24 Object.style.padding = padding; 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 Exemplo: 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 document. getElementById('id').padding = “2cm”; 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 –4.2.2.2 paddingLeft, paddingBottom, paddingRight, paddingTop: define, respectivamente, o preenchimento esquerdo, Tomcat como processo 26 inferior, direito e superior de um elemento. 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 Sintaxe: Estrutura de diretórios 26 Objetct.style.paddingLeft = lenght | % ( percentagem em relação ao total da algura do documento); 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 Exemplo: 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 document.getElementById('id').paddingLeft = “2px”; 4.6 Testar seus servlets 30 document .getElementById('id').paddingBottom = “5%”; 4.7 Testar seus JSPs 31 document.getElementById('id').paddingRight = “3cm”; 4.8 Logs 31 document.getElementById('id').paddingTop = “10%”; 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 205 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 225 www.3way.com.br Java WEB Java WEB Sumário Propriedades de Layout 18.14.1.3 – cursor: define o tipo de cursor exibido no documento. 1 JDBC 8 Sintaxe: 1.1 Banco de Dados Relacional 8 Object.style.cursor=cursortype 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 Parâmetros: 1.3 Fábrica de Conexões 9 url, default, auto, crosshair, pointer, move, e-resize, ne-resize, nw-resize, n-resize, se-resize, sw1.4 Criar Banco de Dados e Tabelas 10 resize, s-resize, w-resize, text, help, wait. 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 Exemplo: 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 document.getElementById('id').cursor = “help”; 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object 13 – display: define como um elemento será exibido. 1.9.2 Pesquisando 14 Sintaxe: 1.9.3 Recurso avaçando: O Cursor 15 Object.style.display=value 1.9.4 Alteração 16 1.9.5 Exclusão 16 Possíveis valores: 2 Introdução a Java Enterprise Edition 17 - none: o elemento nãotão será exibido; 2.1 Porque Java EE tem sido utilizado? 17 block: elemento será apresentado como um elemento de nível de bloco, com uma quebra de linha 2.2 O que é Java Enterprise Edition? 18 e depois do elemento; 2.3 A antes plataforma Java Enterprise Edition 18 - inline: o elemento será apresentado como um elemento inline, sem qualquer linha antes ou após 19 do 2.3.1 APIs elemento; 2.3.2 Contêiners 19 - list-item: o elemento será apresentado como uma lista; 2.3.3 Deployment de aplicações 21 - run-in: o elemento será apresentado ou em nível de bloco ou em elemento inline, depende 21 do 3 Análise de arquiteturas contexto; 3.1 Arquitetura Física e Arquitetura Lógica 21 - compact: o mesmo que run-in; 3.2 Tipos de aplicações na WEB 21 - table: o elemento apresentado como um bloco table (<table>), com uma quebra de linha antes 3.3 Arquitetura MVC paraserá a Web 21 e depois da 3.4 Vantagens da tabela; arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 Exemplo: 4.1.1 Instalar Java JSE SDK (JDK) 24 document = “none”; 4.1.2 Qual versão de.getElementById(“id”).style.display JDK utilizar 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 – visibility: define se um elemento deve ser visível ou não. 4.2.1 Sintaxe: Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat = visible | hidden | collapse 25 Objetct.style.visibility 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Parâmetros: Tomcat como processo 26 4.3 Testar Tomcat 26 - visible: default – o elemento pode ser visto. 4.4 Criar contexto de desenvolvimento 26 - hidden: o elemento não é visível mais afeta o layout. 4.4.1 Estrutura de diretórios 26 - collapse: Quando usado em uma linha ou coluna, o elemento não será visível. O espaço invisível 4.4.2 Criar contexto de é aplicação 27 do elemento utilizadoweb para outros conteúdos. 4.4.3 Configurar contexto: web.xml 27 4.4.4 Exemplo: Ativar contexto 29 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 document.getElementById('texto').style.visibility = 'hidden'; 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 206 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 226 www.3way.com.br Java WEB Java WEB 18.14.1.4 Propriedades de Texto Sumário – color: define a cor do texto. Sintaxe: 1 JDBC 8 Object.style.color = color-hex | color-name | color-rgb 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 Exemplo: 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 document.getElementById('texto').style.display = '#00FF00'; 1.4 Criar Banco de Dados e Tabelas 10 document.getElementById('texto').style.display = 'red'; 1.5 Classes Javabeans – Entidades 10 document.getElementById('texto').style.display = 'rgb(0,0,255)'; 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 – font: define todas as propriedades de texto. 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 Sintaxe: 1.9.1 DAO – Data Access Object 13 Objetct.style.font = fontStyle, fontVariant, fontWeight, fontSize, fontFamily. 1.9.2 Pesquisando 14 1.9.3 Exemplo: Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 1.9.5 document.getElementByName('texto').style.font Exclusão 16 = 'italic bold 12px arial,serif'; 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 – fontFamily: especifica uma lista de font-family ou generic-font para o elemento. 2.2 O que é Java Enterprise Edition? 18 Sintaxe: 2.3 A plataforma Java Enterprise Edition 18 Object.style.fontFamily = font1, font2,... 2.3.1 APIs 19 2.3.2 Exemplo: Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas document.getElementById('texto').style.fontFamily = 'arial,sans-serif'; 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 – fontSize: define o tamanho da fonte no elemento. 3.3 Arquitetura MVC para a Web 21 Sintaxe: 3.4 Vantagens da arquitetura = MVC 22 Object.style.fontSize xx-small | x-small | small | medium | large | x-large | xx-large | smaller | 4 Ambiente de desenvolvimento 23 larger | length | % 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 Exemplo: 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME 24 document.getElementById('txt').style.fontSize = 'small'; 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 – fontStyle: define o estilo da fonte no elemento. 4.2.2 Iniciar e parar o Tomcat 25 Sintaxe: 4.2.2.1 [Windows] Tomcat como serviço 25 Object.style.fontStyle = normal | italic | oblique 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 Exemplo: 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 document.getElementById('txt').style.fontStyle = 'italic'; 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 – fontWeight: define a audácia da fonte. 4.4.4 Ativar contexto 29 4.4.5 Sintaxe: Testar contexto 29 Object.style.fontWeight = value. 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 Possíveis valores: 4.7 Testar seus JSPs 31 4.8 Logs- normal: caracteres normais; 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 207 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 227 www.3way.com.br Java WEB Java WEB - lighter: define lighter caracteres; - bold: define thick caracteres; - bolder: define thicker caracteres; 1 JDBC - 100 – 900: define a espessura a partir de números que vão de 100 a 900. 400 é o mesmo que 8 o 1.1 Banco de Dados Relacional 8 normal, e 700 é o mesmo que negrito. 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 Exemplo: 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas 10 document.getElementById('txt').style.fontWight = '900'; 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 18.14.2 Alterando componentes do formulário baseado na seleção de um elemento da lista 1.7 Fechando a Conexão 12 Para fazer um formulário acessível e dinâmico, usamos Javascript com a API DOM. Abaixo temos um 1.8 PreparedStatement ou Statement 12 exemplo de formulário usando DOM Style para alterar e/ou inserir novos componentes ao formulário. 1.9 Design Patterns 13 A função mostraCampo() responsável por mostrar o objeto campo passado como parâmetro se um objeto 1.9.1 DAO – Data Access Object 13 checkbox também passado por parâmetro estiver selecionado. 1.9.2 Pesquisando 14 A função validaFormulario() como o próprio nome dela já diz, é a função responsável pela falidação do 1.9.3 Recurso avaçando: O Cursor 15 formulário, obedece o mesmo raciocínio apresentado em um de nossos exemplos anteriores. 1.9.4 Alteração 16 Usando a função retornaCampos() é possível adicionar ao formulário campos do tipo texto para a inserção 1.9.5 Exclusão 16 de neste caso, inserção do(s) nome(s) do(s) filho(s) do usuário se ele tiver filhos. 2 informações, Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 <html> 2.2 O que é Java Enterprise Edition? 18 <head> 2.3 A plataforma Java Enterprise Edition 18 <title>Formul&aacute;rio</title> 2.3.1 APIs 19 <script language= "javascript"> function mostraCampo(marcador,campo) 2.3.2 Contêiners 19 2.3.3 { Deployment de aplicações 21 var dc = document.getElementById(campo); 3 Análise de arquiteturas 21 if(marcador) 3.1 Arquitetura dc.style.display Física e Arquitetura Lógica 21 = 'block'; 3.2 Tipos de aplicações na WEB 21 else = 'none'; 3.3 Arquitetura dc.style.display MVC para a Web 21 } 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 function validaFormulario(formulario) 4.1 23 { Tomcat 4.1.1 Instalar Java JSE = SDK (JDK) 24 elemento formulario.elements; for (i = i++) 4.1.2 Qual versão de0; JDKi<elemento.length; utilizar 24 { 4.1.2.1 JAVA_HOME 24 if(elemento[i].getAttribute('obrigatorio')=='s') 4.2 Instalar Tomcat 25 { 4.2.1 Qual versão de Tomcat utilizar 25 if(elemento[i].value.length==0) 4.2.2 Iniciar e parar o Tomcat 25 { 4.2.2.1 [Windows] Tomcat como serviço 25 alert('O campo '+elemento[i].getAttribute('name')+ ' e obrigatorio!'); 4.2.2.2 Tomcat como processo 26 return false ; 4.3 Testar Tomcat 26 break; 4.4 Criar contexto de desenvolvimento 26 } 4.4.1 Estrutura de}diretórios 26 4.4.2 Criar 27 }contexto de aplicação web return true; web.xml 4.4.3 Configurar contexto: 27 } 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 function retornaCampos(total) 4.5 Bibliotecas Servlet 29 { 4.6 Testar servlets 30 dc seus = document.getElementById('recebe_campos'); 4.7 Testar seus JSPs 31 dc.innerHTML = ''; 4.8 Logsfor( i = 1; i<=total; i++) 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks Seja Todos um Profissional Aprendendo com Profissionais 208 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 228 Sumário www.3way.com.br Java WEB Java WEB { Sumário 1 8 1.1 8 1.2 8 1.2.1 8 1.3 9 1.4 10 1.5 Classes Javabeans – Entidades 10 } 1.6 Inserindo Dados 11 1.7 Fechando a Conexão 12 </script> </head> 1.8 PreparedStatement ou Statement 12 <tr> 1.9 Design Patterns 13 "return 1.9.1 <form DAOonsubmit= – Data Access Object validaFormulario(this)"> 13 <table width="700px" cellspacing="0" border="0" cellpadding="0" 1.9.2 Pesquisando 14 align="center"> 1.9.3 Recurso avaçando: O Cursor 15 <tr> 1.9.4 Alteração <td width="35%">Nome</td> 16 <td><input type= "text" name= "nome" id= "nome" obrigatorio= "s" ></td> 1.9.5 Exclusão 16 </tr> a Java Enterprise Edition 2 Introdução 17 <tr> 2.1 Porque Java <td EE tem sido tão utilizado? 17 width="35%">Conjuge</td> 2.2 O que é Java<td><input Enterprise Edition? 18 type="text" name="conjuge" id="conjuge" 2.3 A plataforma Java Enterprise Edition"s"></td> 18 obrigatorio= 2.3.1 APIs</tr> 19 2.3.2 Contêiners 19 No checkbox abaixo inserimos no evento onclick dele a função 2.3.3 Deployment de aplicações 21 mostraCampo que envia como parâmetro o estado dele. Se estiver 3 Análise de arquiteturas 21 selecionado permitirá o surgimento do campo de telefone. 3.1 Arquitetura 21 <tr> Física e Arquitetura Lógica <td>Possui telefone? <input type="checkbox" name="verif_tel" 3.2 Tipos de aplicações na WEB 21 "true" 3.3 Arquitetura value= MVC para a Web onclick="mostraCampo(this.checked,'num_tel')">Sim</td> 21 <TD><input type= "text" name= "telefone" id= "num_tel" 3.4 Vantagens da arquitetura MVC 22 obrigatorio="n" style="display: none;" value="numero" 4 Ambiente de desenvolvimento 23 onfocus="this.value=''" 4.1 Tomcat onblur="if(this.value.length==0){ this.value = 'numero'; }"> 23 4.1.1 Instalar Java</TD> JSE SDK (JDK) 24 4.1.2 Qual</tr> versão de JDK utilizar 24 <tr> 4.1.2.1 JAVA_HOME 24 <TD valign="top">Ao inserir no campo Total de Filhos o numero 4.2 Instalar Tomcat 25 correspondente ao total de filhos, a função retornaCampos cria 4.2.1 Qual versão campos de Tomcat utilizar de texto para o usuário informar o nome dos filhos e esses 25 4.2.2 Iniciar e parar o Tomcat 25 campos já vem definidos como obrigatório. Total de Filhos <input type= "text" size="2" name="total_filhos" maxlength="1" 4.2.2.1 [Windows] Tomcat como serviço 25 onkeyup="retornaCampos(this.value)"></TD> 4.2.2.2 Tomcat como processo 26 <TD id= "recebe_campos" ></TD> 4.3 Testar Tomcat 26 </tr> 4.4 Criar contexto de desenvolvimento 26 <tr> 4.4.1 Estrutura de<TD diretórios 26 colspan="2" align="center"><input type="submit" 4.4.2 Criar contexto de aplicação 27 value=web "Enviar Formul&aacute;rio"></TD> </tr> contexto: web.xml 4.4.3 Configurar 27 </table> 4.4.4 Ativar contexto 29 </form> 4.4.5 </body> Testar contexto 29 4.5 Bibliotecas Servlet 29 </html> 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 os direitos reservados a 3Way Networks SejaTodos um Profissional Aprendendo com Profissionais 209 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 229 www.3way.com.br novoElemento = document.createElement('input'); quebraLinha = document.createElement('br'); novoElemento.setAttribute('type','text'); JDBC novoElemento.setAttribute('name','nome'+i); Banco de Dados Relacional novoElemento.setAttribute('obrigatorio','s'); JDBC – Java Database Connectivity novoNome = document.createTextNode('Nome '+i+' '); java.sql.DriverManager dc.appendChild(novoNome); dc.appendChild(novoElemento); Fábrica de Conexões dc.appendChild(quebraLinha); Criar Banco de Dados e Tabelas } Siga-nos também no Twitter! twitter.com/3waynet
Copyright © 2024 DOKUMEN.SITE Inc.