3way curso-formacao-java-web-completo

  • 876 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
876
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
165
Comments
1
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Apostila Java Web www.3way.com.br
  • 2. Java WEB Java 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 de Dados Relacional Banco de Dados Relacional JDBC – Java Database Connectivity JDBC – Java Database Connectivity java.sql.DriverManager java.sql.DriverManager Fábrica de Conexões Fábrica de Conexões Criar Banco de Dados e Tabelas Criar Banco de Dados e Tabelas Classes Javabeans – Entidades Classes Javabeans – Entidades Inserindo Dados Inserindo Dados Fechando a Conexão Fechando a Conexão PreparedStatement ou Statement PreparedStatement ou Statement Design Patterns Design Patterns DAO – Data Access Object DAO – Data Access Object Pesquisando Pesquisando Recurso avaçando: O Cursor Recurso avaçando: O Cursor Alteração Alteração Exclusão Exclusão Introdução a Java Enterprise Edition Introdução a Java Enterprise Edition Porque Java EE tem sido tão utilizado? Porque Java EE tem sido tão utilizado? O que é Java Enterprise Edition? O que é Java Enterprise Edition? A plataforma Java Enterprise Edition A plataforma Java Enterprise Edition APIs APIs Contêiners Contêiners Deployment de aplicações Deployment de aplicações Análise de arquiteturas Análise de arquiteturas Arquitetura Física e Arquitetura Lógica Arquitetura Física e Arquitetura Lógica Tipos de aplicações na WEB Tipos de aplicações na WEB Arquitetura MVC para a Web Arquitetura MVC para a Web Vantagens da arquitetura MVC Vantagens da arquitetura MVC Ambiente de desenvolvimento Ambiente de desenvolvimento Tomcat Tomcat Instalar Java JSE SDK (JDK) Instalar Java JSE SDK (JDK) Qual versão de JDK utilizar Qual versão de JDK utilizar JAVA_HOME JAVA_HOME Instalar Tomcat Instalar Tomcat Qual versão de Tomcat utilizar Qual versão de Tomcat utilizar Iniciar e parar o Tomcat Iniciar e parar o Tomcat [Windows] Tomcat como serviço [Windows] Tomcat como serviço Tomcat como processo Tomcat como processo Testar Tomcat Testar Tomcat Criar contexto de desenvolvimento Criar contexto de desenvolvimento Estrutura de diretórios Estrutura de diretórios Criar contexto de aplicação web Criar contexto de aplicação web Configurar contexto: web.xml Configurar contexto: web.xml Ativar contexto Ativar contexto Testar contexto Testar contexto Bibliotecas Servlet Bibliotecas Servlet Testar seus servlets Testar seus servlets Testar seus JSPs Testar seus JSPs Logs Logs Variáveis de Ambiente Variáveis de Ambiente 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 89 8 89 8 89 8 89 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 1 1 2
  • 3. 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 Request e Response e Tabelas 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 – a Aplicação Web CriandoData Access Object Pesquisando Introdução Recurso avaçando: O Cursor Endereçamento Relativo Alteração Formulários Exclusão Exemplo: Leitura de dados de um formulário Introdução a Java Enterprise Edition Manipulação de Cookies Porque javax.servlet.http.Cookie A Classe Java EE tem sido tão utilizado? O que é Java Navegação Enterprise Edition? A plataforma Java Redirecionamento Enterprise Edition APIs Reencaminhamento Contêiners Redirect versus Forward0 Deployment dados entre componentes Web Passagem de de aplicações Análise de arquiteturas Atributos da request Arquitetura Física Sessão Gerenciamento de e Arquitetura Lógica Tipos de aplicações na WEB Introdução Arquitetura MVC para Obtendo uma sessão a Web 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 ServletContext JDK utilizar 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 Filtros e parar o Tomcat [Windows] Introdução Tomcat como serviço Tomcat como processo Criando um filtro Testar Tomcat Configuração do Deployment Descriptor Criar contexto de desenvolvimento Listeners Estrutura Pages JavaServerde diretórios 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 Seja Todos os direitos reservados a 3Way Networks 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
  • 4. 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 Comentários Database Connectivity java.sql.DriverManager Objetos implícitos Fábrica de Conexões page Criar config Banco de Dados e Tabelas Classes response request eJavabeans – 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 Java Enterprise Edition Usando JavaBeans com Ações JSP Porque Java Web Reutilizáveis Componentes EE tem sido tão utilizado? O que é Java Enterprise Edition? Fragmentos JSP A plataforma Diretiva includeJava Enterprise Edition APIs Ação <jsp:include> Contêiners Ação <jsp:param> Deployment de aplicações Ação <jsp:foward> Análise de arquiteturas Expression Language OArquitetura Física e Arquitetura Lógica que é EL Tipos de EL Sintaxe de aplicações na WEB Arquitetura MVC para Literais e Operadores a Web Vantagens Variáveis da arquitetura MVC Ambiente de variáveis Navegação em desenvolvimento Tomcat Operador ponto (.) Instalar [ ] OperadorJava JSE SDK (JDK) Qual versão de JDK e Listas Navagação em Arraysutilizar 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] Tomcat como serviço que é JSTL Tomcat da JSTL Instalaçãocomo processo 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 Controle de Fluxo aplicação web 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 Mensagens servlets Testar seus JSPs Formatação de Números e Datas Logs Tratamento de erros em aplicações Web Variáveis de Ambiente Todos os direitos Aprendendo com Profissionais Seja um Profissional reservados a 3Way Networks www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 7888 7989 7989 8 7989 8 8090 8 8090 8 8191 9 8191 10 8292 10 8292 11 8393 12 8393 12 8393 13 8393 13 8494 14 8494 15 8595 16 8696 16 8696 17 8696 17 8798 18 8798 18 8899 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
  • 5. 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 Página de erro http Banco de Dados Relacional Tratando erros em Servlets JDBC – nossa Exception Criando Java Database Connectivity java.sql.DriverManager Servlet que dispara Exception Fábrica de Conexões Mapeamento no Deployment Descriptor Criar Banco de Dados e Tabelas MVC para Aplicações Web Classes Combinar – Entidades Por que Javabeans 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 Introdução Enterprise Edition? 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 O que é um Tag File Arquitetura Lógica Tipos de aplicações na uma Utilizando Tag Files em WEB página JSP Arquitetura MVC para Tag Files empacotados a Web Vantagens Diretivas da arquitetura MVC Ambiente de desenvolvimento tag Tomcat attribute Instalar variable Java JSE SDK (JDK) Qual versão de JDK Standard Actions utilizar JAVA_HOME <jsp:invoke/> Instalar Tomcat <jsp:doBody/> Qual versão Simple Tag de Tomcat utilizar Iniciar e parar o Tomcat O que é uma Simple Tag [Windows] Tomcat como serviço Ciclo de Vida Tomcat como processo Overview das classes envolvidas Testar SimpleTags CriandoTomcat Criar contexto de desenvolvimento Mapeamento de tlds em páginas Jsp Estrutura de Corpo da Tag diretórios Criar contexto de aplicação web Tópicos Avançados: definindo atributos Configurar contexto: HTML e JavaScript web.xml 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 HTML e XML Variáveis de Ambiente Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 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
  • 6. 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 18.10.1 IntroduçãoDados Relacional 1.2 JDBC – Java documento html 18.10.2 Estrutura do Database Connectivity 1.2.1 java.sql.DriverManager 18.10.2.1 Características das Tags HTML 1.3 Fábrica de 18.10.2.2 Atributos Conexões 1.4 Criar Banco de Dados e Tabelas 18.10.2.3 Textos 1.5 Classes Javabeans – 18.10.2.4 Caracteres Especiais Entidades 1.6 Inserindo Dados 18.10.3 Listas 1.7 Fechando a Conexão 18.10.3.1 Listas Ordenadas 1.8 PreparedStatement ou 18.10.3.2 Listas Não – Ordenadas Statement 1.9 Design Patterns 18.10.3.3 Exemplo de Lista de Conteudo 1.9.1 DAO – Data 18.10.4 Hyperlinks Access Object 1.9.2 Pesquisando 18.10.4.1 TAG <A> 1.9.3 Recurso Relativo 18.10.4.2 Caminho avaçando: 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 18.10.4.5 Uso com Imagens Enterprise Edition 2.1 Porque 18.10.5 Tabelas Java EE tem sido tão utilizado? 2.2 O que é Java 18.10.5.1 A TAG <TR> Enterprise Edition? 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 18.10.7 Formuláriosarquiteturas 3.1 Arquitetura Física 18.10.7.1 A TAG <FORM> e Arquitetura Lógica 3.2 Tipos <INPUT> 18.10.7.2 A TAG de aplicações na WEB 3.3 Arquitetura MVC 18.10.7.3 Campos de Texto para a Web 3.4 Vantagens da arquitetura MVC 18.10.7.4 Campos de Senha 4 Ambiente Seleção 18.10.7.5 Campos dede desenvolvimento 4.1 Tomcat 18.10.7.6 Campos de Escolha 4.1.1 Instalar Java JSE SDK (JDK) 18.10.7.7 Campos de Lista ou Menu 4.1.2 Qual versão Múltiplas Linhas 18.10.7.8 Campos com de JDK utilizar 4.1.2.1 JAVA_HOME 18.10.7.9 Botões 4.2 Instalar Tomcat 18.10.7.10 Upload de Arquivos 4.2.1 Qual versão de Tomcat utilizar 18.10.7.11 Fieldset 4.2.2 Iniciar 18.10.7.12 Label e parar o Tomcat 4.2.2.1 Outras Tags Tomcat como serviço [Windows] 18.10.8 4.2.2.2 Meta informações <meta> 18.10.8.1 Tomcat como processo 4.3 Testar 18.10.8.2 Frames Tomcat 4.4 Criar contexto de desenvolvimento 18.10.8.3 IFrame 4.4.1 Estrutura de diretórios 18.11 Cascading Style Sheet – CSS 4.4.2 Criar contexto de aplicação web 18.11.1 Introdução 4.4.3 Configurar com HTML 18.11.2 Usando CSS contexto: web.xml 4.4.4 Ativar contexto 18.11.2.1 Estilos no 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 seus servlets 18.11.3 Declaração de Estilos 4.7 Testar seus 18.11.4 Seletores JSPs 4.8 Logs 18.11.4.1 Seletores de Classes 4.9 Variáveis de Ambiente Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 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
  • 7. Java WEB Java WEB 18.11.4.2 Sintaxe Ultilizada para Definição de Seletores Sumário 18.11.5 Propriedade de Estilo CSS 18.11.5.1 Configurações Essenciais 1 JDBC 18.11.5.2 Tabela de Unidades 1.1 Banco 18.11.5.3 Fontes de Dados Relacional 1.2 JDBC 18.11.5.4 Cores – Java Database Connectivity 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 Tabelas 18.11.5.7 Aplicando Estilos aos Principais Elementos HTML 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 Conexão 18.11.5.10 Marcadores Customizados 1.8 PreparedStatement ou Statement 18.11.5.11 Hyperlinks 1.9 Design 18.11.5.12 Botões Patterns 1.9.1 DAO – Data Entrada de Textos 18.11.5.13 Campos paraAccess Object 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 Documento HTML 18.12.1 Dentro de umJava Enterprise Edition 2.1 Porque Java EE tem sido 18.12.2 Em um Arquivo Externo tão utilizado? 2.2 O que é Java Eventos 18.12.3 Tratadores deEnterprise 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 18.12.7 Tipos de Dados aplicações 3 Análise de 18.12.8 Operadoresarquiteturas 3.1 Arquitetura Física e Arquitetura 18.12.9 Comandos Condicionais e Laços Lógica 3.2 Tipos 18.12.10 Arraysde aplicações na WEB 3.3 Arquitetura MVC para a Arrays 18.12.10.1 Criação e Inicialização deWeb 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 Instalar Java JSE 18.12.12 Classes Utilitária SDK (JDK) 4.1.2 Qual 18.12.12.1 Stringversão de JDK utilizar 4.1.2.1 JAVA_HOME 18.12.12.2 Date 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 Form Formulário 18.12.15 Objeto e parar o Tomcat 4.2.2.1 Diálogos Tomcat como serviço 18.12.16 [Windows] 4.2.2.2 Tomcat 18.12.17 Status como processo 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 18.13 Controle de Documento Via DOM 4.4.2 Criar contexto de aplicação web 18.13.1 DOM API 4.4.3 Configurar contexto: web.xml 18.13.2 Marcar ou desmacar um 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 Tamanho 18.13.5 Validando o Servlet dos Campos 4.6 Testar 18.13.6 Cookiesseus servlets 4.7 Testar seus 18.14 Dom Style JSPs 4.8 Logs 18.14.1 Categorias do Style Object: 4.9 Variáveis de Ambiente Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 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
  • 8. 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 componentes do Alterando Dados Relacional 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 Seja Todos os direitos reservados a 3Way Networks 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
  • 9. Java WEB Java WEB Sumário 1. JDBC 1.1. Banco de Dados Relacional 1 JDBC 8 O banco de Dados Relacional dados é onde guardamos os dados que pertencem ao 1.1 Banco de 8 O processo de armazenagem nosso sistema. A– maioria dos bancos de dados comerciais hoje em dia são 1.2 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 diz, um banco de dados relacional armazena banco é chamado de 9 1.3 Fábrica de nome já dados como uma série de Dados e Tabelas 1.4 Criar Banco de informações relacionadas. Grupos relacionados são 10 persistência. expressos na forma de tabelas.Entidades 1.5 Classes Javabeans – Cada tabela contém colunas que definem as 10 propriedades de cada Dados de dados armazenados. grupo 1.6 Inserindo 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. JDBC A plataforma Java Enterprise Edition – Java Database Connectivity 2.3 18 2.3.1 Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que faz o 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 bases de dados de aplicações 2.3.3 Deployment não importando quem seja seu fabricante; os desenvolvedores de um JDBC provêem a 21 implementação para arquiteturas definidas nesta API, fornecendo o mesmo grupo de funcionalidades 21 ao 3 Análise de as interfaces desenvolvedor do sistema. e Arquitetura Lógica 3.1 Arquitetura Física 21 3.2 Tipos de aplicações na WEB 21 As seguintes classes estão na API JDBC: 3.3 Arquitetura MVC para 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 com o servidor é realizada. 4.1 Tomcat 23 o 4.1.1 - java.sql.DriverManager – Gerencia os drivers JDBC utilizados pela aplicação. Em conjunto com24 Instalar Java JSE SDK (JDK) 4.1.2 endereçoversão de JDK utilizar fornecer objetos de conexão. Qual e a autenticação, pode 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 – Representa o resultado de um comando SQL. Estes objetos normalmente são 4.2 Instalar Tomcat 25 4.2.1 retornados por métodos. utilizar Qual versão de Tomcat 25 4.2.2 Iniciar e parar o Tomcat 25 1.2.1. java.sql.DriverManager como serviço 4.2.2.1 [Windows] Tomcat 25 4.2.2.2 Utilizando esta classe, o desenvolvedor pode retornar um objeto de conexão que pode ser usado para Tomcat 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 4.4.1 - Primeiro, o driver JDBC deve estar registrado com DriverManager. Isto pode ser feito utilizando o método 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 4.4.3 - Segundo, utilizando o método getConnection(), mediante informação de uma URL, assim como a senha e Configurar contexto: web.xml 27 o nome do usuário autenticado no banco de dados. A URL deve seguir a sintaxe requisitada pela 4.4.4 Ativar contexto 29 4.4.5 implementação do banco de dados. 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 Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br 8 1 9
  • 10. Java WEB Java WEB import java.sql.*; Sumário public class JDBCExemplo { 1 JDBC 8 static String url = "jdbc:derby://localhost:1527/3way"; 1.1 Banco de String usuario = "3way"; 8 static Dados Relacional 1.2 JDBC – Java Database Connectivity 8 static String senha = "123"; public static void 1.2.1 java.sql.DriverManager main(String[] args) { 8 try{ Conexões 1.3 Fábrica de 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 avaçando: O Cursor 15 } } 1.9.4 Alteração 16 } Exclusão 1.9.5 16 2 Introdução a Java Enterprise Edition 17 Teoricamente bastatem sido tão utilizado?que escrevemos para mudar de um banco para outro. Porém não 2.1 Porque Java EE alterar as três Strings 17 é tudo tão simples assim. DependeEdition? padrão SQL o banco suporta. Isso só causa dor de cabeça e existem de qual 2.2 O que é Java Enterprise 18 certos arcabouços que resolvem isso facilmente, como é o caso do Hibernate (www.hibernate.org) e do JPA. 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 2.3.2 Contêiners 19 1.3 Fábrica de Conexões 2.3.3 Em Deployment de aplicações nossa aplicação, gostaríamos de ter o controle sobre a construção dos 21 determinado momento de 3 Análiseclasse. Muita coisa pode ser feita através do construtor, como saber quantos objetos foram de arquiteturas 21 objetos da nossa 3.1 Arquitetura log sobre essas instanciações. As vezes também queremos controlar um processo muito 21 instanciados ou fazer o Física e Arquitetura Lógica 3.2 21 repetitivo e Tipos de aplicações na WEB conexão com o banco de dados. Tomemos como exemplo a classe a seguir trabalhoso, como abrir uma 3.3 seria responsável por abrir uma Web Arquitetura MVC para a conexão com o banco: 21 que 3.4 Vantagens da arquitetura MVC 22 import java.sql.*; 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 public class JSE SDK (JDK) Instalar Java FabricaConexao { 24 4.1.2 Qual versão de JDK utilizar = "jdbc:derby://localhost:1527/3way"; 24 static String url 4.1.2.1 JAVA_HOME String usuario = "3way"; 24 static 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 web SQLException(e.getMessage()); new 4.4.2 Criar contexto de aplicação 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 aviso na nossa aplicação, notificando todos os programadores ao adquirir uma 29 Poderíamos colocar um 4.6 30 conexão: Testar seus servlets 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 Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br 9 1 10
  • 11. Java WEB Java 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 1 8 e o método JDBC de getConexao(). 1.1 Banco de Dados Relacional 8 1.2 Criar Banco de Dados e Tabelas JDBC – Java Database Connectivity 8 1.4 1.2.1 Devemos criar um banco de dados agenda. Para criá-lo você deve editar a url de conexão do banco para: 8 java.sql.DriverManager 1.3 Fábrica de Conexões 9 1.4 Criar Banco de url = e"jdbc:derby://localhost:1527/agenda;create=true"; Dados Tabelas 10 static String 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 Patterns NOT NULL GENERATED ALWAYS AS IDENTITY, 13 ID BIGINT 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, você vê um exemplo de uma classe javabean que seria equivalente 3.2 Tipos de aplicações na WEB 21 ao nosso modelo de entidadepara a Web dados: 3.3 Arquitetura MVC do banco de 21 JavabBeans são 22 3.4 Vantagens da arquitetura MVC 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 JDK utilizar 4.1.2 Qual versão deString nome; 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 utilizar 25 private Tomcat email; 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] TomcatgetId() { 25 public int como serviço return id; 4.2.2.2 Tomcat como processo 26 } Tomcat 4.3 Testar 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 nome; 4.4.3 Configurar contexto: web.xml 27 } contexto 4.4.4 Ativar 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 getEndereco() { 30 public String 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 um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br 10 1 11
  • 12. Java WEB Java WEB Sumário 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 }Banco de Dados e Tabelas Criar 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 Inserindo Dados 1.7 Fechando a Conexão 12 Para inserir dados em uma Statementum banco de dados entidade relacional basta usar a cláusula INSERT. 1.8 PreparedStatement ou tabela de 12 Precisamos Design Patterns os campos que desejamos atualizar e os valores. especificar quais 1.9 13 1.9.1 Primeiro – Data Access Object DAO o código SQL: 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 Outroplataformaé o clássico SQLEdition no 2.3 A problema Java Enterprise Injection. O que acontece quando o contato a ser adicionado possui 18 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 o escape de caracteres especiais. 2.3.3 Deployment de aplicações 21 Por Análise de arquiteturas iremos usar código SQL como mostrado anteriormente... vamos imaginar algo esses dois motivos não 3 21 mais genérico e um pouco mais Arquitetura Lógica interessante: 3.1 Arquitetura Física e 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 que iremos utilizar nesse código SQL que será executado, chamado de statement. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 As cláusulas são de JDK utilizar um banco de dados através da interface PreparedStatement. Para receber Qual versão executadas em 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, "3Way web Criar contexto de aplicação Networks"); 27 4.4.3 stmt.setString(2, "contato@3way.com.br"); Configurar contexto: 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 29 Por Bibliotecas Servlet ao método execute que executa o comando SQL. 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 Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br 11 1 12
  • 13. 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 Todos os direitos reservados a 3Way Networks 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 1 13
  • 14. Java WEB Java 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 – Java Database Connectivity 1.2 JDBC class JDBCInserir { 8 public static 1.2.1 java.sql.DriverManagervoid main(String[] args) throws SQLException { 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 – // cria um preparedStatement Entidades 10 1.6 Inserindo Dados 11 PreparedStatement stmt = (PreparedStatement) con.prepareStatement("insert into contatos " 1.7 Fechando a Conexão 12 + Statement 1.8 PreparedStatement ou " (nome,email,endereco) values (?,?,?)"); 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, "contato@3way.com.br"); 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 4.1.1 O mais praticado é SDK (JDK) alguma API de ORM como o Hibernate ou JPA, porém aqueles que ainda Instalar Java JSE o uso de 24 insistem no Qual de JDBC devem prestar atenção no momento de fechar a conexão. O exemplo dado acima fecha a uso versão de JDK utilizar 4.1.2 24 conexão caso algum erro ocorra no momento de inserir algum dado no banco de 4.1.2.1 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 4.2.2.1 Ao invés de usar o PreparedStatement, você pode usar uma interface [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 4.4.1 Statement stmt = con.createStatement(); Estrutura de diretórios 26 stmt.execute( de aplicação web 4.4.2 Criar contexto 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 o código muito mais limpo. Geralmente, seus comandos SQL 30 Statement e deixaseus servlets 4.7 Testar seus JSPsvariáveis do programa Java. 31 conterão valores vindos de 4.8 Logs 31 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 12 1 14
  • 15. Java WEB Java WEB Sumário 1.9 Design Patterns Orientação à objetos resolve as grandes dores de cabeças que tínhamos na programação procedural, 1 8 restringindoJDBC e centralizando responsabilidades. Mas algumas coisas não podemos simplesmente resolver com 1.1 Banco de Dados Relacional 8 orientação à objetos pois não existe palavra chave para uma funcionalidade tão específica. Alguns desses pequenos 1.2 JDBC – Java Database Connectivity que as pessoas desenvolvem uma solução padrão para o mesmo. 8 problemas aparecem com tamanha freqüência 1.2.1isso, ao nos defrontarmos com um desses problemas clássicos, podemos rapidamente implementar essa java.sql.DriverManager 8 Com 1.3 Fábrica de Conexões 9 solução genérica com uma 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 conhecido Entidades 10 O livro maisJavabeans –de Design Patterns foi escrito em 1995 e tem trechos 1.6 Inserindo Dados A melhor maneira 11 de código em C++ e Smalltalk. Mas o que realmente importa são os conceitos e os 1.7 Fechando adesse livro independente de qualquer linguagem. Além de Conexão 12 diagramas que fazem para aprender o que é 1.8 o livroPreparedStatement ou Statement 12 tudo, é de leitura agradável: Design Patterns, Erich Gamma et al. um Design Pattern é13 1.9 Design Patterns vendo como surgiu a13 1.9.1 DAO – Data Access Object DAO – Data Access Object 1.9.1 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 = new Misterio(); 21 Misterio bd Física e Arquitetura Lógica 3.2 Tipos de aplicaçõesnome”, “meu email”, “meu endereço”); na WEB 21 bd.adiciona(“meu 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 contato no banco 24 adiciona JSE SDK (JDK) 4.1.2 Misterio bd = new utilizar Qual versão de JDK Misterio(); 24 // JAVA_HOME método muito mais elegante 4.1.2.1 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[Windows] Tomcat como serviço pela inclusão, certo? 4.2.2.1 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("3way@3way.com.br"); 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 Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br 13 1 15
  • 16. Java WEB Java 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 } catch Connectivity Database (SQLException e) { 8 e.printStackTrace(); 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 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 java.sql.Connection; Exclusão 16 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 {Edition 2.3 A plataforma Java Enterprise 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 um Contato como argumento e é responsável por adicionar o mesmo através de código sql. 3.3 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 into contatos(nome,email,endereco) values (?, ?, ?)"); de JDK utilizar 24 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 Testar 26 1.9.2 Pesquisando Tomcat 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 todos os contatos no exemplo a seguir. O objeto retornado é do tipo ResultSet que permite navegar por Estrutura de diretórios 26 retorna 4.4.2 Criar contexto de aplicação web 27 seus registros através do método next(). Esse método irá retornar false quando chegar ao fim da pesquisa, portanto 4.4.3normalmente utilizado paraweb.xml loop nos registros como no exemplo a seguir: Configurar contexto: fazer um 27 ele é 4.4.4 Ativar contexto 29 pega a conexão e o Statement 4.4.5 // Testar contexto 29 Connection con = ConnectionFactory.getConnection(); 4.5 Bibliotecas Servlet 29 PreparedStatement stmt = con.prepareStatement("select * from contatos"); 4.6 Testar seus servlets 30 4.7 Testar seusum select JSPs 31 // executa 4.8 Logs 31 ResultSet rs = stmt.executeQuery(); 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 14 1 16
  • 17. Java WEB Java WEB // Sumário itera no ResultSet while (rs.next()) { } JDBC rs.close(); Banco de Dados stmt.close(); Relacional JDBC – Java con.close();Database Connectivity 1 8 1.1 8 1.2 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 Para retornar o valor de uma coluna no banco de dados basta chamar um dos métodos get do ResultSet, 1.4 Criar mais comum: getString(). 10 dentre os quais, o Banco de Dados e Tabelas 1.5 Classes Javabeans – Entidades 10 // Inserindo conexão e o Statement pega a Dados 1.6 11 Connection acon = ConnectionFactory.getConnection(); 1.7 Fechando Conexão 12 PreparedStatement stmt = con.prepareStatement("select * from contatos"); 1.8 PreparedStatement ou Statement 12 1.9 13 // Design Patterns executa um select 1.9.1 ResultSet rsAccess Object DAO – Data = stmt.executeQuery(); 13 1.9.2 Pesquisando 14 // Recurso no ResultSet itera avaçando: O Cursor 1.9.3 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(); EE tem sido tão utilizado? 2.1 Porque Java 17 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition 18 1.9.3 Recurso avaçando: O Cursor 2.3.1 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 aplicações 2.3.3 Deployment trás é necessário especificar na abertura do ResultSet que tal cursor deve ser utilizado. 21 Mas, novamente, podemos aplicar as idéias de DAO e criar um método getLista() no nosso ContatoDAO: 3 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>desenvolvimento 4 Ambiente de contatos = new ArrayList<Contato>(); 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(); Tomcat como serviço [Windows] 25 stmt.close(); 4.2.2.2 return contatos; Tomcat como processo 26 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 contexto de aplicação web Criar List<Contato> getLista() throws SQLException { 27 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 Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br 15 1 17
  • 18. 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 Todos os direitos reservados a 3Way Networks 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 1 18
  • 19. Java WEB Java WEB Sumário contato.setEmail(rs.getString("email")); contato.setEndereco(rs.getString("endereco")); contatos.add(contato); 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 } Fábrica de Conexões 1.3 9 1.4 Criar Banco de Dados e Tabelas 10 Vamos usarJavabeans –getLista() agora para listar todos os contatos do nosso banco de dados. Crie uma 1.5 Classes o método Entidades 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 Statement 1.8 PreparedStatement ou ContatoDAO(); 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> contatos = dao.getLista(); Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Itere nessa lista e imprima as informações dos contatos: Alteração 16 1.9.5 Exclusão 16 2 17 forIntrodução a Java Enterprise Edition (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 altera(Contato 22 public void da arquitetura MVC contato) throws SQLException { 4 Ambiente de desenvolvimento 23 PreparedStatement stmt = (PreparedStatement) connection.prepareStatement( 4.1 Tomcat 23 4.1.1 Instalar Java"update(JDK) JSE SDK contatos set nome=?, email=?, endereco=? where id=?"); 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 contexto de desenvolvimento existe nada de novo nas linhas acima. Uma execução de query! Simples, não? 4.4 26 4.4.1 Agora o código para remoção: começa com uma query baseada em um contato, mas usa somente o id dele Estrutura de diretórios 26 para executar a query do tipoaplicação web delete: 4.4.2 Criar contexto de 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 Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br 16 1 19
  • 20. Java WEB Java 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 – Java Database Connectivity pois não elimina parte do 1.2 JDBC ter uma vantagem numérica, 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 plataformas, como por exemplo o 1.4 Criar Banco de Dados e Tabelas sistema Web, os sistemas que estão nos MainFrames, os sistemas que são 1.5 Classes Javabeans – Entidades executados na máquina do usuário. 1.6 Inserindo Dados EstaFechando agrande vantagem para grandes corporações que é uma Conexão 1.7 1.8 PreparedStatement ou de sistemas. enfrentam a batalha da integração Statement 1.9 Design fundamental no sucesso da plataforma é a participação Outro fatorPatterns 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 Cursor só na especificação, mas também 1.9.3 Recurso avaçando: atuam não no desenvolvimento de produtos como Contêiners, IDEs, frameworks, que 1.9.4 Alteração agregam assim ainda mais confiabilidade a tecnologia. 1.9.5 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 atualmente: 2.3.2 Contêiners 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. 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 e Arquitetura Lógica de software que pertence à nova economia globalizada21 e 3.1 Arquitetura dos ades da engenharia 3.2 Tiposcampanha de marketing pode fazer com que uma pequena empresa cresça de forma abrupta 21 de aplicações na WEB conectada. Uma do 3.3 Arquitetura MVC que a Web 21 dia para a noite. É necessário paraa sua 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 Qualservidorde JDK utilizar de falhas. Sistemas conhecidos como cluster de servidores permitem que um versão para prevenção 4.1.2 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 o e parar o é computação distribuída, Java tem uma performance muito boa em comparação a Iniciar assunto Tomcat 25 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, mas Java, quando distribuído entre servidores, não possui concorrente. Tomcat como processo 26 complexo 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 Baixo custo Estrutura de diretórios de manutenção 4.4.1 26 Código bem escrito, aplicação bem definidos e documentados, herança, polimorfismo, interfaces 27 objetos web da 4.4.2 Criar contexto de 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 Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br 171 20
  • 21. Java WEB Java 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 complexo e aproximando os desenvolvedores do negócio em si. 1.2 JDBC – Java Database Connectivity 8 1.2.1 Algumas das especificações de componentes mais importantes da plataforma Java Enterprise Edition são: 8 java.sql.DriverManager 1.3 Fábrica Pages (JSP): 9 - JavaServerde Conexões 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 Dados a camada de negócios; 1.6 Inserindo 11 - Enterprise JavaBeans: utilizados para criar componentes distribuídos, representando dados ou regras 12 de 1.7 Fechando a Conexão 1.8 12 negócio. PreparedStatement ou Statement 1.9 Design Patterns 13 1.9.1 Nenhum – Data Access Object foi idealizado para ser executado diretamente pela máquina virtual, todos DAO destes componentes 13 1.9.2 Pesquisando e controlados por um Contêiner específico como podemos observar na figura abaixo: 14 eles devem ser executados 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 4.2.1 Web Contêiner: de Tomcat utilizar JSPs (Java Server Pages) e arquivos estáticos (HTMLs, JavaScript, XML); Qual versão hospeda Servlets, 25 utiliza qualquer classe Java como, por exemplo, APIs de envio de e-mail ou acesso a banco de dados. 4.2.2 Iniciar e parar o Tomcat 25 Contêiner: hospeda Enterprise JavaBeans (EJB) que, por sua vez, também pode utilizar uma série 25 de 4.2.2.1 EJB [Windows] Tomcat como serviço APIsTomcat como processo e-mail e acesso a banco de dados. Java, tais como envio de 4.2.2.2 26 Database: Tomcat Representamos aqui um banco de dados, mas poderíamos, a partir de uma arquitetura Java EE, 4.3 Testar 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 30 Blueprints Design seus servlets 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 181 21
  • 22. 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 Todos os direitos reservados a 3Way Networks 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 1 22
  • 23. Java WEB Java WEB Sumário Compatibility Test Suite 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 Relacional A plataforma inclui um servidor chamado de R.I. (Reference Implementation) 1.1 Banco de Dados 8 1.2 JDBC – Java Database Connectivity 100% das funcionalidades especificadas. Pode ser utilizado para 8 implementado com 1.2.1 java.sql.DriverManager aplicações Java EE, sendo 100% gratuito e com código fonte disponível. 8 validar 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 tarefas voltadasAccess Object 1.9.1 DAO – Data para o gerenciamento de recursos e infra-estrutura. 13 1.9.2 Podemos dizer que, ao desenvolvermos aplicações Java EE através do uso de APIs disponibilizadas no Java Pesquisando 14 1.9.3 Recurso avaçando: Implementation), elas podem ser executadas nos servidores de aplicações que 15 Enterprise Edition (Reference O Cursor 1.9.4 implementado as especificações técnicas dos servidores JAVA EE. Alteração 16 tenham 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 Arquitetura Física e Arquitetura Lógica frequentemente utilizados para integração entre as páginas 21 Java Servlets Componentes 3.2 Tipos de aplicações na WEB e a camada de negócio. 21 Web 3.3 Arquitetura MVC para a Web 21 JavaServer Pages (JSP) da arquitetura API utilizada principalmente para construção de páginas dinâmicas. 3.4 Vantagens MVC 22 4 Message Service de desenvolvimento Ambiente (JMS) 23 Java API para tratamento de mensagens assíncronas. 4.1 Tomcat 23 Java Transaction API (JTA) SDK (JDK)API para controle manual de transações. 4.1.1 Instalar Java JSE 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 Qual and Tomcat utilizar 25 Java Naming versão de Directory API que oferece acesso a Catálogo de Objetos. 4.2.2 Iniciar 25 Interface ( JNDI) e parar o Tomcat 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 Java API forTestarWeb Services (JAX- APIs para construção e utilização de Web Services. XML Tomcat 4.3 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 Contêiners contexto: web.xml Configurar 27 2.3.2 4.4.4 Contêiners são servidores de objetos, também chamados de servidores de aplicação que oferecem Ativar contexto 29 4.4.5 e infra-estrutura para a execução de componentes. O conceito de Contêiner é independente da plataforma Testar contexto 29 serviços 4.5 Bibliotecas Servlet 29 Java EE, utilizado em outras linguagens e plataformas. 4.6 Testar seus servlets 30 Existem outros JSPs de Contêiner utilizados em Java, considera-se a seguinte divisão de perfil 31 de 4.7 Testar seus tipos Contêiners Java e Java EE: 4.8 Logs 31 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 19 1 23
  • 24. Java WEB Java 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 1.2 JDBCApplet Database Connectivity gráficos desenvolvidos com AWT/Swing controlados por browser; 8 – Java Contêiner - para painéis 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 1.4 Criardistribuídas por Java Web Start. Banco de Dados e Tabelas 10 1.5 Classes Javabeans –server-side, gerencia, além do ciclo de vida de componentes, recursos e meios de 10 Um Contêiner Entidades 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çãotem sido tão utilizado? Java Enterprise Edition 2.1 Porque Java EE das interfaces na API, 17 também especifica Java Enterprise Edition? ser, quais recursos ele deve como o Contêiner deve 2.2 O que é 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 que diversas empresas implementem seus próprios Contêiners. APIs 19 assim 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) MVC 3.4 Vantagens da arquitetura 22 - Red Hat (JBoss) desenvolvimento 4 Ambiente de 23 - Apache (Geronimo) 4.1 Tomcat 23 4.1.1 - Adobe (Jrun) JSE SDK (JDK) Instalar Java 24 4.1.2 - Borlandversão de JDK utilizar Qual (AppSever) 24 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 associado pode serutilizar versão de Tomcat encontrada em http://java.sun.com/j2ee/licensees.html. 25 compatibilidade 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 de aplicações Java para Web, nosso alvo são os Web Contêiners. Alguns dos serviços oferecidos 4.2.2.2 Tomcat como processo 26 pelos Web Contêiners são: 4.3 Testar Tomcat 26 - Gerenciamento dos recursos utilizados pelos componentes, como pool de conexões; 4.4 Criar contexto de desenvolvimento 26 4.4.1 - Gerenciamentodiretórios vida dos componentes (Servlets, JSPs e Custom Tags); Estrutura de do ciclo de 26 4.4.2 - Gerenciamento de sessões de web Criar contexto de aplicação usuários; 27 4.4.3 - Controle de acesso. Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 As duas principais APIs suportadas por um Contêiner Web são: Java Servlets e Java Server Pages.29 Testar contexto A 4.5 Bibliotecas Servletde Contêiner Web é o Tomcat. Observe que há alguns servidores que se denominam 29 implementação de referência 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 um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br 20 1 24
  • 25. Java WEB Java WEB Sumário 2.3.3 Deployment de aplicações 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 1.2.1 O trabalho de mover os arquivos estáticos da estrutura de desenvolvimento para o Contêiner Web, assim java.sql.DriverManager 8 como, o da Fábrica de Conexões compilação das classes Java, é conhecido como deployment e existem duas opções para a realização 1.3 9 desta operação. Podemos gerar umTabelas os 1.4 Criar Banco de Dados e empacotamento WAR para o nosso aplicativo, ou então, copiar diretamente10 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 pode ser feito: trabalho a Conexão 1.7 12 - Manualmente: copiando os arquivos e organizando dentro do Contêiner na estrutura necessária; 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 - Através de ferramentas oferecidas pelo próprio Contêiner; 1.9.1 - Por ambiente de desenvolvimento (IDE); DAO – Data Access Object 13 1.9.2 - Por ferramentas específicas como Ant e Maven. Pesquisando 14 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 estar todosEdition de 2.3 A plataforma Java Enterprise fisicamente na mesma máquina, apesar de existir a divisão conceitual 18 2.3.1 APIs e processamento, ou podem estar separados fisicamente, cada um em uma máquina separada. 19 responsabilidades 2.3.2 Contêiners 19 Muitas vezes 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 Testar seus servlets WEB de aplicações na 4.6 30 4.7 Testarenquadrar as aplicações na Web em um dos seguintes tipos: seus JSPs 31 Podemos 4.8 Logs 31 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 21 1 25
  • 26. 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 Todos os direitos reservados a 3Way Networks 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 1 26
  • 27. Java WEB Java WEB 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 –empresa de automóveis detecta que um item de estoque precisa ser reposto e faz o pedido uma Java Database Connectivity 1.2 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 Fábrica de Conexões 9 um papel muito 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-usera Conexão 1.7 Fechando – chat e troca de informações entre usuários (Messenger, ICQ). 12 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 1.9.1 DAO – MVC para a Web 13 3.3 Arquitetura Data Access Object 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 JSP é ótima para fazer o papel da visão, uma vez que possui facilidades para a inserção de componentes 1.9.5 Exclusão 16 visuais e para a apresentação Enterprise Edition entanto, é um pouco estranho usar uma página JSP para receber e 2 Introdução a Java de informação. No 17 2.1 uma requisição. Esta tem sido tão utilizado? no aspecto de controle do modelo MVC é mais adequada a um Porque Java EE tarefa, que se enquadra 17 tratar 2.2 O que é Java Enterprise Edition? 18 Servlet, uma vez que 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 aplicações 2.3.3 Deployment JavaBeans (EJB), no entanto esta forma de implementação foge ao escopo deste material. 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 Seja um Profissional Aprendendo com Profissionais Seja um Profissional Aprendendo com Profissionais www.3way.com.br www.3way.com.br 1 27 22
  • 28. 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 Java Database Connectivity solução, independente da requisição e da forma de apresentação. 1.2 JDBC – – Atuam como o modelo da 8 Comunicam-se com a camada intermediária que encapsula a lógica do problema. 1.2.1 java.sql.DriverManager 8 1.3 9 JSP Fábrica de na camada de apresentação utilizando os JavaBeans para obtenção dos dados a serem – Atuam Conexões 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 ou Statement problemas como estratégias de acesso aos dados e desempenho. O uso de EJB (Enterprise JavaBeans) 1.8 12 é recomendado para a implementação do Middleware, uma vez que os EJBs possuem capacidades para gerência 13 de 1.9 Design Patterns 1.9.1 DAO – Data Access Object 13 transações e persistência. Isto implica na adoção de um servidor de aplicação habilitado para EJB. 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Alteração arquitetura MVC 16 3.4 Vantagens da 1.9.5 Exclusão 16 1. Facilidade de manutenção: a distribuição lógica das funções entre os módulos do sistema isola o impacto 2 Introdução a Java Enterprise Edition 17 das modificações. Java EE tem sido tão utilizado? 2.1 Porque 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 etc) ficam concentradas na camada intermediária. Enterprise Edition 18 (database pooling, clustering, 2.3.1 APIs 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 4 Ambiente de desenvolvimento 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 4.1 Tomcat de aplicações na WEB 3.2 Tipos 21 A partir do Java EE 5.0, com 3.3 O Tomcat é um servidor de aplicações Java para web. É software livre e Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura conceituado projeto Apache Jakarta e 22 as versões de especificações de código aberto, surgido dentro do MVC 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 as tecnologias Java Servlet e JavaServer Pages (JSP). implementação de referência 4.1.1 Instalar Java JSE SDK (JDK) 24 (RI) destas tecnologias passou 4.1.2 Atualmente, o Tomcat tem seu próprio projeto de desenvolvimento Qual versão de JDK 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 eficiente oInstalar Tomcat ser utilizado mesmo em um ambiente de suficiente para 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 denominada J2EE) abrange as tecnologias Servlet e 4.2.2.2 Tomcat como processo 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 Resources e JDBC DataSources. O Tomcat tem a capacidade de atuar 4.4 Criar contexto de desenvolvimento 26 4.4.1 como servidor web/HTTP autônomo, ou pode funcionar integrado a Estrutura de diretórios 26 também 4.4.2 Criar contexto de aplicação web 27 um servidor web dedicado, como Apache http ou Microsoft IIS, ou ainda 4.4.3 parteConfigurar contexto: web.xml aplicações mais amplo, como JBoss 27 como integrante de um servidor de 4.4.4 Ativar contexto 29 AS, provendo os recursos de Java Servlet e JSP. 4.4.5 Testar contexto 29 4.5 O Tomcat porém não implementa um contêiner EJB. Para aplicações Bibliotecas Servlet 29 Java Enterprise Edition (Java EE) que utilizam Enterprise JavaBeans (EJB), 4.6 Testar seus servlets 30 4.7 Testar seus servidor de aplicações Java EE completo, como JBoss 31 você deve procurar umJSPs 4.8(software livre), GlassFish (software livre), Apache Geronimo (software Logs 31 AS 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 23 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 28 www.3way.com.br
  • 29. 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 de Dados Relacional Tomcat 4.1, 5.0, 5.5 e 6.0 em Windows, Unix e em instalações do 1.1 Banco 8 Contêiner Web. 8 Linux. As configurações Database Connectivity criar um ambiente de desenvolvimento 1.2 JDBC – Java aqui propostas são para 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? Se você quer considerar alternativas ao Tomcat, uma boa opção é o Criar Banco de Dados e Tabelas 10 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 Patterns (JDK) - JSE SDK 1.9 Design 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 15 executado. Assim, é necessário ter a plataforma Java Platform Standard É1.9.3 possível haver várias versões Cursor 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. 2 computador em locais Enterprise Edition Introdução a Java 17 O utilizado? distintos, convivendo sem sido tão Tomcat 5.5 em diante traz embutido e usa o complilador Java Eclipse JDT 2.1 Porque Java EE tem 17 para compilar JSP. Assim, o Tomcat a partir da versão 5.5 necessita apenas do 2.2problema. Neste caso, é O que é Java Enterprise Edition? 18 JRE, mas de 2.3 A plataforma Java Enterprise Editiono JDK ainda é útil para o desenvolvedor. Para seu ambiente 18 importante ficar atento a qual 2.3.1 APIs 19 desenvolvimento Java com Tomcat, onde você deve criar aplicações Java em versão Contêiners 2.3.2 será selecionada para 19 geral, utilize o JDK completo. do Tomcat. 2.3.3 usoDeployment de aplicações 21 3 Análise de arquiteturas 21 4.1.2 Lógica versão de JDK utilizar Qual 3.1 Arquitetura Física e Arquitetura 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) o 3.4 Vantagens da arquitetura MVC e J2SE 1.4.2 (desde junho 2003), ainda são consideradas ativas. Já22 4 Ambiente de desenvolvimento 1.3.1 encerrou seu ciclo de vida e não deve ser usado para nenhum 23 J2SE 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 o mais adequado é utilizarutilizar mais recente, JDK 6, que inclui todas 4.2.1 Qual versão de Tomcat a versão 25 A variável de ambiente 25 4.2.2 Iniciar e parar Tomcat as melhorias e facilidadesoatuais para a tecnologia Java padrão. O Java SE 6 é padrão JAVA_HOME deve 4.2.2.1 25 plenamente[Windows] Tomcat como serviço anteriores, exceto raras exceções. compatível com as versões 4.2.2.2 impossibilidade de usar o Java SE 6, o Java SE 5 também funciona muito Tomcat como processo ser definida (e mantida26 Havendo 4.3 Testar Tomcat atualizada) indicando o26 bem com Tomcat. 4.4 Criar contexto de desenvolvimento 26 local de instalação do J2SE 4.4.1 Para obter o Java diretórios Estrutura de SE SDK (JDK) e informações sobre a instalação em seu 26 sistema operacional, acesse o aplicação web link: http://java.sun.com/javase/downloads/ preferencial. Esta variável 4.4.2 Criar contexto de 27 4.4.3 Configurar contexto: web.xml 4.4.4 Ativar contexto 4.1.2.1 JAVA_HOME 4.4.5 Testar contexto 4.5 Completando a Servlet Bibliotecas 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 uma instalação de J2SE no computador, mas a variável houver mais de seus JSPs 4.8 Logs JAVA_HOME deve ser definida mesmo se houver apenas uma versão instalada. 4.9 Variáveis de Ambiente Seja Todos os direitos reservados a 3Way Networks 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
  • 30. Java WEB Java WEB 4.2 Instalar Tomcat Sumário 4.2.1 Qual versão de Tomcat utilizar O Tomcat tem evoluído paralelamente à evolução da Plataforma Java EE e suas especificações para web, 1 JDBC 8 1.1 Banco de Dados e JavaServer 8 especialmente Java Servlet Relacional Pages (JSP). O quadro a seguir relaciona as versões de Tomcat com as 1.2 JDBC – JavatecnologiasConnectivity Database suportadas. 8 respectivas versões de 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 Tomcat Criar Banco de Dados e Tabelas Servlet JSP Java EE 1.4 10 1.5 Classes Javabeans – Entidades 10 6.0 2.5 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 ou Statement 12 4.1 2.3 1.2 J2EE 1.3 1.9 Design Patterns 13 1.9.1 Como você estáAccess Object DAO – Data iniciando o aprendizado e desenvolvimento Java 13 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 com versões anteriores. 2 Introdução a Java Enterprise Edition do Unix e Linux; usuários do 17 2.1 Porque Java EE tem sido tão utilizado? sobre instalação e 17 Para obter o Tomcat e informações Windows devem substituir pela 18 2.2 O que é Java o site Apache Tomcat, na Apache Software documentação, acesse Enterprise Edition? barra-invertida () quando 18 2.3 A plataforma Java Enterprise Foundation: http://tomcat.apache.org/Edition 2.3.1 O diretório principal (local de instalação) do Tomcat é referenciado APIs 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 aplicações 21 documentação e scripts do Tomcat, 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 IniciarArquitetura MVC para a Web 4.2.2 e parar o Tomcat pelos programas java e javac. 21 3.4 Vantagens da arquitetura instalando como serviço (Windows 22 Você pode executar o TomcatMVC 4 Ambiente de desenvolvimento automática ou manual; ou 23 NT/2000 ou superior), com inicialização 4.1 Tomcat 23 executá-lo como processo isolado (qualquer sistema operacional), pelo 4.1.1 no grupo de programa (Windows) ou por scripts shell (.bat/.sh). Instalar Java JSE SDK (JDK) 24 atalhos 4.1.2 seguir a seção correspondente à forma de inicialização desejada. Qual versão de JDK utilizar 24 Veja a 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 4.4.5 2. Clique no ícone com o botão direito do mouse; no menu de contexto que se abre, escolha Start service Testar contexto 29 ou Bibliotecas Servlet Stop service. 4.5 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 25 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 30 www.3way.com.br
  • 31. 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 Database Connectivity 1.2 JDBC – Javado Java SDK e do Tomcat, respectivamente. O recomendado é criar o script [Windows] 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] cd %CATALINA_HOME%bin 1.4 Criar Banco de Dados e Tabelas 10 - [Unix] cd $CATALINA_HOME/bin 1.5 Classes Javabeans – 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 ou Statement 12 [Unix] startup.sh ou catalina.sh start 1.9 Design Patterns 13 - Parar: [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 a Java Enterprise Edition iniciado, abra o browser e digite o endereço: testar se o Tomcat está rodando após 2 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 2.3.3 O Tomcat inclui de aplicações chamado Tomcat Manager, que provê uma interface web amigável para Deployment um contexto 21 gerenciar asAnálise de arquiteturas — listar, parar, iniciar, recarregar, instalar (deploy), remover (undeploy) — e aplicações (contextos) 3 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) e a aplicações na WEB a este recurso. 3.2 Tipos de senha para acesso 21 ParaArquitetura MVC para a Web siga o link respectivo no quadro Administration da home-page padrão 21 acessar o Tomcat Manager, do 3.3 servidor, ou Vantagens da arquitetura MVC acesse diretamente o endereço: 3.4 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. Estrutura de diretórios desenvolvimento 4.4 Criar contexto de 26 um diretório que será 4.4.1 CrieEstrutura de diretórios a sua estrutura de desenvolvimento web Java. Uma organização simples sugerida 26 é4.4.2 a seguinte: Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 dev/Ativar contexto 4.4.4 29 + src/ (os 4.4.5 Testar contexto fontes .java ficam aqui, organizados em pacotes/diretórios) 29 +webContent/ 4.5 Bibliotecas Servlet (arquivos do módulo web) 29 + servlets WEB-INF/ (diretório obrigatório) 4.6 Testar seus 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 26 Seja um Profissional Aprendendo com Profissionais www.3way.com.br 1 31 www.3way.com.br
  • 32. Java WEB Java WEB Sumário + 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 1 JDBC 8 1.1 Banco de seu Relacional 8 Supondo queDados diretório "dev" seja em C:dirdev (Windows), assim, o módulo web ficaria em 1.2 JDBC 8 C:dirdevweb. – Java Database Connectivity 1.2.1 java.sql.DriverManager 8 1.3 9 4.4.2. Criar Fábrica de Conexões web contexto de aplicação 1.4 Criar Banco de Dados e Tabelas Tomcat um novo contexto de aplicação web, para seu ambiente 10 A tarefa aqui consiste em criar no de 1.5 Classes Javabeans – Entidades 10 desenvolvimento. Existem basicamente três meios de se criar um contexto no Tomcat, cuja configuração 1.6 Inserindo Dados 11 corresponde a um código XML com um elemento Context: 1.7 Fechando a mecanismos de Deployment Automático de Aplicação do Host no Tomcat. Este é o meio Conexão 12 - Usar um dos 1.8 recomendado, pois permite configuração automática do contexto na inicialização e atualização dinâmica 12 PreparedStatement ou Statement mais 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 DAO – Data Access Object 13 arquivo XML separado com as configurações do contexto. 1.9.2 - Editar o arquivo de configuração principal do servidor Tomcat. Consiste em criar um elemento Context Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 diretamente no arquivo conf/server.xml, dentro de um elemento Host. Este meio, ainda muito usado até o Tomcat 1.9.4 é mais recomendado a partir do Tomcat 5, em prol do Deployment Automático. A criação de um contexto Alteração 16 4, não 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 reiniciando o Tomcat, cria o risco de invalidar toda a configuração do servidor se for cometido um erro 17 Introdução a Java Enterprise Edition lidas na 2.1 Porque Java EE tem sido tão utilizado? 17 sintaxe de uma tag de contexto e mistura configurações de servidor com configurações de contexto. 2.2 O aplicação Enterprise Edition? 18 - Pela que é Javade 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 MVC localhost (máquina local) é o hostname padrão. 3.4 Vantagens da arquitetura 22 4 Ambiente de desenvolvimento 23 CrieTomcat dev.xml na localização já descrita, com o conteúdo do quadro o arquivo 4.1 23 abaixo. O conteúdo Javadefinição(JDK) O principal atributo 24 4.1.1 Instalar é a JSE SDK do Context, precedida pela tag de identificação de arquivo XML: 4.1.2 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 WEB-INF/web.xml é o descritor do contexto de aplicação web, 26 O arquivo Tomcat aplicação web. 26 4.4 Criar contexto Java Servlet/J2EE. As informações nele contidas são as de desenvolvimento segundo a especificação 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 27 aplicação for publicada. de aplicação web 4.4.3 Nosso contexto de web.xml Configurar contexto: desenvolvimento terá apenas as seguintes 27 4.4.4 Ativar 29 configurações: contexto 4.4.5 - informações textuais de título (elemento display-name, nome da Testar contexto 29 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 30 contexto, úteis para identificação e documentação; 4.7 Testar seus JSPs servlet associada à classe do invocador genérico 31 - uma definição de 4.8 Logs Tomcat, usada para executar os servlets que você criar; 31 InvokerServlet do 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 27 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 32 www.3way.com.br
  • 33. Java WEB Java WEB - um mapeamento (elemento servlet-mapping) genérico associando o padrão de endereço URI /servlet/* à Sumário definição do invoker criada, indicando que qualquer nome dentro do caminho /servlet/ neste contexto deve ser reconhecido como servlet e portanto repassado ao invoker do Tomcat para execução. 1 JDBC 8 1.1 8 CrieBanco de Dados Relacional 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 4.1.2 Como se versão observar no XML anterior, ele se refere ao descritor de aplicação web da especificação Qual pode 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, substitua o cabeçalho do XML e a definição da tag raiz web-app pelo da respectiva versão. Eis a alteração 25 de 4.2 Instalar Tomcat cabeçalho para Servlet 2.4: Tomcat utilizar 4.2.1 Qual versão de 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 <?xml version="1.0" encoding="ISO-8859-1"?> [Windows] Tomcat como serviço 25 <web-app xmlns="http://java.sun.com/xml/ns/j2ee" 4.2.2.2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Tomcat como processo 26 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" 4.4.1 version="2.4"> 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 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 contexto definida por um DTD definido na tag DOCTYPE, enquanto as versões mais recentes usam XML Schema (XSD), 4.5 Bibliotecas Servlet 29 definido porTestar seus servlets tag web-app. atributos na própria 4.6 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 28 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 33 www.3way.com.br
  • 34. Java WEB Java WEB Sumáriopode usar algum dos muitos Você <?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"> 1 Validadores de XML existentes JDBC 8 1.1 Banco de Dados Relacional 8 como auxílo, como por exemplo o 1.2serviço JDBC – Java Validação de Database Connectivity 8 <web-app> on-line 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 1.4 arquivo, URI na web ou o e Tabelas Criar Banco de Dados texto 10 1.5 copiado diretamente emEntidades 4.4.4. Ativar contexto Classes Javabeans – um 10 Para garantir a ativação do novo contexto criado, reinicie11 o 1.6 Inserindo Dados formulário. Tomcat (stop/start). Logo após a inicialização do Tomcat, o arquivo 12 de 1.7 Fechando a Conexão log 1.8 PreparedStatement ou Statement de saída padrão do servidor Tomcat, criado em logs com o nome 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 utilizado? 2.1 Porque Java EE tem sido tão org.apache.catalina.startup.Catalina load 17 INFO: Initialization processed in 2234 ms 2.2 O(...) Java Enterprise Edition? que é 18 2.3 A12/09/2004 12:09:06 org.apache.catalina.core.StandardHostDeployer install 18 plataforma Java Enterprise Edition 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 por padrão muito menos mensagens em log para os contextos do que o Tomcat 21 O Tomcat 5 em diante gera 3.1 21 4, de forma Arquitetura Física enão gera nenhuma mensagem no arquivo de log específico do contexto dev. Por isso, que a inicialização Arquitetura Lógica 3.2 Tipos de não encontrar inicialmente nenhum arquivo localhost_dev_log.*.txt na pasta logs. 21 não estranhe se vocêaplicações na WEB 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens 22 4.4.5. Testar contexto da arquitetura MVC 4 Ambiente de desenvolvimento o endereço: 23 Para testar o novo contexto, acesse 4.1 Tomcat 23 http://localhost:8080/dev/ 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Se você criou umde JDK utilizar diretório de desenvolvimento (dev/web/), Qual versão index.html no 24 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 Tomcat. Instalar Tomcat 25 Se o Tomcat retornar a pelo 4.2.1 O problema mais comum é haver algum erro de sintaxe no elemento Context Qual versão de Tomcat utilizar 25 página de erro 404 4.2.2 25 no arquivo Iniciar e parar o Tomcat XML que define o contexto. Verifique os logs do Tomcat, conforme a Não Encontrado, houve 4.2.2.1 adiante, à procura de erros. Você pode também usar algum dos muitos [Windows] Tomcat como serviço 25 seção 12 4.2.2.2 Tomcat como processo auxílo, como por exemplo o serviço on-line de algum problema de 26 Validadores de XML existentes como 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 deformulário. desenvolvimento 26 copiado diretamente em um 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 4.4.5 Para compilar servlets, você precisa essencialmente importar os pacotes Testar contexto 29 javax.servlet e javax.servlet.http. As bibliotecas com estes pacotes também estão 4.5 Bibliotecas Servlet 29 inclusas como JAR no Tomcat e devem ser adicionadas ao CLASSPATH do 4.6 Testar seus servlets 30 compilador Testar seus JSPs javac: 4.7 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 29 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 34 www.3way.com.br
  • 35. Siga-nos também no Twitter! twitter.com/3waynet
  • 36. 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 9 1.3 Fábrica de Conexões 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-INFlib 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 ZIP com os arquivos deste material (veja a Introdução) inclui o Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 fonte de um servlet bem simples AloMundoServ.java, que pode ser usado como 1.9.5 Exclusão 16 primeiro teste, conforme abaixo: 2 Introdução a Java Enterprise Edition 17 import java.io.*; EE tem sido tão utilizado? 2.1 Porque Java 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 class AloMundoServ extends HttpServlet { APIs 19 public 2.3.2 public void doGet(HttpServletRequest request, HttpServletResponse response) Contêiners 19 2.3.3 Deploymentthrows IOException, ServletException { de aplicações 21 String alo = "Alô Mundo!"; 3 Análise de arquiteturas 21 PrintWriter Arquitetura Lógica out = response.getWriter(); 3.1 Arquitetura Física e 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 oJAVA_HOME arquivo estiver em dev/src/, você pode abrir uma janela de comandos (prompt) neste local, certificar4.1.2.1 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 4.2.2.1 javac -d ../../web/WEB-INF/classes AloMundoServ.java [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 Depois queTomcat um servlet for compilado e o .class resultante colocado em dev/web/WEB-INF/classes/, com26 as 4.3 Testar configurações decontexto de desenvolvimento que fizemos no contexto, você acessa seu servlet com o URI mapeamento servlet genérico 4.4 Criar 26 /dev/servlet/NomeDaClasseServlet (sem o .class). Para o exemplo compilado AloMundoServ.class, acesse o servlet 4.4.1 Estrutura de diretórios 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 sintaxeservlets dos elementos <servlet> e <servlet-mapping>. 4.6 Testar seus 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 30 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 36 www.3way.com.br
  • 37. Java WEB Java WEB 4.7. Testar seus JSPs 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 Criar arquivos Dados e Tabelas para organizar os Banco de JSP 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 TomcatData Access Object configuração não estiver apontando para a DAO – 5 ou inferior, se a 13 1.9.2 Pesquisando (Java SDK) mas sim para a do JRE (Java Runtime), a 14 localização correta do JDK 1.9.3 15 tentativa deRecurso avaçando: O Cursor resultar no seguinte erro: exibição de um novo JSP pode 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 Edition? to compile the generated source for the JSP. 2.2 O que é Java Enterprise 18 This can A plataforma Java Enterprisecopying manually $JAVA_HOME/lib/tools.jar from the JDK 18 usually be solved by Edition 2.3 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 Arquitetura Física erro. Para solucionar, 21 novas ou modificadas. Daí o e Arquitetura Lógica re-configure ou re-instale o Tomcat informando o caminho 3.2 Tipos de aplicações então recorra à alternativa sugerida na mensagem de erro: copie manualmente21 na WEB correto do Java SDK (JDK), ou o 3.3 Arquitetura MVC para diretório 21 arquivo lib/tools.jar do JDK para o a Web common/lib do Tomcat e re-inicie o Tomcat (shutdown/start). 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento 23 4.1 23 4.8. Logs Tomcat 4.1.1 Instalar Java JSE SDK (JDK) 24 ver logs de JDK utilizar 4.1.2 ParaQual versão deacesso, erro e depuração, leia os txt's gerados em CATALINA_HOMElogs. Quando 24 existirem muitos arquivos de log no Tomcat de desenvolvimento e você quiser limpar o diretório para facilitar24 o 4.1.2.1 JAVA_HOME 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 de 4.2.2.1 - Remover todos os arquivos de log existentes em CATALINA_HOMElogs, ou movê-los para uma área 25 [Windows] Tomcat como 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 4.4.1 Inspecionar as mensagens de saída informativas e de erro do Tomcat é importante para depurar e fazer Estrutura de diretórios 26 diagnóstico Criarservidor, identificar problemas na inicialização do Tomcat, acompanhar o processamento dos do contexto de aplicação web 4.4.2 27 arquivos deConfigurar contexto: web.xml configuração (server.xml, web.xml) e da inicialização e finalização do Tomcat, bem como visualizar 4.4.3 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 e stderr.log respectivamente, localizados em CATALINA_HOMElogs. 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 31 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 37 www.3way.com.br
  • 38. 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: Local de instalação do Kit de Desenvolvimento Java J2SE (JDK). 1.2 JDBC – Java Database Connectivity 8 1.2.1 CATALINA_HOME : Local de instalação do Tomcat. java.sql.DriverManager 8 1.3 Fábrica : Conexões 9 CLASSPATH deCaminhos (pacotes e diretórios) de localizações de classes Java; o classpath deve incluir o(s) 1.4 Criar pacotes Servlet e Tabelas 10 jar(s) dos Banco de Dados e JSP 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 11 bin das ferramentas do Java SDK. 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement autoexec.bat), ou criar um script setenv.bat: 12 Windows (Painel de Controle ou arquivo 1.9 13 setDesign Patterns JAVA_HOME=C:Arquivos de programasJavajdk1.6.0_05 1.9.1 setDAO – Data Access Object 13 CATALINA_HOME=C:Arquiv~1Apache~1Tomcat 6.0 1.9.2 setPesquisando 14 CLASSPATH=%CATALINA_HOME%commonlibservlet-api.jar;.;%CLASSPATH% 1.9.3 Recurso avaçando: O Cursor 15 set CLASSPATH=%CATALINA_HOME%commonlibjsp-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 Edition? 2.2 O que é Java Enterprise 18 CATALINA_HOME=/opt/tomcatEdition 2.3 A plataforma Java Enterprise 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 Arquitetura Lógica Bash e similares: 3.1 Arquitetura Física (sh), Korn shell (ksh), 21 export JAVA_HOME CATALINA_HOME CLASSPATH PATH 3.2 Tipos de aplicações 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. 23 4.1 Tomcat 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 Qual versão para execução. A 25 certas fatias de tempo de Tomcat utilizar esta capacidade é denominado o termo 4.2.2 Iniciar e parar o Tomcat 25 multiprocessamento. 4.2.2.1 Teoricamente existe uma grande proteção para que um processo não afete a [Windows] Tomcat como serviço 25 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 Criar contexto deentre os processos (IPC – Inter Process Communication). Este alto grau de isolamento de comunicação desenvolvimento 4.4 26 reduz os desagradáveis GPFs (General Protection Fault), pois o sistema se torna mais robusto. Em contrapartida, o 4.4.1 Estrutura de diretórios 26 início de cada processo é bastante custoso, em termos de uso de memória e desempenho, e o mecanismo de troca 4.4.2 Criar contexto de aplicação web 27 4.4.3 Configurar processos é mais 27 de mensagens entre oscontexto: web.xml complexo e mais lento, se comparado a um único programa acessando a 4.4.4 Ativar contexto 29 própria base de dados. 4.4.5 Uma solução encontrada foi o uso de threads, também conhecidas por linhas de execução. A thread pode Testar contexto 29 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 threads. O início JSPs 4.7 Testar seus de execução de uma thread é muito mais rápido do que um processo, e o acesso a sua área 31 de dados funciona como um único programa. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 32 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 38 www.3way.com.br
  • 39. 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 8 é 1.1 Banco de Dados Relacional obtida através de– Javafatia de tempo fornecida pelo S.O. ou pela JVM. Isto cria um paralelismo virtual, como pode uma Database Connectivity 1.2 JDBC 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 33 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 39 www.3way.com.br
  • 40. 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 operador new. Ao ser criada, a thread passa a ser registrada dentro da JVM, para que a mesma posso através do 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 java.sql.DriverManager 8 quem determina o tempo de sua execução é a JVM ou o S.O.. 1.3 Fábrica de Conexões 9 A thread está no estado de bloqueado, quando for desativada. Para 1.4 Criar Banco de Dados e que ocorra uma das quatro operações a seguir: Tabelas 10 desativar uma thread é necessário 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 o método suspend() da thread (método deprecado) 1.7 Fechando a Conexão 12 ser reativada, deve-se 3. APreparedStatement ou Statement trhead chamou o método wait(); 1.8 12 cria-la novamente. 4. ADesign Patterns uma operação de I/O que bloqueia a CPU; thread chamou 1.9 13 1.9.1 DAO – Data Access Object 13 1.9.2 Para a thread sair do estado de bloqueado e voltar para o estado de Pesquisando 14 1.9.3 15 executável, Recurso avaçando: operações deve ocorrer, em oposição as ações acima: uma das seguintes O Cursor 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(), caso a thread tiver sido suspensa 2 Introdução a Java Enterprise Edition 17 (método deprecado); sido tão utilizado? 2.1 Porque Java EE tem 17 - Retornar com Enterprise Edition? ou notifyAll(), caso a thread estiver em o método notify() 2.2 O que é Java 18 2.3 A plataforma Java Enterprise Edition 18 espera; 2.3.1 - Retornar após a conclusão da operação de I/O. APIs 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 chamadaArquitetura Lógica stop(). explícita do método 3.1 Arquitetura Física e 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 o arquitetura thread, está apresentado a seguir, um programa que fica indefinidamente 22 Para entender da uso de umaMVC 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 4.2 Instalar Tomcat i = 0; 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 contextoS.O.desenvolvimento próprio S.O. se encarrega de gerenciar a ocupação da CPU, o que de preemptivos, o 26 corporativos. Porém em 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 A 4.4.3 Como implementar o programa SemThread, permitindo que outros processos compartilhem a CPU?27 Configurar contexto: web.xml solução é utilizar threads, como pode ser observado na classe SimplesThread. Existem duas abordagens para uma 4.4.4 Ativar contexto 29 classe ser uma thread: 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus a interface Runnable; 30 1. Implementar servlets 4.7 Testar seus da classe Thread; JSPs 31 2. Ser derivada 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 34 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 40 www.3way.com.br
  • 41. Java WEB Java WEB Neste exemplo a classe Escrita é derivada da classe Thread. No método run() da classe Escrita está contido Sumárionecessário para implementar adequadamente o programa acima. o código 1 JDBC 8 class Escrita extends Thread { 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java int i; Connectivity Database 8 private 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 main(String[] args) { 13 public static void 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 Escrita implements Runnable { 2.3.1 APIs 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.out.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 void main(String[] args) { 23 static 4.1.1 Instalar Java JSE SDK (JDK) Mesmo que o objeto 24 4.1.2 Escritaversão new Escrita();//Cria o contexto de execução Qual e = 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 SimplesThread2 cria o contexto de execução da thread no [Windows] Tomcat como serviço 25 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 Ativar contexto método run da thread). local onde há o 4.4.4 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 JSPs 4.7 Testar thread propriamente dito ocorrerá com o método start(). 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 35 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 41 www.3way.com.br
  • 42. Java WEB Java WEB Métodos para trabalhar com Threads Sumário classe Thread dispõe de vários métodos. Abaixo segue uma descrição resumida de alguns destes: A - Thread(...) – construtor da classe. Permite que seja instanciado um objeto do tipo Thread; 1 JDBC 8 - void run() – Dados Relacional Deve conter o código que se deseja executar, quando a thread estiver ativa; 1.1 Banco de 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 stop() – encerra a thread; java.sql.DriverManager 8 1.3 Fábrica de Conexões - static void sleep(long tempo) – deixa thread corrente inativa por no mínimo tempo milisegundos 9 e 1.4 Criar Banco de Dados e Tabelaseste método é de classe e, conseqüentemente, uma thread não pode 10 promove outra thread. Note que 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 Statement maior; 1.8 PreparedStatement prioridade ou 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 resume()Access Object DAO – Data – Habilita novamente a execução da thread. Este método deve ser executado por outra 13 1.9.2 thread, já que a thread suspensa não está sendo executada (método deprecado); Pesquisando 14 1.9.3 - void interrupt() – envia Cursor de interrupção de execução de uma thread; Recurso avaçando: O o pedido 15 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 tão utilizado? thread estiver no estado executável ou bloqueado. Nos demais 2.1 Porque Java EE tem sido true caso uma 17 retorna false; Enterprise Edition? 2.2 O que é Java 18 2.3 A plataforma Java prioridade) – Define a prioridade de execução de uma thread. Os valores 18 - void setPriority(int Enterprise Edition de 2.3.1 prioridade estão entre 1 e 10; APIs 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() aplicações na WEB 3.2 Tipos de – Interrompe a thread corrente e coloca a mesma na fila de espera (do objeto compartilhado) 21 3.3 ArquiteturaaMVC para a Web e aguarda que mesma seja notificada. Este método somente pode ser chamado dentro de um método 21 de 3.4 Vantagens 22 sincronizado; da arquitetura MVC 4 Ambiente – desenvolvimento 23 - void notify() deNotifica 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 ser encontrada no JDK, no pacote Java.lang.ThreadGroup. 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e o uso Tomcat 25 Entendendo melhorparar ode threads 4.2.2.1 O que acontece com a threadserviço termina o método main? Porque o Garbage Collection não elimina a [Windows] Tomcat como quando 25 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 uma referência explícita desenvolvimentomas implicitamente a thread está cadastrada na JV e continuará 4.4 Criar contexto de para a thread, 26 cadastrada enquanto de diretórios 4.4.1 Estrutura não for encerrada. 26 4.4.2 Desta forma, mesmo aplicação web o último comando do main, o programa permanece sendo executado. Criar contexto de após executar 27 4.4.3encerrá-lo, todas contexto: web.xml Configurar as referências implícitas do programa devem ser eliminadas. Este mesmo princípio ocorre 27 Para 4.4.4 Ativar contexto 29 para os componentes 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. Aseus JSPs 4.7 Testar classe Escrita passou a ter uma variável de instância que identifca a thread que está sendo 31 executada. Logs 4.8 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 36 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 42 www.3way.com.br
  • 43. Java WEB Java WEB Sumário class Escrita implements Runnable { private int i; 1 JDBC 1.1 Banco de Dados Relacional private static int cont 1.2 JDBC – Java Database Connectivity= 0; 1.2.1 java.sql.DriverManager private int identificacao; 1.3 Fábrica de Conexões 1.4 Criar Bancovoid run() { public de Dados e Tabelas 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 classEE tem sido tão utilizado? 2.1 Porque Java VariasThreads { 2.2 O que é Java Enterprise Edition? public static void main(String[] args) { 2.3 A plataforma Java Enterprise Edition Runnable r1 = 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 thread Web depende do S.O.. Embora a linguagem 3.3 Arquitetura MVC para a nativa Java seja totalmente portável, certosMVC 3.4 Vantagens da arquitetura cuidados tem que ser tomados para que as 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”. Instalar Tomcat 4.2 4.2.1 O programa VariasThreads2.java refaz a classe Escrita para, após exibir a Qual versão de Tomcat utilizar 4.2.2 mensagem Iniciar e parar o Tomcat thread ficar inativa por pelo menos 500 na saída padrão, a 4.2.2.1 [Windows] Tomcat como serviço milisegundos. 4.2.2.2 O método sleep(long tempo) faz com que a thread adormeça por tempo Tomcat como processo 4.3 Testar Tomcat milisegundos e promove outras threads. 4.4 Criar contexto de desenvolvimento 4.4.1 Estrutura de diretórios class Escrita de aplicação web 4.4.2 Criar contexto implements Runnable { 4.4.3 Configurar contexto: web.xml private int i; 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 seusvoid run() { JSPs public 4.8 Logs 4.9 Variáveis de Ambiente SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 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
  • 44. Java WEB Java WEB while(true) Sumário System.out.println(“Número (” + identificacao + “): ” + i++); 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 1.4 Criar Banco de Dados catch(InterruptedException e) {} e Tabelas 10 1.5 Classes Javabeans – Entidades 10 } 1.6 Inserindo Dados 11 1.7 Fechando a Conexão { 12 public 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 } Exclusão 1.9.5 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 static void main(String[] args) { que é Java Enterprise Edition? 18 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 segunda abordagem de implementação de threads, o programa MultiThread.java cria três MVC para a Web 21 Para analisar a 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 4.1.2 class UmaThread extends Thread { Qual versão de JDK utilizar 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 identifacacao, int delay) { 25 public UmaThread(String 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 [Windows]super(identificacao); 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 contexto: web.xml 4.4.3 Configurar void run() { 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 38 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 44 www.3way.com.br
  • 45. Java WEB Java WEB catch(InterruptedException e) { Sumário System.out.println(“Thread: ” + identificacao + “ foi interrompida’); 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 void main(String[] args) { 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 1.9.1 DAO – DataUmaThread t1,t2,t3; Access Object 13 1.9.2 Pesquisando = new UmaThread(“Primeira”, (int)(Math.random()*8000)); 14 t1 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 2 Introdução t3 = new UmaThread(“Terceira”, (int)(Math.random()*8000)); 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 Histórico versão de JDK utilizar 4.1.2 Qual 24 4.1.2.1 No JAVA_HOME Internet era uma dúzia de páginas estáticas contendo sites de pesquisa de diversas 24 começo, a 4.2 Instalar Tomcatde gerar conteúdo dinâmico como os primeiros contadores, uma idéia bem simples hoje 25 academias. A necessidade 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 4.2.2.1 Através de linguagens como C, C++, Perl, ASP, PHP, Cobol, Delphi, Shell e etc, foi possível gerar conteúdo [Windows] Tomcat como serviço 25 que permite ao usuário acesso à diversas funcionalidades através de páginas HTML, como quando você deseja 4.2.2.2 Tomcat como processo 26 comprar produtos Tomcat loja virtual. em uma 4.3 Testar 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 aplicação web além de ser em Java e possuir todas vantagens e facilidades 27 para tal processo, de 4.4.2 Criar contexto orientação a objeto. contexto: web.xml 4.4.3 Configurar 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 programamTestar contexto servlets não precisam mais se preocupar com a funcionalidade do servidor, que já foi escrita para nós e 4.4.5 29 não precisaBibliotecas Servlet ser alterada. 4.5 29 Este cursoseus servlets pré-requisito o conhecimento de HTML: saber utilizar as tags principais para a tem como 4.6 Testar 30 construção Testar seus dinâmicas (html, body, form, input, textarea e select). de páginas JSPs 4.7 31 4.8 4.9 Logs Variáveis de Ambiente SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 31 32 39 1 45
  • 46. 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 8 Enterprise Edition.de Dados Relacional 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 5.2 O que é um Servlet? Servlets é uma API para 9 1.3 Fábrica de Conexões 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 13 entre clientes e servidores. 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 Contêiner gerencia as instâncias Testar Tomcat 26 O 4.4 Servlets e contexto de desenvolvimento Criar provê os serviços de 26 dos 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 4.4.3 requisições e respostas.web.xml requisições reencaminhada por eles. Tipicamente existe apenas uma Configurar contexto: 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 40 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 46 www.3way.com.br
  • 47. 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 5.3 – Contêiner atendendo múltiplas requisições com um Servlet (JDK) 24 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 deimplantação de sistemas para a Web. Antes de entrarmos em detalhes na construção 25 de 4.2.1 Qual versão a Tomcat utilizar Servlets, compararemos esta solução com outras duas soluções possíveis para implantação de aplicações 25 na 4.2.2 Iniciar e parar o Tomcat Internet. [Windows] Tomcat como serviço 4.2.2.1 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 aplicam às servlets que trabalham através do protocolo Http. de diretórios 26 javax.servlet. Eles se 4.4.2 Para cada métodode aplicação web Criar contexto HTTP há um método correspondente na classe HttpServlet, de modo geral eles tem a 27 4.4.3 assinatura: contexto: web.xml Configurar 27 seguinte 4.4.4 Ativar contexto 29 4.4.5 protected void doXXX(HttpServletRequest, HttpServletResponse) throws Testar contexto 29 4.5 Bibliotecas Servlet 29 ServletException, IOException; 4.6 Testar seus servlets 30 onde doXXX() depende JSPs 4.7 Testar seus do método HTTP, como mostrado na Tabela 5.1. 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 41 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 47 www.3way.com.br
  • 48. Java WEB Java WEB Sumário método HTTP método HttpServlet GET doGet() 1 JDBC 8 HEAD doHead() 1.1 Banco de Dados Relacional 8 POST doPost() 1.2 JDBC – Java Database Connectivity 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 5.1 Métodos HTTP e o método correspondente na servlet Statement 12 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 Java Enterprisequem invoca o método doXXX(). Veja a seqüencia do fluxo de controle 17 do 2 Introdução a curioso sobre 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é Java Enterprise Edition? service(ServletRequest, ServletResponse) de HttpServlet. conteiner chama o método 2.2 O que 18 - O plataforma Java Enterprise Edition 2.3 A método service(ServletRequest, ServletResponse) de HttpServlet invoca o método 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 2.3.3 - O método service(HttpServletRequest, HttpServletResponse) de HttpServlet Deployment de aplicações 21 analisa a requisição arquiteturas pela método HTTP que está sendo utilizado. 3 Análise de e procura Se você sobrepor o21 Dependendo do método HTTP, ele invocaLógica o método doXXX() correspondente da 3.1 Arquitetura Física e Arquitetura 21 método service() na servlet. PorTipos de aplicações na WEB usou o método POST ele chama o método exemplo, se a requisição 3.2 21 doPost() daArquitetura MVC para a Web servlet. sua classe Servlet, você 3.3 21 Se for sobreposto arquitetura service, em sua implementação você terá de o método MVC perderá as 3.4 Vantagens da 22 determinar Ambiente de desenvolvimento qual método HTTP será usando na requisição e fazer por si mesmo a 4 funcionalidades 23 invocação do método doXXX() apropriado. Por esta razão é recomendado somente 4.1 Tomcat 23 oferecidas pela classe sobrepor osInstalar Java JSE SDKdoGet(). método doPost() e (JDK) 4.1.1 24 HttpServlet, e o 24 4.1.2 Todos osversão de JDK doXXX() recebe dois parâmetros: os objetos Qual métodos utilizar 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 e parar o Tomcat interfaces, incluindo HttpServletRequest e API Servlet são 4.2.2 Iniciar 25 HttServletResponse. O contêiner servlet deve fornecer a implementação destas 4.2.2.1 [Windows] Tomcat como serviço 25 interfaces. Tomcat como processo você se referir a algo como um objeto Então, sempre que 4.2.2.2 26 HttpServletRequest isto significa um objeto de uma classe que implementa a 4.3 Testar Tomcat 26 interface HttpServletRequest.desenvolvimento não tem qualquer importância e é, 4.4 Criar contexto de O nome da classe 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 ciclo de vidacontextoServlet consiste dos seguintes passos: Testar de uma 29 O 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 lê um conjunto de arquivos de configuração, denominados deployment descriptors (descritores 4.7 Testar 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 42 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 48 www.3way.com.br
  • 49. 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 normalmenteDadosdeixará isto a cargo do compilador. Após isto o servlet estará carregado. você Relacional 1.1 Banco de 8 o 1.2 2. O contêinerJava Database Connectivity JDBC – invoca o método init(ServletConfig). Este método inicializa o servlet e deve ser chamado antes que 8 1.2.1 servlet possa responder a qualquer requisição. O objeto ServletConfig contém todos os parâmetros de inicialização java.sql.DriverManager 8 que Fábrica de Conexõesdescritor de distribuição. nos especificamos no 1.3 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 invocado somente uma 1.9.1 distribuição, exigindo Objecto contêiner inicialize o servlet no mesmo DAO – Data Access que 13 1.9.2 momento da sua própria inicialização. 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 própria thread. O contêiner chama o 17 sua 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 Física 3.1 Arquitetura vez. 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 43 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 49 www.3way.com.br
  • 50. Java WEB Java WEB 5.5 Estrutura de Aplicações Web e o Deployment Descriptor Sumário Uma aplicação Web é um conjunto de Servlets, JSPs, Classes Java, bibliotecas, imagens, páginas HTML e 1 JDBC 8 outros elementos, que podem ser empacotados juntos e que provê as funcionalidades da aplicação. 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 Web. Isso significa que as aplicações desenvolvidas por você podem 8 portanto, à utilização do um único contêiner 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 Websphere Banco de Dados e Tabelas 1.4 Criar e o Bea Weblogic). 10 De acordo com a especificação de Servlets, existem duas maneiras pelas quais uma aplicação web pode 10 ser 1.5 Classes Javabeans – Entidades instalada junto a um Dados Container: por meio de um arquivo WAR (Web Application Archive) ou por meio 11 de 1.6 Inserindo Servlet 1.7 Fechando a Conexão 12 uma estrutura 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 precisa para inicializar sua aplicação web. Ele não ner 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 22 |--WEB-INF arquitetura MVC 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 | |- JSE 4.1.1 Instalar Java com 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 4.2.1 Qual versão de Tomcat utilizar diretório contêm arquivos de bibliotecas de classes em 25 | 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 4.4.5 Cada umacontexto Testar das aplicações instaladas no web contêiner será carregada em um específico Servlet Context 29 (Contexto do Servlet). Servlet do 4.5 Bibliotecas Cada contexto dá à sua aplicação uma URL base, chamada de Context Path (Caminho 29 Contexto), e provêseus ambiente comum para todos os Servlets da aplicação. um servlets 4.6 Testar 30 O Servlet seus JSPsserve para o Servidor mapear e distribuir as requisições recebidas para as aplicações 4.7 Testar Context 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 44 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 50 www.3way.com.br
  • 51. 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 Banco de Dados Relacional que esteja dentro de webappsapp1html, terá a seguinte URL http://www.empresa.org/app1/html/hello.html. 8 1.2 JDBC 5.3 mostra o diretório WEB-INF, este diretório deve existir para toda aplicação web e é criado 8 A Figura – Java Database Connectivity 1.2.1 do diretório da aplicação (document root), porém, ele não faz parte do document root. Ou seja, arquivos java.sql.DriverManager 8 dentro 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 Tabelasacessíveis diretamente ao cliente. Ainda dentro do WEB-INF temos 10 colocados dentro do WEB-INF não estão 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é utilizado para informar ao contêiner como executar seus servlets, ele permite Statement 12 O deployment descriptor 1.9 Design Patterns 13 mapear uma URL pública, conhecida pelo seu cliente, para próprio nome interno do seu servlet. O ponto mais 1.9.1 DAO hora, é Accessque você pode modificar o comportamento de sua aplicação usando o web.xml, sem – Data saber Object 13 importante, por 1.9.2 Pesquisando código fonte. 14 qualquer alteração em seu 1.9.3 Exemplo de web.xml: O Cursor Recurso avaçando: 15 1.9.4 Alteração 16 1.9.5 Exclusão Você pode usar o 16 <?xml version="1.0" encoding="UTF-8"?> 2 17 <web-app Introdução a Java Enterprise Edition 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 18 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2.2 O que é Java Enterprise Edition? 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 Lógica parametro</description> erro, bibliotecas de 21 3.1 Arquitetura Física e Arquitetura <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> de desenvolvimento 4 Ambiente <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> 4.2.1 Qual versão <param-value>Boa Noite</param-value> de Tomcat utilizar 25 </init-param> 4.2.2 Iniciar e parar o Tomcat 25 </servlet> 4.2.2.1 <servlet-mapping> como serviço [Windows] Tomcat 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 45 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 51 www.3way.com.br
  • 52. 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 O elemento 8 <context-param> ->Relacional serve para que se possam definir parâmetros de inicialização do contexto 1.2 JDBC aplicação; esses parâmetros estarão disponíveis para todos os Servlets e páginas JSP da aplicação. – Java Database Connectivity 8 da 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 também optar por não utilizar nenhum desses elementos em seu XML. 9 desenvolvedor pode 1.4 Criar Banco de Dados e Tabelas 10 <welcome-file-list> -> Os elementos <welcome-file-list> e <error-page> contém, respectivamente, a lista 1.5 Classes Javabeans – Entidades utilizadas como index e as páginas a serem apresentadas em casos 10 ordenada de páginas a serem de 1.6 Inserindo Dados exceções não tratadas pela aplicação. Esses dois elementos são opcionais, sendo que 11 erros HTTP ou 1.7 Fechando aoConexão admite uma instância por DD. 12 somente primeiro 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 aplicações 2.3.3 Deployment elemento contém um nome de Servlet, conforme definido em servlet-name, e um <url21 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 de aplicações natodos as requisições com URLs iniciadas por exemplo anterior, WEB 3.2 21 /exemplo1.do serão mapeadas para Web O cliente envia uma 3.3 Arquitetura MVC para a o Servlet cujo nome é ServletSimples. 21 Outros mapeamentos podem MVCobtidos através de padrões de URL do tipo ser 3.4 Vantagens da arquitetura requisição para o 22 *.<extensão>, como por desenvolvimento *.pdf, de maneira que o acessos a todas 4 Ambiente de exemplo, *.wm ou 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 Java JSE SDK (JDK) diz respeito ao padrão /, que define o Servlet mapeamento interessante 4.1.1 24 default paraQual versão de JDK utilizar se encaixarem em nenhum outro padrão. todos os acessos que não uma resposta para o 4.1.2 24 4.1.2.1 JAVA_HOME cliente, nenhuma 24 4.2 Instalar Tomcat 25 informação é mantida 6 4.2.1 Request e Response Qual versão de Tomcat utilizar 25 no servidor. 25 4.2.2 Iniciar e parar o Tomcat 4.2.2.1 [Windows] 25 6.1 Introdução Tomcat como serviço 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 stateless (sem estado), que permite comunicação cliente-servidor. 4.5 Bibliotecas Servlet 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 servidor, que irá, por sua vez, devolver para o browser o conteúdo da página HTML requisitada. 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 46 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 53 www.3way.com.br
  • 53. Java WEB Java WEB A requisição enviada por um cliente deve conter, basicamente, um comando (também chamado de Sumário método), o endereço de um recurso no servidor (também chamado de path) e uma informação sobre a versão do protocolo HTTP que está sendo utilizado. 1 JDBC 8 Supondo, por exemplo, que utilize-se o método GET, o path /index.html e a versão 1.0 do protocolo HTTP (o 1.1 Banco de Dados Relacional que equivale a digitar um endereço http://<endereço de algum servidor>/index.html em um browser), temos 8 a 1.2 JDBC – enviada: 8 seguinte requisiçãoJava Database Connectivity 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 método, de Dados e Tabelas Criar Banco 10 GET /index.html HTTP/1.0 1.5 10 caminho eClasses Javabeans – Entidades versão, uma 1.6 Inserindo Dados 11 Existem diversos métodos HTTP que podem ser especificados em requisiçãoFechando a Conexão pode conter 1.7 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: obtém 2 Introdução a Java Enterprise Edition a lista dos métodos suportados pelo servidor 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 headers comuns são, por exemplo, o header User-Agent, que contém informações sobre o cliente que 2.3 A plataforma Java Enterprise Edition 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 aceitos pelo cliente para a requisição enviada. 2.3.2 Contêiners 19 2.3.3 Exemplo de requisição HTTP com headers: Deployment de aplicações 21 3 Análise de arquiteturas 21 GET /apostila/cap5/demo/qqcoisa HTTP/1.1 Você pode executar o 21 3.1 Arquitetura Física e Arquitetura Lógica Host: de aplicações na WEB 3.2 Tipos localhost:8080 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 (JDK) 4.1.1 Instalar Java JSE SDK de comandos HTTP. 24 Connection: keep-alive 4.1.2 Qual versão de JDK utilizar Não esqueça que o 24 rn 4.1.2.1 JAVA_HOME 24 protocolo HTTP espera 4.2 Instalar Tomcat 25 uma linha em branco 25 4.2.1 Uma vezversão de Tomcat utilizar o servidor, por sua vez, manda uma Qual processada a requisição, resposta para o e parar osendo que essa resposta também tem um formato 4.2.2 Iniciar cliente, 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 como resposta e uma mensagem associada a esse status; em de status da processo 4.2.2.2 26 foram enviados. 26 seguida sãoTestar Tomcat enviados também headers (com informações do servidor que gerou a 4.3 resposta, por exemplo); e finalmente, é enviado o conteúdo, propriamente dito, da 4.4 Criar contexto de desenvolvimento 26 resposta. Estrutura de diretórios 4.4.1 26 Exemplo de resposta HTTP com web headers: 4.4.2 Criar contexto de aplicação 27 4.4.3 Configurar contexto: web.xml 27 HTTP/1.1 200 OK 4.4.4 Ativar contexto 29 4.4.5 Server:contexto Testar Apache-Coyote/1.1 29 Content-Length: 64 4.5 Bibliotecas Servlet 29 Date: Mon, servlets 2008 18:55:27 GMT 28 Apr 4.6 Testar seus 30 rn 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 47 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 54 www.3way.com.br
  • 54. 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 enviada pelo cliente, os headers indicam o tipo, tamanho e data e hora de última modificação do conteúdo 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 8 servidor e oBanco de Dados Relacional houve erro no processamento da requisição enviada. código 500 que indica que 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager 8 1.3 9 6.2 HTTPFábrica de Conexões Get 1.4 Criar Banco de Dados e Tabelas 10 O método GET tem por Entidadesenviar uma requisição por um recurso. As informações necessárias para a 1.5 Classes Javabeans – objetivo 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 Fechandosão permitidos caracteres inválidos na formação de URLs, como espaços em branco e a Conexão 12 consequência, não 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 16 1.9.5 Exclusão Método HTTP : GET 2 Introdução a Java Enterprise Edition 17 método devem ter o URL String : Java /apostila/cap5/demo/qqcoisa?parametro=valor 2.1 Porque EE tem sido tão utilizado? 17 mesmo resultado que 2.2 O que é Java ( ? ) é denominada Enterprise Edition? 18 A parte após a parametro=valor de query string, ela consiste de vários Query String: teria uma requisição 2.3 nomes plataforma JavaeEnterprise Editionpelo ( & ), como em: A de parâmetros valor separados 18 pares 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, 3.1 Por especificação o método GET é Lógica Arquitetura Física e Arquitetura idempotente, ou seja, a invocação da 21 PUT e DELETE são os mesma URL repetidas vezes sempre terá o mesmo resultado. Os servidores Web 3.2 Tipos de aplicações na WEB 21 3.3 Arquiteturarequisição a Web MVC para GET pode ser repetida, sendo possível adicionar à podem assumir que a que possuem a 21 3.4 Vantagens da arquitetura MVC URL ao seu bookmark. Isto é 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. 23 4.1 Tomcat 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 JAVA_HOME GET para retornar arquivos HTML ou arquivos de imagem, porque 4.1.2.1 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 4.2.2.1 [Windows] Tomcat 6.3 HTTP Post 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 eles fazem 4.4.3 queConfigurar 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 48 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 55 www.3way.com.br
  • 55. Java WEB Java WEB Linha Inicial -> Sumário POST /apostila/cap5/demo/qqcoisa HTTP/1.1rn *-> User-Agent: Mozilla/5.0 ..rn 1 JDBC 8 | Accept: text/xml,application/xml,application/xhtml ...rn 1.1 Banco de Dados Relacional 8 | Accept-Language: pt-br,pt;q=0.8,en-us;q=0.5,en;q=0.3rn 1.2 JDBC – Java Database Connectivity gzip,deflatern 8 Header -----| Accept-Encoding: 1.2.1 java.sql.DriverManager 8 | Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7rn 1.3 Fábrica de ConexõesContent-Type: application/x-www-form-urlencodedrn 9 | 1.4 Criar Banco de Dados e Tabelas 10 *-> Content-Length: 15 1.5 Classes Javabeans – Entidades 10 1.6 11 Linha em Inserindo Dados Branco rn 1.7 Fechando a Conexão 12 Dados -> parametro=valor 1.8 A Interface HttpServletRequest PreparedStatement ou Statement 12 6.4 1.9 Design Patterns 13 1.9.1 O objeto–HttpServletRequest passado para o Servlet contém várias informações importantes relacionadas DAO Data Access Object 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 1.9.4 Veja no exemplo como você pode usar estes métodos. A Figura 6.1 mostra uma página HTML que permite 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 sua listagem: JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 <form action="/cap5/Listagem51" method="POST"> Qual 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 value="DF">BRASILIA</option> diretórios 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 <inputservlets type="submit" value="Busca Emprego"> 4.6 Testar seus 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 49 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 56 www.3way.com.br
  • 56. 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 especifica o servlet mapeado para o nome Listagem51 que irá manipular a requisição. Observe que o atributo 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 Listagem51 no Deployment Descriptor, é invocado. A Listagem 6.2 mostra o método doPost() 8 mapeado para nome Dados Relacional 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 java.util.Enumeration; 10 import Banco de Dados e Tabelas 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"); 2.1 Porque Java// tem sido tão utilizado? EE imprime na console 17 System.out.println(consultaString); 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java Enterprise Edition do parametro enviado na requisicao 18 // retorna valores 2.3.1 APIs 19 // atraves de HttpServletRequest 2.3.2 Contêiners String[] listaEstado = req.getParameterValues("estado"); 19 2.3.3 Deployment// aplicações na console de imprime 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> headers = req.getHeaderNames(); MVC para a Web 21 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// imprime na console (JDK) 24 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 } 4.2.1 Qual versão de Tomcat utilizar 25 } 4.2.2 Iniciar e parar o Tomcat 25 Listagem 4.2.2.1 [Windows] Tomcat como serviço 6.2 – Código do ExemploServletRequest 25 4.2.2.2 Tomcat como processo 26 4.3 Testar acima, 26 No código Tomcat nós sabemos o nome dos parâmetros (lstconsulta e estado) enviados com a requisição, 4.4 usamos ocontexto de desenvolvimentogetParameterValues() para recuperar os valores dos parâmetros. Criar método getParameter() e 26 então 4.4.1 não se sabe de diretórios parâmetros você pode usar o método getParameterNames() e recuperar o Estrutura os nomes dos 26 Quando 4.4.2 Criar contexto de submetidos na 27 nome de todos os parâmetrosaplicação web requisição. 4.4.3 Ainda no código acima, também utilizamos os métodos getHeader() e getHeaderNames(), para retornar27 Configurar contexto: web.xml os 4.4.4 29 nomes e os Ativar contexto 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 de ServletRequest.Servlet Bibliotecas Veja hierarquia de classes na Figura 6.2. 29 não 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 50 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 57 www.3way.com.br
  • 57. 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 – a impressão Object é de responsabilidade do contêiner web e é local ao servidor não sendo Data Access da saída 13 cabeçalhos HTTP, 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 Recurso avaçando: O Cursor 15 dentro do diretório de logs na pasta de instalação do servidor. 1.9.4 Alteração 16 1.9.5 Exclusão 6.5 A Interface HttpServletResponse O objeto HttpServletResponse16 é 2 Introdução a Java Enterprise Edition 17 um intermediário do servlet Ele Porque os dados que o servlet necessita enviar para o cliente e recebe Java EE tem sido tão utilizado? 2.1 17 os formata O que é de uma mensagem como especificado pelo protocolo dentro Java Enterprise Edition? para enviar informações de18 2.2 HTTP. volta ao cliente. 2.3 A plataforma Java Enterprise Edition 18 2.3.1 A interface ServletResponse fornece métodos relevantes para APIs 19 qualquer Contêiners protocolo, enquanto HttpServletResponse estende 2.3.2 19 ServletResponse e adicionaaplicaçõesespecíficos para o protocolo HTTP. 2.3.3 Deployment de métodos 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 6.3. Tipos de aplicações na WEB 3.2 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 para o método getWriter() a chamada desse método irá retornar uma referência a um objeto 26 Estrutura de diretórios da 4.4.2 Criar contexto que pode ser usada 27 classe java.io.PrintWriter, de aplicação web para enviar dados em formato de caracteres para um cliente. 4.4.3 Os métodos print() e println() dessa classe, por exemplo, podem ser utilizados para adicionar Strings 27 Configurar contexto: web.xml ao 4.4.4 29 stream de Ativar do Servlet; como a saída é mantida em um buffer por questões de performance, você pode saída contexto 4.4.5 Testar contexto 29 também utilizar o método flush() para forçar a liberação desse buffer de saída, fazendo que o conteúdo da resposta 4.5 Bibliotecas imediatamente enviado para o cliente. Servlet 29 definido por você seja 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.7 Testar seus JSPs 31 do servlet para gerar páginas HTML dinamicamente ou enviar qualquer outro recurso aceito pelo browser cliente. 4.8dados do stream não são enviados diretamente para o cliente, antes eles são armazenados em buffer de saída, Logs 31 Os 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 51 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 58 www.3way.com.br
  • 58. 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. 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 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//pegaAccess Object PrintWrite – Data um objeto 13 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 utilizado? 17 pw.println("<h3> O 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 (headers.hasMoreElements()) { 19 while 2.3.3 DeploymentString header = (String) headers.nextElement(); de aplicações 21 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 } 3.2 Tipos de aplicações na WEB 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 6.3 você pode observar o uso do método setContentType(“text/html”), a invocação deste Iniciar e parar o Tomcat 25 4.2.2.1 configura o header Content-Type do protocolo HTTP, este header serve para indicar o tipo do conteúdo [Windows] Tomcat como serviço 25 método 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 uma Criar contexto deassim por diante. Na maior parte de suas aplicações para web você irá usar formato imagem JPEG, e desenvolvimento 4.4 26 text/html, porém você não precisará invocar o método setContentType() todas as vezes. O web contêiner adiciona 4.4.1 Estrutura de diretórios 26 o cabeçalhoCriar contexto de aplicação web automaticamente. 4.4.2 27 4.4.3 Quando desejarmos enviar outro tipos de recursos em formato binário, como por exemplo arquivos 27 Configurar contexto: web.xml do 4.4.4 Ativar contexto 29 tipo Zip ou imagens JPEG, para o cliente você irá usar OutputStream a invés de PrintWriter. O objeto 4.4.5 Testar contexto o método getOutputStream() que retorna um objeto da classe 29 ServletResponse provê 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 um arquivo seusformato Jar. 4.7 Testar em JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 52 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 59 www.3way.com.br
  • 59. Java WEB Java WEB import java.io.File; import java.io.FileInputStream; Sumário 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 de bytes para guardar binário 15 //declara um array byte[] bar=new byte[(int) f.length()]; 1.9.4 Alteração 16 1.9.5 Exclusão 16 FileInputStream is = new 2 Introdução a Java Enterprise Edition FileInputStream(f); 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 Enterpriseresponse.getOutputStream(); 18 OutputStream os = Edition 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 2.3.3 Deployment deencaminhamento dos dados, esvaziando o buffer 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 Introdução 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 Servlets existem para servir clientes. A solicitação talvez seja simples, como nas listagens apresentadas até JAVA_HOME 24 4.2 mas podem ser complexas, fazendo armazenamento do estado da aplicação. A solicitação traz consigo dados Instalar Tomcat 25 agora, 4.2.1 e o Qual versão deservlet tem que saber como encontrá-los e utilizá-los. A resposta leva a informação que o Tomcat utilizar 25 cruciais código do seu 4.2.2 Iniciar e parar o Tomcat 25 browser precisa 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 não. Seu servlet pode decidir encaminhar a solicitação para outro servlet ou página Jsp. [Windows] Tomcat como serviço 25 enviá-los 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Endereçamento Relativo Criar contexto de desenvolvimento 26 7.2 4.4.1 Estrutura de diretórios 26 Um Criar contexto denome do caminho para o arquivo, obviamente, como classes/pacote/UmServlet.class servlet tem um aplicação web 4.4.2 27 (um caminho para um contexto: web.xmlreal). O desenvolvedor da classe do servlet escolhe o nome da classe (e o 4.4.3 Configurar arquivo de classe 27 nome do pacote que define parte da estrutura de diretórios), e o local no servidor define o nome completo 29 do 4.4.4 Ativar 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 4.5 Bibliotecas distribuição é simplesmente um nome interno secreto, que não precisa ser igual ao nome 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 Testar seus JSPs classe (classes/pacote/UmServlet.class), mas também pode ser algo completamente diferente, como 4.7 31 ListarServlet, se definido assim no arquivo web.xml usando <servlet-mapping>. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 53 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 60 www.3way.com.br
  • 60. 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 qual a requisição pertence, e então ele encontra um servlet apropriado para 8 contêiner identifica a aplicação web à 1.2 8 manipular aJDBC – Java Database Connectivity requisição. 1.2.1 Ambos os passos requerem que o contêiner quebre a URI em três partes: caminho contexto (context java.sql.DriverManager 8 1.3 Fábrica servlet (servlet path) e informação de caminho (path info). A Figura 7.1 mostra estes três 9 path), caminho dode Conexões 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 em partes: 17 Veja os componentes Enterprise Edition 2.1 Porque Java EE tem sido tão utilizado? comparar a requisição com o maior pedaço possível da URI, 17 Context Path – o servlet contêiner tenta 2.2 18 começandoO que é Java Enterprise Edition?web disponíveis. Este pedaço é chamado de context path. Por exemplo, como os nomes das aplicações 2.3 18 se a URI é A plataforma Java Enterprise Edition /banco/ContaServlet/pessoafisica, então /banco é o context path (assumindo que a aplicação banco 2.3.1 no servlet contêiner). Se não houver um nome de aplicação compatível o context path é vazio, neste caso 19 APIs exista 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 Path – após extrair o context path, o contêiner tenta comparar a maior parte possível da URI Deployment de aplicações 21 3 Análise de arquiteturas de servlet (<servlet-mapping> do web.xml) definido para a aplicação web, que 21 restante com algum mapeamento 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 /ContaServlet é o servlet path (assumindo que ContaServlet é o nome 21 /banco/ContaServlet/pessoafisica, então de 3.3 21 um servlet Arquitetura MVC para a Webnão for possível encontrar um padrão compatível é retornado uma página definido para aplicação). Se 3.4 22 de erro. Vantagens da arquitetura MVC 4 Ambiente de desenvolvimento da URI após a determinação do servlet path é chamado de path info. 23 Path Info – qualquer coisa que sobre 4.1 Tomcat 23 Por exemplo, 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 o versão de JDK utilizar7.4, em que enviamos um arquivo JAR para o browser. Nos referenciamos o Qual código da Listagem 24 4.1.2.1 JAVA_HOME 24 nome do arquivo JAR diretamente sem fazer qualquer referência ao diretório onde realmente se encontra o 4.2 Instalar Tomcat 25 arquivo, na linha: 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 File f = pararFile("/teste.jar"); Iniciar e new o Tomcat 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Mas onde realmente está este arquivo? Uma vez que o nome arquivo começa com a / então está sendo Tomcat como processo 26 4.3 Testar Tomcat usado seu caminho relativo. Ou seja, relativo ao context path (document root) da aplicação. Por exemplo, se 26 no 4.4 26 TomCat suaCriar contexto de desenvolvimento então o caminho real de /teste.jar é ../webapps/banco/teste.jar. aplicação está em ../webapps/banco 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 4.4.3Formulários contexto: web.xml Configurar 27 7.3 4.4.4 Ativar contexto 29 capaz de lidar 4.4.5 Ser Testar contexto com as informações contidas em formulários HTML é fundamental para qualquer 29 tecnologia de desenvolvimento de aplicações para Web. É por meio de formulários que os usuários fornecem 4.5 Bibliotecas Servlet 29 dados, preenchem pedidos de compra e (ainda mais importante) digitam o número do cartão de crédito. 30 As 4.6 Testar seus servlets informações digitadas no formulário chegam até o Servlet por meio de um objeto do tipo ServletRequest e são 4.7 Testar seus JSPs 31 recuperadas por meio do métodos getParameter(), getParameterNames() , getParameterValues() deste objeto. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 54 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 61 www.3way.com.br
  • 61. 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 JDBC 8 um valor. Isso quer dizer que um único parâmetro terá diversos valores, dependendo de quantos itens o usuário 1.1 8 selecionou. Banco de Dadosem que o usuário possa selecionar diversos itens é algo como: Um formulário Relacional 1.2 JDBC – Java Database Connectivity 8 1.2.1 action="recruta.do" method="POST"> java.sql.DriverManager 8 <form 1.3 Fábrica de 9 Tecnologia:Conexões <input Banco de Dados name="lstconsulta" value="java"> <br> 1.4 Criar type="text" 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 1.9.1 DAO<option value="PB">PARAÍBA</option> – Data Access Object 13 1.9.2 </select> <br> Pesquisando 14 <br> 1.9.3 Certificação: Recurso avaçando: O Cursor 15 1.9.4 <input type="checkbox" name="certificados" value="scjp5">JAVA 5.O Alteração 16 1.9.5 <input type="checkbox" name="certificados" value="scjp6">JAVA 6.O Exclusão 16 <input type="checkbox" name="certificados" value="scwcd5">SCWCD 1.4 2 Introdução a Java Enterprise Edition 17 <input type="checkbox" name="certificados" value="scejb3">EJB 3.O 2.1 Porque Java EE tem sido tão 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 você usará 21 No seu código,arquiteturaso método getParameterValues() que retorna um array: 3.1 Arquitetura Física e Arquitetura Lógica 21 String um aplicações na WEB 3.2 Tipos de = request.getParameter("lstconsulta"); 21 String[] varios para a Web 3.3 Arquitetura MVC = request.getParameterValues("certificacoes"); 21 3.4 Vantagens da arquitetura MVC 22 Se você quiserde desenvolvimento por exemplo para imprimir todos os valores: 4 Ambiente ver iterar todo o array, 23 4.1 Tomcat 23 4.1.1 String []Java JSE SDK (JDK) = request.getParameterValues("certificacoes"); Instalar certificados 24 for(int i=0; i < certificados.length; i++){ 4.1.2 Qualresponse.getWriter().print("<br> certificados: "+certificados[i]); 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 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.*; servlets 4.6 Testar seus 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 55 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 62 www.3way.com.br
  • 62. Java WEB Java WEB public class TrataFormularioServlet extends HttpServlet { Sumário 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 1.9.1 DAOout.println("<h3>Trata formulário</h3>"); – Data Access Object 13 1.9.2 Pesquisando nome = request.getParameter("nome"); 14 String 1.9.3 Recurso avaçando: O Cursor request.getParameter("sobrenome"); 15 String 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 = " + sobreNome + "<br>"); EE tem sido tão utilizado? 17 2.2 O que é Javaout.println("Hobbies: <br>"); Enterprise Edition? 18 2.3 A plataforma Java(String str : hobbies) 18 for Enterprise Edition 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 type='checkbox'name='hobbies' "); 23 out.println("<input 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'"); 4.1.2 Qualout.println("value='igreja'>Ir para Igreja</input>"); 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 type=submit value=Enviar>"); versão de Tomcat utilizar 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 4.4 Criar contexto de desenvolvimentocom um formulário simples . 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 Testar servidor recupere os valores definidos anteriormente. que o seus JSPs 4.7 31 Os Logs cookies fazem parte dos recursos que podemos adotar para 4.8 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 56 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 63 www.3way.com.br
  • 63. Java WEB Java WEB guardar dados de identificação de clientes utilizando protocolo HTTP, um vez que este protocolo é, como já Sumário dissemos, sem estado ou não orientado à conexão. A necessidade da identificação do cliente de onde partiu a requisição e o monitoramento de sua interação 1 JDBC 8 com o site (denominada de sessão) é usado tipicamente em sistemas web para: 1.1 - Controlar,de Dadoscarrinho de compras, a associação dos itens selecionados para compra com o usuário Banco em um Relacional 8 1.2 JDBCdeseja adquiri-los. Na maioria da vezes a seleção dos itens e compra é feita por meio da navegação – Java Database Connectivity 8 que 1.2.1 java.sql.DriverManager e a todo instante é necessário distinguir os usuários que estão realizando as 8 de várias páginas do site 1.3 Fábrica de Conexões 9 requisições. 1.4 - Acompanhar as interações do usuário com o site para observar seu comportamento e, a partir dessas Criar Banco de Dados e Tabelas 10 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 de aplicações 2.3.3 Deploymentcartão de credito diretamente nos cookies ; 21 - Bugs em JavaScript permitem sites hostis roubarem cookies 3 Análise de 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 cookiesWeb vital para sua aplicação não use. Evite 3.3 Arquitetura MVC para a não 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 A Classe javax.servlet.http.Cookie 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Manipulamos um cookie através de instâncias da classe javax.servlet.http.Cookie. Essa classe fornece Qual versão de JDK utilizar 24 apenas um construtor que recebe dois argumentos do tipo String, que representam o nome e o valor do cookie. 24 4.1.2.1 JAVA_HOME 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 getName() Tomcat como serviçoretorna o nome do cookie. [Windows] 25 String 4.2.2.2 getValue()como processo Tomcat 26 String 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 url) define o caminho de URL do qual o cookie pode ser 4.7 Testar seus JSPs 31 acessado. 4.8 Logs 31 4.9 Variáveis de Ambiente Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais www.3way.com.br Seja um Profissional Aprendendo com Profissionais www.3way.com.br 32 57 1 64
  • 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 1.2 JDBC – Java Database Connectivity 7.1 – Métodos da classe Cookie. 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica Cookies para 9 Para enviar de Conexões 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 Cookie("userID", "a1234"); 12 Cookie c = new 1.8 PreparedStatement ou Statement 12 1.9 Design idade máxima para tempo de vida cookie, informe ao navegador para armazenar cookies em 13 - Atribua aPatterns 1.9.1 disco ao invés de apenas na memória, use: DAO – Data Access Object 13 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 Editionresponse.addCookie(c); Se você esquecer este passo, o cookie não 17 - Insira o cookie na resposta http, use 2.1 Porque Java EEotem sido tão utilizado? 17 será enviado para 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 request.getCookies(). Isto retornará um array de objetos do tipo APIs 19 2.3.2 Contêiners 19 Para excluir um cookie no Cookie. 2.3.3 - Percorra o array, aplicações getName() para cada entrada até você Deployment de chamando 21 lado cliente crie um com o 3 Análise de arquiteturas Use o valor retornado com getValue() para 21 encontrar o cookie de seu interesse. mesmo nome, atribua a 3.1 21 usar o dadoArquitetura Física sua aplicação. Lógica armazenado em e Arquitetura idade com valor 0 e 21 3.2 Tipos de aplicações na WEB 3.3 Arquitetura MVC para "userID"; 21 String nomeCookie = a Web adicione do response para 3.4 Vantagens da arquitetura MVC 22 Cookie[] cookies = request.getCookies(); ser enviado. 4 Ambiente de desenvolvimento 23 if Tomcat (cookies != null) { 4.1 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 4.2.1 Qual versão if Tomcat utilizar de (nomeCookie.equals(cookie.getName())) { 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 para registrar a visita e o retorno de um visitante. 26 Na Listagem 7.3, você vê o uso de cookies 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação 27 import java.io.IOException; web 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 58 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 66 www.3way.com.br
  • 65. Java WEB Java WEB public class VisitanteQueRetorna extends HttpServlet { Sumário public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { JDBC 1 8 1.1 Banco de Dados Relacional true; 8 boolean ehNovo = 1.2 JDBC – Java Database Connectivity 8 Cookie[] cookies = request.getCookies(); 1.2.1 java.sql.DriverManager null) { 8 if (cookies != for (int i = 0; i < cookies.length; i++) { 1.3 Fábrica de Conexões 9 Cookie c 1.4 Criar Banco de Dados e Tabelas = cookies[i]; 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 } Statement ou 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 2 Introdução a Java Enterprise Edition a Bordo novo Navegante"; 17 } else { 2.1 Porque Java titulosido "Muito bom reve-lo Navegante"; EE tem = tão utilizado? 17 2.2 O que é Java Enterprise Edition? 18 } 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"<H1 ALIGN="CENTER">" + titulo + "</H1>n" 21 + 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é JAVA_HOME 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 24 reais utilizar um único servlet para tratar todas as possíveis tarefas não é nada prático. Comumente você irá dividir 4.2 Instalar Tomcat 25 suas regras Qual versão em Tomcat utilizar de negócio de múltiplas tarefas. Por exemplo, considere um processo simplificado de uma loja virtual 4.2.1 25 de livros e suas regras de negócio. Um usuário deveria poder: 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 - Selecionar livros para como serviço [Windows] Tomcat compra 25 4.2.2.2 - Remover ou adicionar mais livros Tomcat como processo 26 4.3 Testar Tomcat 26 - Visualizar livros num carrinho virtual 4.4 Criar contexto dos livros que deseja 26 - Fazer pagamentode desenvolvimento compar 4.4.1 - Informar endereço de entrega Estrutura de diretórios 26 4.4.2 Além destas atividades muitas outras regras de negócio necessitam ser tratadas; por exemplo, um usuário Criar contexto de aplicação web 27 4.4.3 Configurar compra se web.xml contexto: estiver cadastrado. 27 só poderá fechar uma 4.4.4 Você normalmente irá quebrar o processo de negócio em processos menores, tendo um servlet mais Ativar contexto 29 4.4.5 Testar contexto tarefa em foco. No processo descrito poderíamos ter um servlet CarrinhoServlet, que 29 específico para tratar cada 4.5 Bibliotecas Servlet livros já selecionado, que invoca um servlet FinalizaCompraServlet, após ação 29 mantém dados das opções de do 4.6 Testar seus servlets 30 usuário para encerrar compra; o servlet FinalizaCompraServlet, verifica se o usuário já está cadastrado em sua base 4.7 Testar seus JSPs 31 de dados de clientes, senão estiver ele invoca o servlet CadastroClientServlet, que ao encerrar cadastro encaminha 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 59 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 67 www.3way.com.br
  • 66. 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 que foram selecionados pelo uso de CarrinhoServlet. 8 conhecer os livros de Dados Relacional 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 11 servidor cria uma nova o uso de Servlets juntamente com JSP. No entanto, a transferência pode ser para 1.7 Fechando a Conexão transferir uma requisição de um Servlet para 12 requisição para a nova qualquer recurso. Assim, podemos 1.8 páginaPreparedStatement ou Statementmesma forma uma página JSP pode 12 uma JSP, HTML ou um Servlet. Da 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 é esqueça import's 18 import ...//NÃOJava Enterprise Edition? 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) && 3.1 Arquitetura Física e Arquitetura Lógica (userAgent.indexOf("MSIE") != -1)) { 21 //usa caminho 3.2 Tipos de aplicações na 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"); } 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.4 – Redirecionando com sendRedirect 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat utilizar 25 4.2.2 Você deveemanter em mente um conjunto de pontos importantes sobre o método sendRedirect(). Você Iniciar parar o Tomcat 25 4.2.2.1 invocar este método se uma reposta já tiver sido emitida – ou seja, se o cabeçalho de reposta já tiver sido [Windows] Tomcat como serviço 25 não pode 4.2.2.2 ao Tomcat como você fizer a chamada sobe esta condição o método irá disparar um exceção do tipo processo 26 enviado browser. Se 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 void doGet(HttpServletRequest request, Estrutura de diretórios 26 HttpServletResponse response) throws ServletException, IOException { 4.4.2 Criar contexto de aplicação web 27 PrintWriter pw 4.4.3 Configurar contexto: web.xml = response.getWriter(); 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 60 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 68 www.3way.com.br
  • 67. Java WEB Java WEB Neste código está forçando o envio imediato do header de resposta e aSumário de texto para o browser pela chamado do método pw.flush(). A geração 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 de Dados Relacional 8 palavras o servlet envia uma mensagem dizendo ao browser que deve buscar um getRequestDispatcher()8 1.2 JDBC – outro lugar; naConnectivity Java Database prática o servidor envia uma mensagem HTTP recurso em algum 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 Fábrica de Conexões caminho para o recurso,9 URL e o cliente 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 11 o 1.6 Inserindo Dados 7.5.2 Reencaminhamento Servlet Path. Não são12 1.7 Fechando a de sendRedirect(), no reencaminhamento, a requisição é DiferentementeConexão 1.8 PreparedStatement ou StatementURL mantendo todos os objetos 12 aceitos caminhos fora do encaminhada diretamente para a nova 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() O Cursor instância do objeto RequestDispatcher, de uma 1.9.3 Recurso avaçando: 15 passando Alteração argumento como os objetos HttpServletRequest e 1.9.4 16 HttpServletResponse para o recurso de destino. 1.9.5 Exclusão 16 2 Introdução RequestDispatcher é 17 Uma instânciaa Java Enterprise Edition obtida por meio do método 2.1 Porque Java EEde uma tão utilizado? tem sido instância javax.servlet.ServletContext ou 17 getRequestDispatcher() 2.2 O que é Java Enterprise é obtido, respectivamente, por meio do 18 javax.servlet.ServletRequest, que Edition? 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 response) throws ServletException, IOException { 21 HttpServletResponse 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 4.2.2.2 Tomcat como processo a resposta final. Essa método pode ser usado para encaminhar requisições a 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 4.4 Criar contexto de desenvolvimentométodo, também, só pode ser invocado se um resposta ainda não 26 ocorreEstruturado diretórios dentro de estiver commited; doutra forma uma exceção IllegalStateException será lançada.26 4.4.1 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 61 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 69 www.3way.com.br
  • 68. 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 compartilhados entre servlets armazenando objetos em locais bem definidos, que agem 1.4 Criar Banco de Dados e Tabelas 10 como contêiner. Assim um servlet pode colocar dados neste local e outro servlet pode recuperar estes dados. Um 1.5 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– ao escopo (visibilidade) dos dados armazenados. Dados armazenados com ServletRequest 13 só 1.9.1 DAO Data Access Object estão disponíveis durante o tempo de vida da requisição, enquanto dados armazenados com HttpServletSession 1.9.2 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 o tempo de vida da aplicação. 1.9.4 Alteração 16 1.9.5 Exclusão 16 7.6.1 Atributos da request Enterprise Edition 2 Introdução a Java 17 Veja exemplo nas listagens, há dois servlets um LoginServlet e outro AutenticaServlet. 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 <html> 2.3.1 <head><title>Redirecionando e compartilhando dados</title></head> APIs 19 <body> 2.3.2 Contêiners 19 <p>Entre com seu usuario e senha</p> 2.3.3 Deployment de 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> 3.3 Arquitetura MVC para a Web 21 </body> da arquitetura MVC 3.4 Vantagens 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 Qual LoginServlet extends javax.servlet.http.HttpServlet { 24 public class versão de JDK utilizar 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 } Testar Tomcat 4.3 26 4.4 Criar contexto de desenvolvimento 26 protected void doGet(HttpServletRequest request, 4.4.1 Estrutura deHttpServletResponse response) throws ServletException, IOException 26 diretórios { 4.4.2 Criar contexto de aplicação web 27 String usrId = request.getParameter("userid"); 4.4.3 Configurar contexto: web.xml 27 String passwd = request.getParameter("passwd"); ifcontexto != null && passwd != null (usrId 4.4.4 Ativar 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 62 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 70 www.3way.com.br
  • 69. Java WEB Java WEB Sumário } else { request.getRequestDispatcher("../login.html").forward(request, response); } JDBC 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> codnome = new Hashtable<String, String>(); DAO – Data Access Object 13 1.9.2 Pesquisando 14 public void init() Cursor ServletException { throws 1.9.3 Recurso avaçando: O 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 2.3.1 protected void doGet(HttpServletRequest request, 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 WEB 3.2 Tipos de aplicações na response) throws ServletException, IOException { 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 foi identificado como "+ 23 pw.print("<h1>Você 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 contextode desenvolvimento de Sessão 26 8 Gerenciamento 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 uma livraria virtual, por exemplo, como poderemos manter o histórico dos livros29 carrinho virtual de compras de 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 63 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 71 www.3way.com.br
  • 70. Java WEB Java WEB Possíveis maneiras de resolver esse problema, de maneira a contornar essa Sumário do protocolo HTTP, são: limitaçã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 Connectivity 1.2 JDBC – Java Database um identificador de sessão (jsessionid) em um 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 é 9 1.3 Fábrica a possíveis associadode Conexões contêiners HttpSession que tenham sido criados para criar o objeto 10 1.4 Criar Banco de Dados e Tabelas 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 essa estratégia é utilizada quando cookies não podem ser 14 Reescrita de URL – 1.9.3 Recurso contêiner adiciona 15 usados. O avaçando: O Cursor o identificador de sessão (jsessionid) no 1.9.4 Alteração URL. Assim o servidor pode associar o identificador de 16 fim de cada 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 Diferentemente de cookies esta estratégia não é tem sido tão utilizado? 17 jsessionid=123. 2.2 O que é Java Enterprise Edition? 18 transparente para o desenvolvedor; a interface HttpServletResponse 2.3 A plataforma Java Enterprise Edition o manuseio de URL reescritas: 18 fornece dois métodos que facilitam 2.3.1 APIs 19 encodeURL() e encodeRedirectURL(). 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 3 Obtendo uma sessão Análise de arquiteturas 21 8.2 3.1 Arquitetura Física e Arquitetura Lógica 21 Para controlar a sessãona WEB do 3.2 Tipos de aplicações é necessário obter um objeto HttpSession por meio do método getSession() 21 objeto HttpServletRequest. Para associar um objeto ou informação à sessão usa-se o método setAttribute() 21 do 3.3 Arquitetura MVC para a Web objeto HttpSession, passando para o MVC método uma chave (String) e um valor (Object). Note que o método aceita 3.4 Vantagens da arquitetura 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. ParaSDK (JDK) uma enumeração dos nomes associados à sessão usa-se o método 4.1.1 Instalar Java JSE se obter 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.*; de Tomcat utilizar 4.2.1 Qual versão 25 import java.util.*; 4.2.2 Iniciar e parar o Tomcat 25 import javax.servlet.*; 4.2.2.1 javax.servlet.http.*;serviço [Windows] Tomcat como 25 import 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 4.4.1 public void service(HttpServletRequest request, 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:out = response.getWriter(); web.xml 27 PrintWriter 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 64 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 72 www.3way.com.br
  • 71. Java WEB Java WEB Sumário //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 1 8 1.1 8 1.2 8 1.2.1 8 1.3 9 1.4 10 1.5 Classes Javabeans – Entidades && valordado != null) { 10 if (nomedado != null 1.6 Inserindo Dados 11 //armazena dado na sessão 1.7 Fechando a session.setAttribute(nomedado, valordado); Conexão 12 } 1.8 PreparedStatement ou Statement 12 out.println("<P>"); 1.9 Design Patterns 13 1.9.1 DAOout.println("Dados da sessão:" + "<br>"); – Data Access Object 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 + " = " + value + "<br>"); 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 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 Atributos daTomcat 4.2 Instalar sessão 25 4.2.1 Os atributos de de Tomcat utilizar mantidos em um objeto HttpSession. Qual versão uma sessão são 25 4.2.2 Iniciar e parar o Tomcat Pode-se armazenar valores em uma sessão por meio do método setAttribute() e A tag <session-timeout>25 4.2.2.1 [Windows]do método getAttribute(). Tomcat como serviço 25 recuperá-los por meio pode assumir um valor 4.2.2.2 Se um usuário não realizar nenhuma ação durante um certo período de Tomcat como processo 26 negativo, nesta caso, a 26 4.3 Testar Tomcat tempo o servidor irá assumir que o usuário está inativo e irá invalidar a sessão. O 4.4 Criar contexto de desenvolvimento sessão nunca expira. 26 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> contexto: web.xml Configurar 27 ...Ativar contexto 4.4.4 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 65 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 73 www.3way.com.br
  • 72. 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 – Javauma sessão Database Connectivity 8 8.4 Invalidando 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 Banco de Dados e Tabelas um período de tempo específico. Em alguns casos você poderá desejar encerrar uma sessão 1.4 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 Inserindo Dados completado, assim, ao enviar uma nova requisição o usuário terá uma nova sessão de pagamento ter 1.6 11 com um carrinho de compras sem nenhum item. HttpSession fornece o método invalidade() para este propósito, 1.7 Fechando a Conexão 12 veja seu uso na Listagem 8.2: ou Statement 1.8 PreparedStatement 12 1.9 Design Patterns 13 1.9.1 public – Data Access Object DAO class LogoutServlet extends HttpServlet { 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 2 Introdução a Java Enterprise Edition pagina principal do usuário 17 e encodeRedirectURL() } 2.1 Porque Java EE tem sido tão utilizado? 17 } primeiro verifica se algum 2.2 O que é Java Enterprise Edition? 18 Listagem 8.2 – Invalidando ID de sessão necessita ser 2.3 A plataforma Java Enterprise Editionuma Sessão 18 2.3.1 APIs anexado verificando19 se 2.3.2 Contêiners 19 houve o envio de um 8.5 Gerenciamento de Sessão sem cookies 2.3.3 Deployment de aplicações 21 header cookie na21 3 Análise de arquiteturas se o suporte a Cookies não estiver habilitado Dissemos anteriormente que requisição. 21 3.1 Arquitetura Física método de reescrita então devemos recorrer ao e Arquitetura Lógica de URL. Para tanto usamos os 3.2 Tipos de aplicações na WEB 21 métodos encodeURL() e encodeRedirectURL() para facilitar nosso trabalho. 3.3 Arquiteturailustrapara a Webmétodos podem ser usados. MVC como este 21 A Listagem 8.3 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 4.1.2 public versão de JDK utilizar Qual class ReescreveURLServlet extends HttpServlet { 24 public void doGet(HttpServletRequest req, HttpServletResponse res) 4.1.2.1 JAVA_HOME 24 throws ServletException, IOException { 4.2 Instalar Tomcat recupera a sessão 25 // 4.2.1 Qual versão HttpSession s = req.getSession(); de Tomcat utilizar 25 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>"); // anexa o web 4.4.2 Criar contexto de aplicaçãoID de sessão 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 66 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 74 www.3way.com.br
  • 73. Java WEB Java WEB 9 ServletContext e Filtros Sumário 9.1 ServletContext 1 JDBC 8 1.1 Banco imaginar a interface 8 Você podede Dados Relacional ServletContext como uma janela por 1.2 JDBC – Java Database Connectivity onde você vê o ambiente do servlet. Um servlet usa essa interface para obter Toda aplicação web tem 8 1.2.1 java.sql.DriverManager como: parâmetros de inicialização para a 8 informação sobre a aplicação, tais um e somente um 1.3 Fábrica do servlet contêiner. Ele pode ser usado pelos servlets para 9 aplicação ou versãode Conexões ServletContext, ele está 10 1.4 Criar Banco com os outros, assim compartilhar dados unsde Dados e Tabelas como fizemos com ServletRequest Classes Javabeans – eles está e1.5 HttpSession; a diferença entre Entidadesno escopo destes dados. acessível a todos os 10 1.6 Inserindo Dados 11 recursos ativos da 1.7 Fechando ainicialização Conexão 12 9.1.2 Parâmetros de 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 Ambienteuma aplicação web pode recuperar os parâmetros definidos acima, utilizando os métodos de desenvolvimento 23 O servlet de 4.1 Tomcat 23 getInitParameter() e getInitParameterNames() da interface ServletContext. 4.1.1 Os parâmetros de inicialização do contexto são usados para especificar informações para toda a aplicação, Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de banco de dados, e-mail do desenvolvedor, etc. Claro, antes usar estes métodos você JDK utilizar 24 tais como: conecção com 4.1.2.1 24 precisará deJAVA_HOME 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 void init() throws ServletException { Iniciar e parar o Tomcat 25 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 web 4.4.2 Criar contexto de aplicaçãocontexto= getServletContext(); 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 67 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 75 www.3way.com.br
  • 74. 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 uma dessas classes contém os mesmos quatro métodos para realizar esta operação de atribuição: 1 JDBC 8 getAttribute(String), getAttibuteNames(String), setAttribute(String,Object), removeAttribute(String). 1.1 Banco de Dados Relacional 8 Por JDBChá Java outro método da classe ServletContext que vale a pena conhecer: o método log() permite fim, – um Database Connectivity 1.2 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 Banco de Dados e Tabelas você pode também tentar usar as saídas-padrão (“System.out”, alguns Servidores de Aplicação 1.4 10 “System.err”) para Javabeans – Entidades de log, porém, é muito mais interessante que você use o método 1.5 Classes gerar suas mensagens 10 anterior, de Inserindoque o ServletContainer possa separar as suas mensagens em um log diferenciado. maneira Dados 1.6 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 9.2 FiltrosDesign Patterns 1.9 13 1.9.1 DAO – Data Access Object 13 9.2.1 Introdução 1.9.2 Pesquisando 14 1.9.3 Filtros são componentes Cursor interpõem entre uma requisição do cliente e um determinado recurso. Recurso avaçando: O que se 15 1.9.4 Alteração recuperar o recurso deve passar pelo filtro. Um recurso pode ser qualquer conteúdo estático 16 Qualquer tentativa de 1.9.5 16 ou dinâmicoExclusão JSP, GIF, etc.). (HTML, 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 requisição passa pelo filtro, esse filtro pode processar os dados contidos na requisição e tem sido tão utilizado? 17 processamento. Quando a 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 26 ponto final Criar contexto de recurso atravessa um encadeamento de filtros. Ou seja, existe uma série de filtros, (EndPoint) – um desenvolvimento 4.4.1 dos quais umade diretórios Estrutura requisição passa, antes de, finalmente, acessar um determinado recurso. 26 através 4.4.2 EsseCriar contexto de aplicação web é possível de ser implementado através do redirecionamento 27 tipo de funcionalidade também de 4.4.3 e requisições.contexto: web.xml de redirecionamento é bem menos elegante, porque exige que27 Configurar Entretanto, o uso Servlets 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 Testar seus servlets 30 filtros, sem que haja necessidade de alterações no código-fonte da aplicação. 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 68 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 77 www.3way.com.br
  • 75. 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 8 Conversão de imagem – redimensionamento de mapas entre outros. 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 a Conexão filtro 1.7 Fechando 12 Filtros, são gerenciados 1.8 PreparedStatement ou Statement a interface javax.servlet.Filter que 12 Uma classe Filtro deve implementar pelo contêiner. 13 1.9 Design métodos: define os seguintes Patterns 1.9.1 void init(FilterConfig config) throws ServletException – esse método é DAO – Data Access Object 13 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 web.xml – recebidos no parâmetro FilterConfig. 16 arquivo 2 Introdução Java Enterprise Edition 17 void destroy –aesse método é invocado pelo contêiner quando o filtro é 2.1 Porque Java EE tem sido tão utilizado? 17 descarregado da memória. Isso ocorre normalmente quando a 2.2 Oaplicação WEB é encerrada. O código de liberação de recursos que é Java Enterprise Edition? 18 2.3 A utilizados pelo filtro deve ser inserido aqui – o encerramento de uma conexão ao banco de dados, por plataforma Java Enterprise Edition 18 2.3.1 APIs 19 exemplo. 2.3.2 void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, Contêiners 19 2.3.3 Deployment de aplicaçõesmétodo contém toda a funcionalidade do filtro, ou seja, as regras que devem 21 ServletException – esse 3 Análise de arquiteturasque uma requisição possa continuar seu caminho até um recurso. Esse método é 21 ser verificadas, antes 3.1 Arquitetura pelo contêiner quando o servidor decide que o filtro deve interceptar uma determinada 21 chamado Física e Arquitetura Lógica 3.2 Tipos de aplicações na WEB usuário. Os parâmetros passados para esse método são instâncias das 21 requisição ou resposta ao 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 MVC estiver sendo usado por uma aplicação web (o caso mais comum), o 22 pacote javax.servlet. Se o filtro 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) informações específicas do protocolo HTTP. 24 permite a recuperação de 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 Assim como um servlet, o contêiner irá criar uma única instância da classe Filter e criar threads, para lidar JAVA_HOME 24 4.2 as requisições concorrentes de vários clientes. Isso significa que esse método deve ser programado no modo Instalar Tomcat 25 com 4.2.1 Qual versão dede classe implementando um filtro é apresentado abaixo. Esse filtro usa o recurso de Tomcat utilizar 25 thread-safe. Um exemplo 4.2.2 Iniciar na classe ServletContext, para registrar todas as requisições do usuário que passam pelo filtro.25 entrada disponível e parar o Tomcat 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 java.io.IOException; Tomcat como processo 26 import import java.util.logging.Filter; 4.3 Testar Tomcat 26 import java.util.logging.LogRecord; 4.4 Criar contexto de desenvolvimento 26 import javax.servlet.FilterChain; 4.4.1 Estrutura de diretórios 26 import javax.servlet.FilterConfig; 4.4.2 Criar contexto de aplicação web 27 import javax.servlet.ServletContext; 4.4.3 javax.servlet.ServletException; Configurar contexto: web.xml 27 import 4.4.4 Ativar contexto 29 import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; 4.4.5 Testar contexto 29 4.5 Bibliotecas Servlet 29 public class RegistroFilter implements Filter { 4.6 Testar seus servlets 30 4.7 Testar FilterConfig config; seus JSPs 31 private 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 69 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 78 www.3way.com.br
  • 76. 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 Recursoutilizando Cursor 15 // avaçando: O o recurso de logging disponível 1.9.4 Alteração classe ServletContext 16 // na context.log(log.toString()); 1.9.5 Exclusão 16 // chama o próximo filtro 2 Introdução a Java Enterprise Edition na cadeia de filtros 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 do Deployment Descriptor 4 Ambiente de 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.2padrões de versãoaos JDK utilizar Qual URLs de quais as cadeias de filtros serão aplicadas. Um exemplo de configuração de filtro24 e os é 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 4.4.3 Uma vez que a interpretação do arquivo web.xml sofre influência da ordem em que os elementos são Configurar contexto: web.xml 27 declarados, Ativar contexto a declaração dos filtros após os elementos <context-param> e antes de qualquer é recomendada 4.4.4 29 definição deTestar contexto esqueça de colocar os elementos <filter-mapping> após a definição dos filtros. servlets. Não se 4.4.5 29 Por Bibliotecas Servlet são aplicados a componentes web (outros servlets, JSP, etc.) acessados pela classe padrão, filtros não 4.5 29 RequestDispatcherseus servlets chamadas include ou forward. Esse comportamento, entretanto, pode ser 4.6 Testar através de 30 modificado, Testar seus JSPs ou mais elementos <dispatch> ao mapeamento do filtro. incluindo-se um 4.7 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 70 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 79 www.3way.com.br
  • 77. 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 umPatterns filtro deve ser aplicado apenas a requisições do cliente, apenas em includes, apenas em 1.9 Design 13 requisições,DAO – Data Access Object na combinação desses quatro valores. apenas em caso de erro ou 1.9.1 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 da especificação Servlet 2.3 define eventos que ocorrem Exclusão 16 2 Introdução uma aplicação, Edition a Java Enterprise fornecendo aos desenvolvedores de 17 durante a vida 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 que é WebApplication pode escrever ouvintes de evento, ou seja, 18 desenvolvedores de Java Enterprise Edition? 2.3 A plataforma Java Enterprise Edition 18 Listeners, para que eles possam agora ser notificado quando ocorrer algum 2.3.1 como a criação ou destruição, ou quando os atributos são modificados APIs 19 evento, 2.3.2 Contêiners 19 no ServletContext ou HttpSession. 2.3.3 Existem dois tipos de ouvintes de evento, e ambos os tipos se aplicam Deployment de aplicações 21 3 objetos Análise de arquiteturas 21 aos ServletContext e HttpSession. Os dois tipos são eventos de ciclo de 3.1 Arquitetura Física de eventos: 21 vida e mudanças de atributos e Arquitetura Lógica 3.2 Tipos de aplicações na WEB 21 3.3 de Vida Arquitetura MVC para a Web 21 Ciclo 3.4 Vantagens – arquitetura MVC 22 ServletContextda 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 23 HttpSession – acabou de ser criado, ou foi encerrado/expirou. 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 é que pode 4.2.2.1 Um [Windows] Tomcat como serviçohaver múltiplos Listeners para cada tipo de evento e o desenvolvedor 25 tem a flexibilidade como definir a ordem de eventos serão chamados. O container gerencia o ciclo de vida dos 4.2.2.2 Tomcat para 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 contexto de aplicaçãoéweb uma aplicação web iniciada, um objeto de contexto do servlet, ServletContext, é criado e 4.4.2 Criar 27 associado com a aplicação web. web.xml relacionamento um-para-um entre um objeto de contexto do servlet e 4.4.3 Configurar contexto: Existe um 27 da aplicação web.contexto recursos dentro da aplicação web, como Servlets e JSPs, pode recuperar todas 29 Todos os as 4.4.4 Ativar 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 servletsé destruído. Por exemplo, você pode decidir criar uma conexão com um banco 30 servlet de 4.6 Testar seus dados quando o contexto do servlet é criado e fechar a conexão quando o contexto do servlet for destruído. 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 71 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 80 www.3way.com.br
  • 78. 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 prestes a ser destruído. 8 Notificação que o contexto está 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 void contextDestroyed(ServletContextEvent event) { 14 public System.out.println("A aplicação parou!"); 1.9.3 Recurso avaçando: O 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 precisão ser registrados no deployment descriptor, web.xml, da aplicação. São definidos usando APIs 19 2.3.2 Contêiners 19 tags <listener> e serão executados na ordem que você especificar. A tag <listener> tem um elemento filho, 2.3.3 Deployment de aplicações implementa a interface. 21 <listener-class>, que define a classe que 3 Análise de arquiteturas 21 3.1 Arquitetura 21 <listener> Física e Arquitetura Lógica <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 4.4.5 void attributeReplaced (sarna ServletContextAttributeEvent) Testar contexto 29 Notificação de 4.5 Bibliotecas Servlet que um atributo foi substituído ou alterado. 29 4.6 Testar seus servlets 30 VejaTestar seus JSPs uma classe que implementa de forma simples, imprimindo mensagens no log 31 um exemplo de do 4.7 servidor, e precisa ser registrada no DD da aplicação da mesma forma mostrada anteriormente. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 72 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 81 www.3way.com.br
  • 79. 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õesattributeRemoved(ServletContextAttributeEvent scab) { 9 public void System.out.println("Um atributo foi removido."); 1.4 Criar Banco de Dados e Tabelas 10 } 1.5 Classes Javabeans – Entidades 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 também podem fazer as notificações quando um objeto HttpSession é criado, destruído, 14 Pesquisando ou 1.9.3 Recurso avaçando: O Cursor tem seus atributos modificados. É possível escrever um listener que controla todas as notificações de mudanças 15 do 1.9.4 Alteração 16 objeto HttpSession. Isso poderia ser feito com as notificações ServletContext, mas os exemplos anteriores 1.9.5 Exclusão 16 mantinha separado para mostrar cada método. 2 Introdução a Java Enterprise Edition 17 Para receber notificações do HttpSession é necessário escrever uma classe Java que implementa a interface 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 A plataforma Java Enterprise Edition 18 void sessionCreated (HttpSessionEvent SE) 2.3.1 APIsNotificação de que uma sessão foi criada. 19 2.3.2 Contêiners 19 2.3.3 void sessionDestroyed (HttpSessionEvent SE) Deployment de aplicações 21 3 Análise de arquiteturas uma sessão foi invalidada. 21 Notificação de que 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 utilizar 4.2.1 Qual versão de Tomcat um atributo foi removido. 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 void attributeReplacedcomo serviço [Windows] Tomcat (HttpSessionBindingEvent SE) 25 Notificação de que 4.2.2.2 Tomcat como processo um atributo foi substituído. 26 4.3 Testar Tomcat 26 VejaCriar exemplo abaixo que recebe todas as notificações de HttpSession, se foi criada ou destruída e 26 um contexto de desenvolvimento se 4.4 um atributoEstrutura de diretórios ou alterado. foi adicionado, removido 4.4.1 26 4.4.2 Criar contexto de aplicação web 27 4.4.3 public final class web.xml Configurar contexto: MySessionListener implements HttpSessionAttributesListener,27 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 73 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 82 www.3way.com.br
  • 80. Java WEB Java WEB Sumário public void attributeAdded(HttpSessionBindingEvent event) { System.out.println("Atributo adiciado."); } JDBC 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 com notificações sobre alterações 12 Listeners deve ser utilizados para lidar 1.9 Design Patterns 13 nos objetos ServletContext e HttpSession, permite mais controle embora os 1.9.1 DAO sido simples. Object – Data Access 13 exemplos tenha 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 IntroduçãoJava EE tem sido tão utilizado? 2.1 Porque 17 2.2 O que Java boa idéia, mas dá 18 Servlets éé uma Enterprise Edition? para imaginar montar uma página 2.3 A plataforma JavaMuitas vezes o desenvolvimento de um site é uma Enterprise Edition 18 complexa usando println()? 2.3.1 complexa que envolve vários profissionais. A tarefa de projeto do layout da APIs 19 tarefa 2.3.2 19 página fica Contêiners Web Designer, incluindo a diagramação dos textos e a cargo do 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 dos links para navegação pela mesma. Já o 21 informação apresentada no site e 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 um site.Tipos de aplicações na WEB 21 em 3.3 Arquitetura MVC dois a Web para profissionais é somado na criação de um único produto, mas durante21 O trabalho destes 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 Tomcat 23 esse ideal. Por exemplo, suponha que um Web Designer terminou o desenvolvimento de uma página e a entregou 4.1.1o Desenvolvedor Web SDK (JDK) em um Servlet. Se após a codificação o Web Designer desejar realizar uma Instalar Java JSE codificar 24 para 4.1.2 Qual versão de JDK utilizar ele altere o código do Servlet (do qual ele nada entende) ou entregar uma 24 alteração na página será necessário que 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 e foi devido a esse problema a Sun desenvolveu uma tecnologia baseada em Servlets 25 alternativas são indesejáveis 4.2.1 Qual versão de Tomcat utilizar 25 chamada de JSP. 4.2.2 A idéia deese usaroscripts de linguagens de programação em páginas HTML que são processados no lado Iniciar parar Tomcat 25 4.2.2.1 para gerar conteúdo dinâmico não é restrita à linguagem Java. Existem várias soluções desse tipo fornecida [Windows] Tomcat como serviço 25 servidor 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 Ciclo de vida do diretórios 4.4.1 Estrutura de JSP 26 Java Server Pages sãoaplicaçãoHTML que incluem código Java e outras tags especiais. Desta forma as partes páginas web 4.4.2 Criar contexto de 27 estáticas daConfigurar contexto: web.xml 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 27 4.4.4 29 gerada peloAtivar contexto 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 página JSP é carregada pelo container JSP o código Java é compilado gerando um 29 A primeira vez que uma 4.6 30 Servlet que Testar seus servlets uma página HTML que é enviada para o navegador. As chamadas subseqüentes é executado, gerando 4.7 enviadas diretamente ao Servlet gerado na primeira requisição, não ocorrendo mais às etapas de geração e Testar seus JSPs 31 são 4.8 Logs 31 compilação do Servlet. 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 74 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 83 www.3way.com.br
  • 81. 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.1- Etapas 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 (1) a requisição é enviada para um container Servlet/JSP. Na etapa (2) o container verifica que não APIs 19 2.3.2 Contêiners 19 existe nenhuma instância de Servlet correspondente à página JSP. Neste caso, a página JSP é traduzida para código 2.3.3 de uma classe Servlet que será usada na resposta à requisição. Na etapa (3) o código fonte do Servlet é Deployment de aplicações 21 fonte 3 Análise de arquiteturasuma instância da classe. Finalmente, na etapa (5) é invocado o método service() 21 compilado, e na etapa (4) é criada 3.1 21 da instânciaArquitetura Física eaArquiteturarequisição. Servlet para gerar resposta à Lógica 3.2 Tipos de aplicações na WEB 21 3.3 Estrutura de diretórios a Web Arquitetura MVC para 21 10.2 3.4 Vantagens da arquitetura MVC 22 Aplicações emde desenvolvimento uma linguagem de script a ser traduzida para um arquivo de código 4 Ambiente JSP são escritas com 23 fonte java. Tomcat O arquivo de código fonte contém a implementação de um Servlet que é compilado e registrado 4.1 23 automaticamente pelo web contêiner. 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Desta forma você não precisa configurar o CLASSPATH, não precisa compilar seu código JSP, utilizar pacotes Qual versão de JDK utilizar 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). Qual versão de Tomcat utilizar 4.2.1 25 Do Iniciar e parar o da publicação de um aplicativo em JSP, você pode colocar todos as suas páginas 25 ponto de vista Tomcat na 4.2.2 document root da aplicação. Por exemplo (para o servidor Tomcat): 4.2.2.1 [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 tudo é perfeito, você ainda precisará das regras anteriores sobre CLASSPATH, diretórios de instalação, Estrutura de diretórios 26 4.4.2 Criar são necessárias para classes 27 etc.; estas regras contexto de aplicação web Java utilizadas por uma página JSP. 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 10.3 Elementos 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 75 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 84 www.3way.com.br
  • 82. 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 Databasemétodos e variáveis Connectivity Declaração Declara e define <%! Declarações Java%> 8 1.2.1 java.sql.DriverManager 8 1.3 9 Scriptlet Fábrica de Conexões Permite ao desenvolvedor escrever código Java de forma livre na <% Código Java %> 1.4 Criarpágina JSPDados e Tabelas Banco de 10 1.5 Classes Javabeans – Entidades 10 1.6 ExpressãoInserindo Dados imprimir conteúdo de variáveis na saída HTML gerada <%= uma expressão%> 11 Usado para 1.7 Fechando a Conexão JSP 12 por uma página 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çãoplataforma Java Enterprise Edition de 2.3 A de super classes servlet entre outras. Diretiva include que permite que seja inserido o conteúdo 18 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 atributo1=valor1 atributo2=valor2 atributo3=valor3 ... %> de arquiteturas 21 <%@page 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 que seja especificado qual o pacote a ser importado. O atributo Tomcat como processo 26 depreciado na API Servlet 4.3 Testar Tomcat 26 import é o único que 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 = "true|false" Criar contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 O valor de true (default) indica o processamento normal do servlet Ativar contexto 29 4.4.5 múltiplas contexto Testar requisições podem ser acessadas simultaneamente na mesma 29 quando 4.5 Bibliotecas Servlet false indica que o servlet deve implementar 29 instância de servlet. O valor 4.6 Testar seus servlets 30 SingleThreadModel, como requisição para cada requisição sinalizada ou com 4.7 Testar seus JSPs uma em cada instância. 31 requisições simultâneas sendo 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 76 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 85 www.3way.com.br
  • 83. 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 Banco de Dados Relacional 8 sessão existente, caso não exista uma sessão, uma nova sessão deve ser criada para ligá-la. O valor false indica que 1.2 8 sessões nãoJDBC – Java usadas. Connectivity devem ser Database 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 11 Especifica o tamanho do buffer para o JspWriter out. O buffer padrão é definido pelo servidor. 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 de true (default) indica se o buffer deve ser esvaziado quando estive cheio. O valor false, indica que Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 uma exceção deve ser mostrada quando ocorrer overflows. 1.9.4 Alteração 16 1.9.5 16 errorPage Exclusão 2 Introdução a"url" Java Enterprise Edition 17 errorPage = 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que que a Enterprise Edition? Especifica é Java 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 = "true|false" Contêiners 19 2.3.3 Deployment de aplicações 21 3 Análise de arquiteturas atuar como uma página de erro para uma outra página JSP. O default é false. 21 Define se uma página pode 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Diretiva include Tipos de aplicações na WEB 21 10.3.2 3.3 Arquitetura MVC para a a inclusão estática de arquivos na hora em que a página JSP é traduzida 21 Web A diretiva include permite no 3.4 Vantagens da arquitetura não 22 servlet. A inclusão é estática porque MVChá processamento do arquivo incluído, somente ocorre a cópia do texto 4 Ambiente de desenvolvimento 23 do arquivo referenciado no local onde se encontra umas das definições: 4.1 Tomcat 23 4.1.1 <%@include file="relativeURL" %> ou <jsp:directive.include "relativeURL" %> Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 A Figura 10.1 demonstra o ciclo de processamento da diretiva include: 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.2 – Processamento da diretiva include – inclusão estática 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 77 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 87 www.3way.com.br
  • 84. 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 ou porta. A URL deve ser relativa o documento JSP corrente (não usa a / no início do caminho), ou hostname 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 1.2 JDBC – Java Database Connectivity 8 8 9 10 10 11 12 Listagem 10.1 – a.jsp 1.8 PreparedStatement ou Statement 12 Você deve declarar uma13 1.9 Design Patterns <pre> 1.9.1 DAO<%= System.currentTimeMillis() %> – Data Access Object variável ou um método 13 1.9.2 </pre> Pesquisando 14 antes de usá-la. 1.9.3 Recurso avaçando: O Listagem 10.2 – b.jsp Cursor 15 Toda declaração deve ser 1.9.4 Alteração 16 finalizada ou separada 16 1.9.5 Exclusão 10.3.3 Declarações a Java Enterprise Edition 2 Introdução por ponto-e-vírgula. 17 As declarações sãotem sidopara utilizado? 2.1 Porque Java EE usadas tão definir variáveis e métodos específicos 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 plataforma Java Enterprise criação de scriptlets na mesma página. 2.3 A por outros elementos de Edition 18 Pode assumir a seguinte sintaxe - <%! Declaração %>, veja Listagem 10.3: 2.3.1 APIs 19 2.3.2 Contêiners 19 <%! 2.3.3 Deployment de aplicações 21 Circle { 3 class Análise de arquiteturas 21 public Circle(double r){}; 3.1 }; Arquitetura Física e Arquitetura Lógica 21 3.2 Circle ca de aplicações na WEB Tipos = new Circle(2.0); 21 3.3 Arquitetura MVC para a Web 21 %> <%! int iVantagens da arquitetura MVC = 0; %> 3.4 22 <%! int a, b; double c; %> 4 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. 4.2.1 A expressão Javade Tomcat utilizar Qual versão é 25 4.2.2 Iniciar e parar o 25 avaliada da esquerdaTomcat 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 Tomcat depois página, no caso a linguagem é Java, mas sem ponto-e-vírgula. 4.3 Testar 26 4.4 inserida na página. de desenvolvimento 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 78 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 88 <%@ 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 Javabeans – Entidades <b> Até mais</b> 1.6 Inserindo Dados </body> </html> Fechando a Conexão 1.7 www.3way.com.br
  • 85. 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 Banco de Dados Relacional 8 ponto e vírgula e define somente uma expressão da Linguagem. 1.2 JDBC – Java Database Connectivity 8 1.2.1 Scriptlets java.sql.DriverManager 8 10.3.5 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 page language="java" ou Statement PreparedStatement contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 12 <%@ 1.9 Design Patterns 13 <html> 1.9.1 <body> – Data Access Object DAO 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"; } else if (numberOption == 2) { 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem option utilizado? sido tão = "Venda"; 17 }Enterprise Edition? else { 2.2 O que é Java 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 de aplicações 2.3.3 Deploymentface="verdana, arial" size=5> as expressões através do 21 Opção Escolhida: 3 Análise de arquiteturas <%=option%> 21 </font> uso de ponto-e-vírgula. 21 3.1 Arquitetura Física e Arquitetura Lógica 3.2 Tipos 21 </body> de aplicações na WEB 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 4.2.2.1 Ações permitem que você execute tarefas sofisticadas como instanciação de objetos, comunicação com [Windows] Tomcat como serviço 25 recursos doTomcat como processo Servlets e JSP, sem que para isto seja necessária codificação Java. Entretanto o lado do servidor como 4.2.2.2 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 construídas com a sintaxedesenvolvimento 4.4 Criar contexto de XML. 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 ou 4.4.3 A tag <jsp:include> pode ser utilizada para redirecionar o pedido para qualquer recurso estático 27 Configurar contexto: web.xml dinâmico a Ativar contexto página JSP principal. Os recursos podem ser desde um servlet, um arquivo HTML e partir de uma 4.4.4 29 também outra JSP.contexto 4.4.5 Testar 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 79 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 89 www.3way.com.br
  • 86. 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 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 1.2.1 java.sql.DriverManager <p>A hora corrente retornada por outro JSP: 1.3 Fábrica de Conexõesfile="b.jsp"%> <%@ 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 13 </html> Design Patterns 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 21 do 3.1 Arquitetura Física e Arquitetura Lógica mesmo contexto de aplicações na WEB disparou a ação se encontra. A página que realiza o desvio tem seu o qual a página que 3.2 Tipos 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 = Runtime.getRuntime().freeMemory(); 24 double freeMem 4.1.2.1 JAVA_HOME 24 double totlMem = Runtime.getRuntime().totalMemory(); 4.2 Instalar Tomcat percent = freeMem/totlMem; 25 double if de Tomcat < 0.5) 4.2.1 Qual versão (percent utilizar { 25 %>e parar o Tomcat 4.2.2 Iniciar 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"/> <% } %> 4.4 Criar contexto de desenvolvimento 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 80 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 90 www.3way.com.br
  • 87. Java WEB Java WEB Aqueles familiarizados com HTML percebem que é a mesma sintaxe de comentário para essa linguagem de Sumário marcação. Tais comentários não produzem qualquer output visível, mas podem ser visualizados pelo usuário final 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 Banco de JSP originais. O 8 nos arquivos fontes Dados Relacional 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 11 1.6 Inserindo Dados 1.7 Fechando Conexão _jspService() do servlet 12 Esse segundo acomentário é introduzido dentro da página através de 1.8 scriptlets, usando a sintaxe ou Statement nativa da linguagem de criação PreparedStatement de comentário um gerado a partir da página 12 1.9 Design Java. 13 de scripts, no caso Patterns JSP. 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: 15 10.4 Objetos implícitos O Cursor 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 ou interface e segue uma API correspondente. Abaixo 2 Introdução a Java Enterprise Edition 17 segue um resumo dos objetos sido tão utilizado? 2.1 Porque Java EE tem implícitos disponíveis em JSP, suas respectivas 17 classes/interfaces é Java Enterprise Edition? do objeto. e uma pequena descrição 2.2 O que 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 Contêiners Classe ou Interface Descrição 2.3.2 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 request Arquitetura Física e Arquitetura Lógica 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. 22 3.4 Vantagens da arquitetura MVC 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 javax.servlet.jsp.PageContext 24 pageContext versão de JDK utilizar 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 10.2 - Descrição resumida dos objetos implícitos. 25 Tabela 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 <%= this.geServletInfo() %> <------- OK 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 81 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 91 www.3way.com.br
  • 88. 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 JDBC 8 por sua vez 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 –expressão nós usamos a referencia this que é uma instância da servlet gerada. Java Database Connectivity 8 A terceira 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 Inserindo Dados 11 com parâmetros 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 13 <web-app Design Patterns ....> 1.9.1 <display-name>cap9</display-name> DAO – Data Access Object 13 1.9.2 Pesquisando 14 <servlet> avaçando: O Cursor 1.9.3 Recurso 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 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 21 3.3 Arquitetura 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> Java JSE SDK (JDK) Instalar 24 </html> Qual versão de JDK utilizar 4.1.2 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> contexto Ativar 29 4.4.5 Testar contexto 29 Seu IP :<%=request.getRemoteAddr()%><br> Seu Host :<%=request.getRemoteHost()%><br> 4.5 Bibliotecas Servlet 29 <% seus servlets 4.6 Testar 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 82 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 92 www.3way.com.br
  • 89. Java WEB Java WEB Sumário if (request.getProtocol().equals("HTTP/1.1")) { response.setHeader("Cache-Control", "no-cache"); } %> 1 JDBC 8 </body> 1.1 Banco de Dados Relacional 8 </html> JDBC – Java Database Connectivity 1.2 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 EsteInserindoimplícito representa o fluxo de saída para a página, cujo conteúdo será enviado para11 objeto Dados o 1.6 navegador com o corpoConexãoresposta. O objeto out é uma instância da classe javax.servlet.jsp.JspWriter. Esse 1.7 Fechando a de sua 12 objeto implementa todos os métodos print() e println() definidos por java.io.Writer. 1.8 PreparedStatement ou Statement 12 Por Design Patterns exemplo, o objeto out pode ser usado dentro de um script para adicionar conteúdo à página gerada. 1.9 13 Veja o listagem 10.12 abaixo. Object 1.9.1 DAO – Data Access 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== 0) { 16 (i % 2 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 objeto é muito utilizado para gerar conteúdo dentro do corpo de um script, sem ter que fechá-lo Deployment de aplicações 21 3 Análiseparaarquiteturas de inserir conteúdo de página estático. Contudo, deve-se evitar usar os métodos print() 21 temporariamente ou 3.1 Arquitetura Física de caracteres muito 21 println() para inserir cadeias e Arquitetura Lógica grandes, é aconselhável fechar o script e inserir o conteúdo 3.2 21 estático. Tipos de aplicações na WEB 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 10.4.6 session 4 Ambiente de desenvolvimento atual de um usuário individual. Todas as 23 Este objeto representa a sessão 4.1 23 solicitações Tomcat um usuário são consideradas parte de uma sessão. Desde que feitas por Um dos principais 24 4.1.1 Instalar Java JSE SDK (JDK) novas solicitações por aqueles usuários continuem a ser recebidas pelo servidor, a 4.1.2 Qual versão de JDK um certo período de tempo passar sem que qualquer usos para o objeto 24 sessão persiste. Se, no entanto,utilizar 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 objetoversão de Tomcat utilizar de javax.servlet.http.HttpSession, funciona Qual session é uma instância de atributos, a fim de 4.2.2 Iniciar e que o Tomcat 25 da mesma maneira pararvimos 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óriosaplicação à qual a página JSP pertence. Ele é uma objeto representa a 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 Configurar contexto: web.xml 27 tratam do primeiro nome de diretório em uma URL como o nome de uma aplicação. 4.4.4 Ativar contexto 29 4.4.5 Testar contexto 29 10.4.8 pageContext 4.5 Bibliotecas Servlet fornece várias facilidades como gerenciamento de 29 O objeto pageContext 4.6 Testar páginas de 30 sessões, atributos,seus servlets erro, inclusões e encaminhamento de requisições de 4.7 31 fluxo de Testar seus JSPs objeto pageContext é uma instância da classe resposta. O 4.8 Logs 31 javax.servlet.jsp.PageContext. 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 83 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 93 www.3way.com.br
  • 90. 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 8 disponível apenas nas páginas que tenham sido designadas como páginas de erro, usando o atributo isErrorPage 1.1 8 configuradoBanco de Dados Relacional como 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 da classe java.lang.Throwable correspondente à exceção não tratada 10 O objeto exception é uma instância 1.5 Classes Javabeans o controle 10 ou repassada que fez com que– Entidadesfosse 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> – Data Access Object DAO 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(); %> Exclusão 1.9.5 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 dessas classes em páginas JSP, é necessário que se siga algumas regras básicas no seu desenvolvimento: Análise de arquiteturas 21 uso 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 1. O construtoraplicações se declarado, não deve receber nenhum argumento. Tipos de da classe, na WEB 21 3.3 2. Podem existir um oupara a métodos públicos para a definição de valores de propriedades do Bean; esses Arquitetura MVC mais Web 21 3.4 Vantagens da arquitetura MVC 22 métodos são chamados de métodos setter. 4 3. Podem existirde desenvolvimento públicos para a obtenção de valores de propriedades do Bean; esses Ambiente um ou mais métodos 23 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 24 4.1.2.1 JAVA_HOME 4.2 Instalar Tomcat 25 uso de JavaBeans em 4.2.1 packageversão de Tomcat utilizar Qual apostila.cap9; 25 nossas páginas JSP, é 4.2.2 Iniciar e parar o Tomcat 25 que eles encapsulem 4.2.2.1 public class Alguem { serviço [Windows] Tomcat como 25 private String a lógica de nossa 26 4.2.2.2 Tomcat como processo nome; 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.27 4.4.2 Criar contexto de aplicação web // construtor padrão public Alguem() { 4.4.3 Configurar contexto: web.xml 27 } contexto 4.4.4 Ativar 29 4.4.5 Testar contexto 29 // getter métodos 4.5 Bibliotecas Servlet 29 public String getNome() { 4.6 Testar seus servlets nome; 30 return } 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 84 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 94 www.3way.com.br
  • 91. Java WEB Java WEB Sumário public byte getIdade() { return idade; } 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 e Tabelas 1.4 Criar Banco de Dados brasileiro; 10 } 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados métodos 11 // setter 1.7 Fechando a ConexãosetNome(String nome) { 12 public void this.nome = nome; 1.8 PreparedStatement ou Statement 12 } Patterns 1.9 Design 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 avaçando: O Cursor 15 } 1.9.4 Alteração 16 public void setHobies(String[] hobies) { 1.9.5 Exclusão 16 2 Introdução athis.hobies = hobies; Java 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 Enterprise Edition brasileiro; 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 JSE SDK (JDK) Instalar Java id="varBean" class="package.beanClasse" scope="page"> 24 4.1.2 Qual//algum html ou JSP aqui versão de JDK utilizar 24 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 id="varBean" class="package.beanClasse" [Windows] Tomcat como serviço 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 contextoum aplicação web escopo já vistos anteriormente: page, scope possui de dos valores de determinar o tempo 27 4.4.2 request, session ou application. web.xml 4.4.3 Configurar contexto: E por último o atributo class que define o nome da de vida de um 27 4.4.4 Ativar contexto 29 classe a qual o bean será instanciado. componente 4.4.5 Sope Testar contexto tempo o objeto irá existir como variável de programa. 29 determina quanto JavaBean em uma 29 4.5 que um bean possa ser instanciado não poderá existir objetos anteriores com Bibliotecas Servlet Para 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 31 objeto esta Testar seus JSPs será usada. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 85 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 95 www.3way.com.br
  • 92. Java WEB Java WEB 10.5.2 <jsp:setProperty> Sumário tag <jsp:setProperty> é utilizada para configurar valores das propriedades dos componentes JavaBeans A 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 name=”nomeBean” Tabelas 1.4 Criar Banco de Dados e 10 setada com o valor que será passado como property=”nomePropriedade” /> Entidades 1.5 Classes Javabeans – 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 18 configurada com o valor do parâmetro do pedido <jsp:setProperty name=”nomeBean” Edition? 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 <jsp:getProperty> Tomcat utilizar 4.2.1 Qual versão de 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, converte o valor recuperado em uma cadeia de caracteres (String) e insere no conteúdo de saída. Os dois 4.2.2.1 [Windows] Tomcat como serviço 25 atributos necessários para esta tag são o nome do Bean (propriedade name) já referenciado anteriormente na tag 4.2.2.2 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 contexto de desenvolvimento Bean. método getXXX() correspondente no 4.4 26 4.4.1 Estrutura de diretórios 26 <jsp:getPropertyaplicação web name=”nomeBean” property=”nomePropriedade” /> 4.4.2 Criar contexto de 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 10.5.4 Usando JavaBeans com Ações JSP 4.4.5 Veja um exemplo de como utilizar o que foi dito até aqui sobre manipulação de JavaBeans com JSP. A Testar contexto 29 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 31 campos do JavaBean. Reveja a Listagem 10.14, observe os nomes dos atributos e os métodos setter e getter. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 86 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 96 www.3way.com.br
  • 93. Siga-nos também no Twitter! twitter.com/3waynet
  • 94. Java WEB Java WEB <html> <body> Sumário Favor preencha com seus dados:<br> <form 1 JDBC action="trataFormAlguem.jsp"> Nome: <input type="text" name="nome"><br> 1.1 BancoIdade: <input type="text" name="idade"><br> de Dados Relacional 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="checkbox" name="hobbies" value="garrafao">Garrafão<br> 1.4 Criar Banco de Dados e Tabelas É Brasuca:<input type="radio" name="brasileiro" value="true"><br> 1.5 Classes Javabeans – Entidades <input type="submit"><br> 1.6 Inserindo Dados </form> 1.7 Fechando a Conexão </body> </html> PreparedStatement ou Statement 1.8 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 id="umCara" class="apostila.cap9.Alguem" scope="session" /> 19 <jsp:useBean 2.3.2 Contêiners 19 <%-- configura 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 name="umCara" property="idade" /><br> 22 idade: arquitetura MVC É 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 JDK utilizar de (hb != null) 24 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> e parar o Tomcat 4.2.2 Iniciar 25 </html> 4.2.2.1 [Windows] Tomcat como serviço 25 Listagem 4.2.2.2 Tomcat como processo10.16 – trataFormAlguem.jsp, configura e imprime dados do bean Alguém 26 4.3 Testar Tomcat 26 10.6 Componentes Web Reutilizáveis 4.4 Criar contexto de desenvolvimento 26 4.4.1 No Estrutura dere-usar componentes web significa essencialmente que você vai incluir o conteúdo ou o diretórios 26 mundo JSP 4.4.2 Criar contexto de de outro componente web na página JSP. Isto pode ser feito de duas maneiras: 27 resultado do processamentoaplicação web 4.4.3 Configurar contexto: web.xml 27 estática ou dinâmica. Inclusão estática envolve incluir o conteúdo do componente web no arquivo JSP no momento 4.4.4 Ativar JSP está 29 em que o arquivo contextosendo traduzido, enquanto na inclusão dinâmica a saída gerada por outro componente é 4.4.5 Testar contexto 29 incluída juntamente 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 31 UmTestar seus JSPs fragmento de página é a parte de uma página, como o cabeçalho, o rodapé ou a barra de navegação, 4.8 Logs 31 que pode ser reutilizada em outras páginas. Por exemplo, você pode colocar um elemento comum, como um 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 87 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 98 www.3way.com.br
  • 95. 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 aplicativo. Você pode também incluir o nome da sua companhia e informações sobre direitos autorais em um 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 também evita Java Database Connectivity JDBC – o processamento dos fragmentos). 8 mas 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 – que o código da página JSP incluída torna-se uma parte da página JSP que inclui, 10 fragmento de código. Uma vez Entidades 1.6 11 cada páginaInserindo pode acessar as variáveis e métodos definidos na outra página. Elas também compartilham incluída Dados 1.7 os objetos implícitos, como mostra a Listagem 10.17. Fechando a Conexão 12 todos 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 <html> 1.9.1 <body> – Data Access Object DAO 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 utilizado? 2.1 Porque Java EE tem sido tão foram encontrados pelo criterio de comparação:<br> 17 <!-- é Java Enterprise Edition? 2.2 O que 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 <!-3 Análise de arquiteturas 21 FORMULARIO Arquitetura Lógica para outra consulta 3.1 Arquitetura Física e 21 --> 3.2 Tipos de aplicações na WEB 21 <form>...</form> 3.3 Arquitetura MVC para a Web 21 </body> 3.4 22 </html> Vantagens da arquitetura MVC 4 Ambiente de desenvolvimento Listagem 10.17 – buscaProduto.jsp 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Na Listagem 10.17,JDKarquivo buscaProduto.jsp processa a busca pelo critério informado pelo usuários e Qual versão de o utilizar 24 retorna os produtos da base de dados. Ele inclui o arquivo descricaoProduto.jspf para gerar a descrição. O código 4.1.2.1 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 implicita request usada aqui como serviço 25 // A variavel 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 de aplicação web 27 produtoId = sort(produtoId, ordenaPor); 4.4.3 Configurar i=0; i<produtoId.length; i++) 27 for(int contexto: web.xml { 4.4.4 Ativar contexto 29 // Gera uma descrição tabulada para os produtos 4.4.5 Testar contexto 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 88 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 99 www.3way.com.br
  • 96. 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 atributo file não pode ser uma expressão. O seguinte uso de valor do simplesmente uma 8 1.1 Banco invalido: 8 include é de Dados Relacional diretiva include 1.2 JDBC – Java Database Connectivity 8 diferente. A vantagem 8 1.2.1 java.sql.DriverManager <% String umaURL ="copyright.html"; %> <%@ Conexões 1.3 Fábrica deinclude file="<%= umaURL %>" %> da jsp:include é que ela 9 1.4 Criar Banco de Dados e Tabelas sempre irá verificar por 10 - Como parâmetros deEntidades são propriedades da requisição e não 1.5 Classes Javabeans – requisição 10 mudanças no arquivo 11 têm qualquer significado em tempo de tradução, o atributo file não pode 1.6 Inserindo Dados 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 - ARecurso avaçando: O Cursor ser compilada independentemente. Se página incluída pode ou não 1.9.3 15 1.9.4 observar a Listagem 10.18, o arquivo buscaDescricao.jsp não pode ser 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 Enterprise Edition e usar uma variável implícita 2 Introdução estas dependências 17 pageContext para compartilhar objetos entre as páginas incluídas 2.1 Porque Java EE tem sido tão utilizado? 17 estaticamente pelo uso Edition? dos métodos pageContext.setAttribuet() e 2.2 O que é Java Enterprise 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 incluaLogs recurso estático ou um recurso dinâmico em um arquivo JSP. Os resultados entre a inclusão 31 você um de 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 89 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 100 www.3way.com.br
  • 97. 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 invocação do arquivo JSP. Se o recurso é dinâmico a requisição é enviada para o recurso incluído, a página incluída é executada e então o resultado é incluído na resposta da página JSP includente. A Figura 10.2 demonstra o 1 JDBC 8 funcionamento da ação padrão jsp:include. 1.1 Banco de Dados nos fornece em JSP o que no Servlet é obtido com a invocação do método 8 A ação jsp:include Relacional 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> Dados e Tabelas 1.4 Criar Banco de 10 Você pode Javabeans – Entidades componentes incluídos dinamicamente usando a tag <jsp:param/>.10 O 1.5 Classes passar parâmetros para 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 haver qualquer número de elementos <jsp:param> aninhados com <jsp:include> ou <jsp:forward>. O Recurso avaçando: O Cursor 15 1.9.4 do atributo value também pode ser especificados usando expressões em tempo-de-execução da seguinte Alteração 16 valor 1.9.5 16 maneira: Exclusão 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="nome2" value="valor2" /> 2.3 A plataforma Java Enterprise Edition 18 </jsp:include> 2.3.1 APIs 19 2.3.2 Contêiners 19 10.8.5 Ação <jsp:foward> aplicações 2.3.3 Deployment de 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 WEB 3.2 Tipos de aplicações ação forward. 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 90 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 101 www.3way.com.br
  • 98. Java WEB Java WEB Sumário 11 Expression Language 1 JDBC 8 1.1 Banco de 8 11.1 O que é EL Dados Relacional 1.2 JDBC – Java Database Connectivity 8 1.2.1 A Unified Expression Language (EL), ou simplesmente EL, foi adicionada na especificação JSP 2.0 para java.sql.DriverManager 8 diminuir os Fábrica de Conexões problemas na interação entre JavaServer Pages (JSP) EL com JavaServer Faces (JSF) EL. 1.3 9 A sintaxeBanco de Dados e Tabelas são bem simples. Apesar da EL se parecer bastante com Java ela10 se 1.4 Criar e o alcance da linguagem comporta de forma diferente. Você vai perceber tais diferenças assim que começar a usar o operador [ ]. Você 1.5 Classes Javabeans – Entidades 10 encontrará coisas queDados não funcionariam em Java mas que funcionam com EL e vice-versa. 1.6 Inserindo 11 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 91 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 102 www.3way.com.br
  • 99. 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 11 1.6 Inserindo Dados 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 1.9.1 DAO<%= produto %> – 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 Literais e Operadores 1.9.4 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 sido tão utilizado? 2.1 Porque Java EE tem 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 2.3.1 com ” e aspas simples (') é escapada com ' e é escapada com APIs 19 Contêiners 2.3.2 19 2.3.3 Null: null Deployment de aplicações 21 3 Análise de arquiteturas 21 Se Arquitetura Física e Arquitetura Lógica literal que inclua os você precisar utilizar uma expressão 3.1 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 como em: ${'${'}exprA} 3.3 Arquitetura MVC para a Web 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 Tomcat de operadores, na EL estão disponíveis os mesmos operadores e com as mesmas precedências termos 4.1 23 que se utilizam em Java. JSE SDKacrescentados seu congêneres: 4.1.1 Instalar Java Foram (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 4.2.1 Relacional: == ou eq, != ou utilizar lt , > ou gt, <= ou ge, >= ou le Qual versão de Tomcat ne, < ou 25 Vazio: empty , operação prefixada para determinar se um valor é null ou empty 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 Condicional: A Tomcatcomo em Java. [Windows] ? B : C, como serviço 25 4.2.2.2 Tomcat como processo 26 Exemplos: Testar Tomcat 4.3 26 4.4 Criar contexto de desenvolvimento 26 Expressão EL Resultado 4.4.1 Estrutura de diretórios 26 4.4.2 (4/2)}Criar contexto de aplicação false web 27 ${1 > 4.4.3 Configurar contexto: web.xml 27 ${4.0 >= 3}Ativar contexto true 4.4.4 29 4.4.5 == Testar contexto 29 ${100.0 100} true 4.5 Bibliotecas Servlet 29 ${(10*10) ne 100}seus servlets false 4.6 Testar 30 4.7 < 'b'} Testar seus JSPs 31 ${'a' true 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 92 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 103 www.3way.com.br
  • 100. 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 div 4} JDBC – Java Database Connectivity 0.75 1.2 8 1.2.1 mod 4} java.sql.DriverManager 8 ${10 2 1.3 Fábrica de Conexões 9 ${!empty param.Add} de Dados e Tabelas se o parâmetro Add for null ou uma String vazia True 1.4 Criar Banco 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 1.9.1 Componentes JavaBeans DAO – Data Access Object 13 1.9.2 Collections Pesquisando 14 1.9.3 Tipos Enumerados Recurso avaçando: O Cursor 15 1.9.4 Objetos Implícitos Alteração 16 1.9.5 Exclusão 16 11.2.3 Navegação em a Java Enterprise Edition 2 Introdução variáveis 17 Para usar variáveistem sido tão utilizado? 2.1 Porque Java EE com EL você pode usar operadores combinados. Usamos operadores para acessar 17 coleções ouOpropriedades. Os operadores de acesso a propriedades permitem acesso aos membros de objetos, 2.2 que é Java Enterprise Edition? 18 enquanto os operadores de coleções retornam elementos de Map, List ou Array. 2.3 A plataforma Java Enterprise Edition 18 2.3.1 Na EL estes operadores são descritos por: APIs 19 2.3.2 Contêiners 19 2.3.3 a.b – retorna a propriedade de a associada com identificador b. Deployment de aplicações 21 a[b]Análise de o valor de a associado com a chave ou índice b. – retorna arquiteturas 3 21 3.1 Arquitetura Física e Arquitetura Lógica 21 11.2.3.1 Operador ponto (.) na WEB 3.2 Tipos de aplicações 21 EsteArquitetura MVC para a Web operador possui algumas restrições de uso. O literal à esquerda do ponto (.) , deve ser um Map ou um 3.3 21 JavaBean. OVantagens da arquitetura de ponto (.), deve ser uma propriedade do bean ou uma chave do Map e deve segundo literal, à direita MVC 3.4 22 obedecer aos padrão de nomenclatura de variáveis em Java (não iniciar com número, etc…). Veja exemplo: 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 ${pessoa.nome} //atributo do bean pessoa invoca getNome() Instalar Java JSE SDK (JDK) 24 4.1.2 ${map.chave} de JDK utilizar map Qual versão //chave do 24 4.1.2.1 ${requestScope.pessoa.nome}//atributo do objeto no escopo request 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 operadore[ parar o Tomcat 4.2.2 Iniciar ] 25 operador Tomcat como serviço 4.2.2.1 Este[Windows] é mais poderoso e flexível. O literal à esquerda de [] também pode ser um List ou um array 25 de qualquerTomcat como processo tipo. A variável à esquerda pode ser um número ou ainda qualquer valor que não respeite as regras 26 de 4.2.2.2 nomenclatura do Java. Veja exemplos do operador []: 4.3 Testar Tomcat 26 4.4 Criar contexto de desenvolvimento 26 4.4.1 ${pessoa["nome"]} mesmo que ${pessoa.nome} Estrutura de diretórios 26 4.4.2 ${map["chave"]} mesmo que ${map.chave} Criar contexto de aplicação web 27 4.4.3 ${map["br.com.servlet"]} // agora funciona Configurar contexto: web.xml 27 4.4.4 ${minhaLista["1"]} // agora funciona, porém… Ativar contexto 29 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 93 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 104 www.3way.com.br
  • 101. Java WEB Java WEB Sumário ${minhaLista["0"]} ${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 Criar Banco de Dados e Tabelas 10 11.2.5 Navegação em Mapas 1.5 Classes Javabeans – EL for um 10 Se o literal na expressãoEntidades 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 a próxima expressão, ${meuMap[chave]} perceba que nesta expressão EL o literal da chave dentro Pesquisando 14 1.9.3 Recurso avaçando: por “”. Supondo que a seguinte declaração tenha ocorrido dentro da página, 15 dos colchetes não está cercadoO Cursor 1.9.4 Alteração 16 <% Exclusão request.setAttribute(”chave”, “minhaChave”)%> 1.9.5 16 ${meuMap[chave]} Enterprise Edition 2 Introdução a Java 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 import="java.util.HashMap"%> APIs 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 Instalar Java JSE 24 11.2.6 Objetos implícitos SDK (JDK) 4.1.2 Em Qual versão deimplícitos que estão disponíveis na JSP surgem através de expressões com recurso a: 24 EL, os objetos JDK utilizar 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 Tomcat Map contendo os parâmetros ( String ) da requisição. 4.2.2 Iniciar e parar o 25 4.2.2.1 [Windows] Tomcat como serviço parâmetros ( String[] ) da requisição 25 paramValues Um Map contendo os 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 desenvolvimentocabeçalhos ( String[] ) da requisição 26 headerValues Um Map contendo os 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: web.xml os parâmetros de inicialização do contexto Um Map contendo 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 contendo os atributos do escopo da sessão ( session ) 30 sessionScope Um Map 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 94 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 105 www.3way.com.br
  • 102. Java WEB Java WEB Sumário Veja os seguintes exemplos: 1 <%-1.1 <% JDBC declara variavel --%> 8 Banco de Dados Relacional 8 String – Java Database Connectivity 1.2 JDBC vars[] = { "JSP", "JSTL", "Servlet", "JSF" }; 8 1.2.1 //variáveis na EL devem estar em pageContext ou session ou request 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 Statement 1.8 PreparedStatement ou um parametro: 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 Cursor type="checkbox" name="tecno" value="${vars['1']}" 1.9.3 Recurso avaçando: O 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="checked">${vars["3"]}</input><br> sido tão utilizado? 17 <input type="submit"> 2.2 O que é Java Enterprise Edition? 18 </form> 2.3 A plataforma Java Enterprise Edition 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> Física e Arquitetura Lógica 3.1 Arquitetura 21 ${param['foo']} => 3.2 Tipos de aplicações na WEB ${param['foo']} 21 <br> 3.3 Arquitetura MVC para a Web 21 ${paramValues.tecno[0]} => ${paramValues.tecno[0]} 3.4 Vantagens da arquitetura MVC 22 <br> 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> de JDK utilizar versão 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> de Tomcat utilizar versão 25 ${header["accept"]} => ${header["accept"]} 4.2.2 Iniciar e parar o Tomcat 25 <br> 4.2.2.1 [Windows] Tomcat como serviço 25 ${header["user-agent"]} => ${header["user-agent"]} 4.2.2.2 Tomcat como processo 26 <br> 4.3 Testar 26 </body> Tomcat 4.4 26 </html> Criar contexto de desenvolvimento 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 Ativar contexto 29 11.3 Habilitando e Desabilitando EL e scriptlets 4.4.5 Testar contexto 29 4.5 O padrão ${} não é símbolo reservado na especificação anterior a JSP 2.0, portanto pode haver aplicações em Bibliotecas Servlet 29 4.6 Testar seus utilizados 30 que este símbolo possaservlets com outro intuito. A fim de prevenir a avaliação destes padrões dentro de uma 4.7 vocêTestar seus JSPs 31 página tem três opções: 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 95 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 106 www.3way.com.br
  • 103. Java WEB Java WEB 1. Escapar o caracteres ${} : Sumário${expr} 1 2. Configurar sua aplicação (web.xml) com o grupo de propriedade JSP: JDBC 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. 1.9.1 Configurar a página com diretiva page: 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 JavaServer Pages Standard Tag Library ( JSTL ) 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 12.1 O queque é Java Enterprise Edition? 2.2 O é JSTL 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 na WEB 3.2 Tipos de aplicações 21 As uri's sofrem 21 3.3 Arquitetura MVC para a Web Para instalar a JSTL você precisa: 3.4 Vantagens da arquitetura MVC 22 - Fazer o download da última versão do site da Sun ou outro fornecedor . 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 23 e standard.jar, dentro do diretório ../webapps/jsp-exemplos/WEB-INF/lib biblioteca em relação24 à 4.1.1 - Copiar os Java JSE SDK (JDK) desejadas para o diretório WEB-INF/lib/ da Instalar JARs das bibliotecas especificação JSTL 24 4.1.2 sua Qual versão de e os utilizar TLD para o diretório WEB-INF/ aplicação Web JDK arquivos 4.1.2.1 - Declarar cada taglib e associá-la com seu TLD no deployment descriptor JAVA_HOME implementada pelo24 4.2 Instalar Tomcat web.xml. contêiner web. 25 4.2.1 - Incluir em cada página que usa as marcas: Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 <%@ taglib uri="uri_da_taglib" prefix="prefixo" %> [Windows] Tomcat como serviço 25 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 4.4.1 <prefixo:nomeTag atributo="...">...</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 definido para utilização da tag pode ter qualquer valor mas no caso da taglib core da jstl a Testar contexto 29 4.5 Bibliotecas Servlet c. Já a URI (que não deve ser decorada) é mostrada a seguir e não implica em uma 29 convenção é o padrão da letra 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 A URI está seus JSPs nos arquivos tlds, assim como <servlet-name> está para um servlet, no arquivo Testar para a tag, 31 (TDL). 4.8 Logs 31 web.xml. 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 96 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 108 www.3way.com.br
  • 104. 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 que formos Relacional Banco de Dados 8 1.2 utilizar uma Java Database<c:if test="..." ... >...</c:if> JDBC – taglib Connectivity 8 1.2.1 java.sql.DriverManager 8 devemos primeiro XML library: tags para processamento XML: 1.3 Fábrica de Conexões 9 escreverCriar cabeçalho um Banco de Dados<%@taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" /> 10 1.4 e Tabelas Exemplo: 1.5 10 através Classes Javabeans – Entidades de uma tag jsp <x:parse>...</x:parse> 1.6que define qual taglib Inserindo Dados 11 1.7 Fechando a Conexão Internationalization library I18N: 12 1.8 iremos utilizar e PreparedStatement ou Statement uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" 12 <%@ taglib 1.9 definimos umPatterns Design nome 13 /> Exemplo: 1.9.1 para DAO – Datao Access Object 13 o mesmo, <fmt:message key="..." /> 1.9.2 chamado prefixo. Pesquisando 14 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 das tags da versão 1.1 da JSTL core pode ser facilmente compreendida: 4 Ambiente de 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 utilizar tipo switch bloco do 4.2.1 25 4.2.2 Iniciar e parar o Tomcat 25 c:forEach [Windows] Tomcat comofor para iterar sobre coleções um serviço 4.2.2.1 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 97 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 109 www.3way.com.br
  • 105. 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 de variável 8 c:set criação 1.2 JDBC – Java Database Connectivity 8 1.2.1 java.sql.DriverManager adiante 8 c:url veja 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dadosteste para o switch e Tabelas 10 c:when 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 1.9.1 O conjunto de tags que permite configura valores de variáveis EL ou propriedades de uma variável EL em 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 ELavaçando: O Cursor receber valor através do atributo value: ou propriedade pode 1.9.3 Recurso 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 configurar propriedades de um JavaBean ou um java.util.Map, Deployment de aplicações 21 de <jsp:setProperty> o atributo 3 só isso, você não arquiteturas para adicionar elementos em uma lista Análise de pode usá-lo 21 mas 3.1 Arquitetura Física e o atributo Lógica 21 target necessita da referência ou em arrays. Você deve usar Arquitetura target ao invés de var, quando 3.2 Tipos de um JavaBean ou um estiver configurando aplicações na WEB Map veja como: do objeto bean, isto significa21 3.3 Arquitetura MVC para a Web 21 que você deve usar uma 22 3.4 <c:set target=”${carrinho}” property=”items” Vantagens da arquitetura MVC value=”${lista}” de desenvolvimento expressão EL (${idBean}) ou23 4 Ambiente /> 4.1 Tomcat 23 uma expressão de <c:remove> é usada para 4.1.1 A tag Instalar Java JSE SDK (JDK) remover uma variável de seu escopo. 24 script(<%=idBean %>) ou uma O atributo var tem que de JDK utilizar String não pode ser uma expressão. 4.1.2 Qual versão ser um literal 24 ação <jsp:attribute>. 24 Veja um simples exemplo: 4.1.2.1 JAVA_HOME 4.2 Instalar Tomcat 25 4.2.1 <c:remove var=”num” scope=”session”/> 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 id="contato" class="apostila.cap11.Contato" scope="session"/> Criar contexto de desenvolvimento 26 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 ${variavel}<br> 29 variável => 4.5 Bibliotecas Servlet bean => ${contato.nome}<br> 29 Uma propriedade de 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 98 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 110 www.3way.com.br
  • 106. 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 – Java Database Connectivity 1.2 JDBC de Fluxo 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” de código é executado. A Listagem 12.2 demonstra o uso <c:if>. 1.9.1 DAO – Data Access Object 13 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 <%@ taglib 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 18 </c:if> é Java Enterprise Edition? <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 19 </c:if> 2.3.2 Contêiners </html> <c:else>, certo? 2.3.3 Deployment de aplicações 21 Listagem 12.2 3 Análise de arquiteturas – IfJSTL.jsp 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 na WEB 21 A tag <c:choose> e suas parceiras <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 test="${empty param.userpref}"> JAVA_HOME 24 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 value="mercedes">Mercedes</option> 27 <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> seus JSPs 4.7 Testar 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 99 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 111 www.3way.com.br
  • 107. Java WEB Java WEB <c:choose> <c:when test="${param.userpref eq 'volvo'}"> Sumário A Volvo é uma empresa sueca fundada em 1927 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 Dados e Tabelas 1.4 Criar Banco de test="${param.userpref eq 'mercedes'}"> 10 1.5 ClassesA Mercedes-Benz é uma marca alemã de automóveis pertencente ao grupo 10 Javabeans – Entidades 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 O Cursor 1947. 1.9.3 Recurso avaçando: 15 </c:when> 1.9.4 Alteração 16 <c:otherwise> 1.9.5 Exclusão 16 2 Introdução a Java um dos veículos da lista. 17 Escolha Enterprise Edition 2.1 Porque Java EE tem sido tão utilizado? 17 </c:otherwise> 2.2 O que é Java 18 </c:choose> Enterprise Edition? 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 capaz de iterar por 21 A tag <c:forEach> é e Arquitetura Lógica uma coleção. O exemplo a seguir mostra o uso de expression 3.2 Tipos maneira mais limpa que 21 language de uma de aplicações na WEB 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 = 0; i < utilizar 4.2.1 forQual versão de Tomcat contatos.size(); i++ ) { 25 Contato Tomcat contato = (Contato) contatos.get(i); 4.2.2 Iniciar e parar o 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 100 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 112 www.3way.com.br
  • 108. 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 8 </c:forEach> Database Connectivity 1.2.1 java.sql.DriverManager 8 1.3 Fábrica possível criar Também é de Conexões 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 desejada e utilizar a propriedade count dessa variável. 10 atributo chamado varStatus para a variável 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo var="contato" items="${dao.lista}" varStatus="id"> 11 <c:forEach Dados 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 1.9.2 Veja Listagem 12.4, exemplo de uso da tag <c:forEach>: 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ãoimport="java.util.*" %> 16 page 2 Introdução prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> a Java Enterprise Edition 17 <%@ taglib 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 2.3.3 Deployment = new HashMap(); 21 autor1.put("nome", "Austragesilo"); 3 Análise de arquiteturas 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 paraHashMap(); a Web 21 Map autor2 = new 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 autor3de JDK utilizar 4.1.2 Qual versão = new HashMap(); 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> de diretórios 4.4.1 Estrutura 26 <title>Resultado da web Busca: Autores</title> 4.4.2 Criar contexto de aplicação 27 </head> contexto: web.xml 4.4.3 Configurar 27 4.4.4 Ativar bgcolor="white"> 29 <body contexto 4.4.5 Testar contexto os autores que casam com critério de busca: 29 Aqui todos 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 101 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 113 www.3way.com.br
  • 109. Java WEB Java WEB Sumário <c:forEach items="${autores}" var="current"> <tr> <td><c:out value="${current.nome}" /><td> 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 10 </html> Javabeans – Entidades 1.6 Inserindo Dados 11 Listagem 12.4 – ForEachJSTL.jsp 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 Na Design Patterns tag <c:forTokens> o atributo items é uma String constituída por tokens separados por algum 1.9 13 delimitador. Se você imaginarObjectString como um coleção de substrings é possível notar a semelhança com 1.9.1 DAO – Data Access uma 13 1.9.2 Pesquisando 12.5. 14 <c:forEach>. Veja Listagem 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> é Java Enterprise Edition? 2.2 O que 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 Bibliotecacomo processo 4.2.2.2 Tomcat de Internacionalização 26 Standard TagLibs. 4.3 Testar Tomcat 26 Internacionalizar aplicações é cada vez mais uma tarefa corriqueira de 4.4 desenvolvedor web.de desenvolvimento Criar contexto A maioria dos frameworks web tem a sua maneira 26 todo 4.4.1 Estruturaessediretórios de mecanismo. 26 particular de prover 4.4.2 Criar contexto de aplicação web 27 4.4.3 Locale Configurar contexto: web.xml 27 12.5.1 4.4.4 A tag <fmt:setLocale> é utiliza para fazer com que o sistema passe a ser Ativar contexto 29 4.4.5 em Testarlíngua diferente da que está previamente definida pelo browser contexto 29 exibido uma 4.5 Bibliotecas Servlet 29 cliente. 4.6 Testar seus servlets 30 4.7 <fmt:setLocale value="${param.lingua}" scope="session"/> Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 102 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 114 www.3way.com.br
  • 110. 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 controlar as configurações da JSTL programaticamente, deixando transparente o controle da localização para suas páginas JSP. 1 JDBC 8 O seguinte trecho de código mostra como a tag <fmt:setLocale> é utilizada para especificar explicitamente 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 value="pt_BR" scope="session"/> java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 Após a execução deste fragemento JSP as preferências de idioma especificadas pelo usuário para seu 1.4 Criar Banco de Dados e Tabelas 10 browser serão ignoradas. 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 12.5.2 Mensagens a Conexão 1.7 Fechando 12 Textos de localização deou Statement 1.8 PreparedStatement idiomas são utilizadas na JSTL com uso da tag <fmt:message>. Esta tag permitirá a 12 você retornar mensagens e textos de um arquivo de recurso (resource bundle) e mostrá-lo em sua página. 1.9 Design Patterns 13 arquivo resource bundle é 1.9.1 Um DAO – Data Access Object um arquivo contendo todas as mensagens (e rótulos) a serem utilizados pelo 13 sistema. A Listagem 12.7 mostra um arquivo resource bundle, messages.properties: 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 site.titulo = Sistema com i18n Alteração 16 1.9.5 saudacao = Bem vindo ao sistema Exclusão 16 2 Introdução= Java Enterprise Edition a Nome: 17 campo.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 2.3.1 campo.cidade = Cidade: APIs 19 botao.enviar = Enviar 2.3.2 Contêiners 19 2.3.3 botao.cancelar aplicações Deployment de = Cancelar 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 <fmt:message> saiba onde encontrar os recursos. Isto pode ser feito de duas formas: usando a tag 4 Ambiente de desenvolvimento 23 <fmt:setBundle> ou <fmt:bundle>: 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 <fmt:bundle de JDK utilizar Qual versão basename="br.com.empresa.pacote.messages"> 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 12.6 – Configurando arquivo de Mensagens web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 A segundacontexto é mais flexível e também mais desejável, já que não precisamos alterar as páginas JSP Ativar a opção 29 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 103 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 115 www.3way.com.br
  • 111. 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 essas Database Connectivity 8 Para usar– Java mensagens 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 10 Veja o exemplo, não considerando configuração do resource bundle no web.xml: 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 Patterns value="en_US" scope="session"/> 1.9 Design 13 <fmt:bundle basename="messages"> 1.9.1 DAO – 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 usuário, aquele que 26 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>contexto de aplicação web Criar 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 requisições com informações sobre os idiomas configurados pelo usuário em seu Logs 31 das 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 104 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 116 www.3way.com.br
  • 112. Java WEB Java WEB browser. Experimente mudar essas configurações no seu navegador e veja que o sistema passa a ser exibido em Sumário idiomas diferentes. 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 Banco de Dados Relacional nos seguintes arquivos (contendo o texto para o locale desejado), em ordem: 1.1 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 e Tabelas 1.4 Criar Banco de Dados 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 padrão do sistema e um arquivo específico para cada língua adicional. 1.7 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 1.9.1 A biblioteca fmt inclui tags para manipular Data e Números: <fmt:formatDate>, <fmt:parseDate>, 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ídaRecurso avaçando: O Cursor dados), enquanto <fmt:parseDate> é usada para fazer análise de valores de datas e horas (entrada 15 de 1.9.3 dados). Veja exemplo: 1.9.4 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" dateStyle="short" timeStyle="short" var="usDate"/><br>18 Enterprise Edition? 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" dateStyle="short" timeStyle="short" var="brDate"/><br>21 de aplicações <ul> 3 Análise de arquiteturas 21 <li> Analise <c:out Lógica value="${usDateString}"/> dado localização U.S. 3.1 Arquitetura Física e Arquitetura 21 English 3.2 Tipos de aplicações na WEB 21 resultando na 3.3 Arquitetura MVC para a Web data <c:out value="${usDate}"/>.</li> 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de desenvolvimento value="${brDateString}"/> dado localização Pt Brasil 23 <li> Analise <c:out 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ão de Tomcat utilizar 25 percentuais, de arcodo com uma localização especifica. 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 4.4.1 Estrutura de<c:if test="${status.first}"> 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 105 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 117 www.3way.com.br
  • 113. Java WEB Java WEB Sumário <tr><td align="left" class="blogText"> <c:out value="${blogEntry.text}" escapeXml="false"/> <font class="blogPosted"> 1 JDBC 8 [My <fmt:formatNumber value="0.02" type="currency"/> 1.1 Banco de Dados Relacional 8 posted at 1.2 JDBC – Java Database Connectivity <fmt:formatDate value="${blogEntry.created}" 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 erros em aplicações Web 14 13 Tratamento de 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Configuração de páginas de erro Alteração 16 13.1 1.9.5 Exclusão 16 Permitir que um Java Enterprise Edition de exceção quando ao algo dá errado ou um mensagem de erro 2 Introdução a usuário visualize a pilha 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ê poderá elaborar um página Edition 2.3 A plataforma Java Enterprise personalizada para manipular os erros, 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 de arquiteturas page isErrorPage="true" %> pelo menos informar esses 3 21 <html> 3.1 Arquitetura Física e Arquitetura Lógica erros de uma forma mais21 Veja bem ! Veja Bem ! 3.2 Tipos de aplicações na WEB ... Um erro ocorreu, 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 4 Ambiente de desenvolvimento página de erro com JSP 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 4.2 Instalar sua página de erro colocando a diretiva: 25 4.2.1 Qual versão de Tomcat utilizar 25 <%@Iniciar e errorPage="erro.jsp" %> page parar o Tomcat 4.2.2 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Como nadacomo processo Tomcat é perfeito teremos um grande inconveniente ao utilizarmos essa abordagem, se você tiver 26 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 bem, você diria, posso fazer isso! Mas se precisar de um tratamento diferente para 26 diretiva errorPage. Tudo de desenvolvimento 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 Criar contexto de aplicação web 27 page> do Deployment Descriptor. 4.4.3 É possível declarar páginas de erro no web.xml para uma aplicação web inteira, e você pode até mesmo Configurar contexto: web.xml 27 4.4.4 Ativar de erro 29 configurar páginascontextopara diferentes tipos de exceções, ou diferentes tipos de código de erros HTTP. 4.4.5 Testar contexto 29 4.5 Declarando uma página de erro geral Bibliotecas Servlet 29 13.1.1 4.6 30 EstaTestar seus servlets a tudo na sua aplicação web, não apenas para páginas JSPs. As tags internas declaração se aplica 4.7 Testar seus<error-code> são usados para indicar o tipo da exceção ou código de erro HTTP que será JSPs 31 <exception-type> ou 4.8 Logs contêiner. Veja Listagem 13.2. 31 interceptado pelo 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 106 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 118 www.3way.com.br
  • 114. Java WEB Java WEB Sumário <error-page> <exception-type>java.lang.Throwable</exception-type> <location>/erro.jsp</location> 1 JDBC </error-page> de Dados Relacional 1.1 Banco 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 1.2 JDBC – Java Database Listagem 13.2 – erro geral 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> avaçando: O Cursor 1.9.3 Recurso 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 Página de erro HTTPtem sido tão utilizado? 2.1 Porque Java EE 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 de status for 404 (arquivo não encontrado). 2.3 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 Instalar tipo ServletException e IOException, ou suas subclasses destas. Então como poderíamos 24 lançar exceções doJava JSE SDK (JDK) 4.1.2 Qual versão de JDK outro 24 informar para uma página ouutilizar servlet a ocorrência de exceções como SQLException ou outra exceção 4.1.2.1 24 checável? AJAVA_HOME resposta é, não poderíamos. 4.2 Instalar Tomcat 25 4.2.1 Qual versão de Tomcat 25 13.2.1 Criando nossa Exception utilizar 4.2.2 Se você realmente precisar de uma exceção você deverá criá-la como uma subclasse de ServletException. Iniciar e parar o Tomcat 25 4.2.2.1 [Windows] Tomcat como 25 Veja um exemplo na Listagem 13.5. serviço 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 import javax.servlet.ServletException; 4.4 Criar contextoMinhaServletException extends ServletException { de desenvolvimento 26 public class 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 } contexto 4.4.4 Ativar 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 107 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 120 www.3way.com.br
  • 115. Java WEB Java WEB public class LancaExceptionServlet extends HttpServlet { Sumário protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 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 ServletException e IOException? A estratégia a ser utilizada neste caso é utilizar a classe ServletException como 1.8 PreparedStatement ou Statement 12 uma classe Design Patterns Você captura a exceção num bloco try...catch e “embrulha” a exceção capturada com o empacotadora. 1.9 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 1.9.4 //uma Exception nao ServletException Alteração 16 1.9.5 public class OutraException extends Exception { Exclusão 16 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 class de aplicações Deployment LancaExceptionServlet extends HttpServlet { 21 3 Análise devoid doGet(HttpServletRequest request, HttpServletResponse response)21 arquiteturas protected 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 OutraException("Um Exception nao ServletException")); 22 3.4 Vantagens da arquitetura MVC 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 Instalar Tomcat 25 13.2.3 Mapeamento no Deployment Descriptor 4.2.1 Da mesma forma que fizemos com JSPs, também podemos configurar nossa exceção gerada pelo servlet 25 Qual versão de Tomcat utilizar no 4.2.2 Iniciar e parar o Tomcat 25 web.xml, de modo declarativo. Veja na Listagem 13.8. 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 <error-page> processo Tomcat como 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 4.4.3 Configurar contexto: web.xml – web.xml configurado para capturar OutraException 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 108 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 121 www.3way.com.br
  • 116. Java WEB Java WEB Sumário <b><%=exception.toString() %></b> <br> 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 MVC para Aplicações Web 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou Statement 12 14. 1 Por que Combinar Servlets e JSP? 1.9 Design Patterns 13 1.9.1 Colocar todo HTML dentro de um Servlet realmente não parece a melhor idéia. O que acontece quando DAO – Data Access Object 13 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 Java Enterprise Edition a bancos e outros. Isso deve estar no Servlet. O ideal então é que 2 Introdução ele não deve fazer acessos 17 a Servlet faça o trabalho sujo e árduo utilizado? de 2.1 Porque Java EE tem sido tão e o JSP apenas apresente esses resultados. A Servlet possui a lógica 17 negócios (ou regras de negócio) e o Edition? a lógica de apresentação. JSP tem 2.2 O que é Java Enterprise 18 2.3 Em um cenário típico:Java Enterprise Edition A plataforma 18 2.3.1Use JSP para tornar mais fácil manter e desenvolver o conteúdo HTML APIs 19 - Para códigos dinâmicos simples, chame o código servlet utilizando elementos de script 2.3.2 Contêiners 19 2.3.3Para aplicações mais complexas, utilize classes personalizadas chamadas dentro dos elementos de script 21 Deployment de aplicações 3 - Para aplicações bastante complexas, utilize beans e custom tags Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Mas, isto nãode tudo, para na WEB Tipos é aplicações processamento complexo, iniciar com JSP é bastante estranho. Além da facilidade 21 3.3separar código real em classesa Web Arquitetura MVC para separadas, beans e custom tags, a suposição por trás de JSP é que uma página 21 de 3.4 22 fornece um Vantagens básica única. MVC aparência da arquitetura 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 14.2 Mal Entendidos Sobre MVC 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 Um JAVA_HOME elaborado nem sempre é necessário, frameworks com Struts e JavaServer Faces, são 24 Framework 4.2 vezes úteis. Mas eles não são indispensáveis. Implementar MVC com RequestDispatcher funciona bem para Instalar Tomcat 25 muitas 4.2.1 Qual versão de Tomcatmoderadamente complexas. utilizar 25 a maioria das aplicações simples e 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. Tomcat como processo O MVC deve ser encarado como uma abordagem, também conhecido como abordagem Modelo 2 4.2.2.2 26 (Model 2 approach), essa abordagem não vai conflitar com sua arquitetura. 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 MVC com web 27 14.3 Implementando de aplicaçãoRequestDispatcher 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 Testar seus servlets 30 1. Defina beans para representar os dados. 4.7 Testar seus JSPs 31 2. Use um Servlet para manipular requisições. O servlet lê os parâmetros da requisição, verifica por dados 4.8 ausentes e malformados, etc. Veja o exemplo de encaminhamento de requisição, Listagem 14.1: Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 109 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 122 www.3way.com.br
  • 117. Java WEB Java WEB Sumário public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 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 (operation.equals("order")) { 1.5 Classes Javabeans – Entidades 10 address = "/WEB-INF/Order.jsp"; 1.6 Inserindo Dados 11 } else if (operation.equals("cancel")) { 1.7 Fechando a Conexão = "/WEB-INF/Cancel.jsp"; 12 address 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 2.3.3 inseridos em beans que foram definidos no passo 1. Portanto, para garantir Deployment de aplicações 21 3 que uma página JSP não irá criar objetos, devemos utilizar: 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 de Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 4 Ambiente de ... class="pacote.Classe" /> 23 <jsp:useBean desenvolvimento 4.1 Tomcat 23 A 4.1.1 página JSP não deve modificar os objetos. Portanto, devemos utilizar ${propriedade} ou <jsp:getProperty> Instalar Java JSE SDK (JDK) 24 4.1.2 não <jsp:setProperty>utilizar da JSP. 24 mas Qual versão de JDK dentro 4.1.2.1 JAVA_HOME 24 4.2 Armazene o bean na requisição, sessão, ou no contexto do servlet. O servlet chama setAttribute no objeto 25 Instalar Tomcat 4. do 4.2.1 requisição, sessão, ou contexto do servlet para armazenar uma referência aos beans que representam25 Qual versão de Tomcat utilizar tipo os 4.2.2 Iniciar requisição. 25 resultados da e parar o Tomcat 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 ValueObject valor = new ValueObject(...); Tomcat como processo 26 4.3 Testar Tomcat 26 request.setAttribute(“identificador", valor); 4.4 Criar contexto de desenvolvimento 26 4.4.1 RequestDispatcher dispatcher = 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 Testar seus servlets 30 5. Encaminhe 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 de RequestDispatcher (Listagem 14.1) para transferir controle para a página. 31 o método JSPs 4.8 Extraia Logs 31 6. 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 110 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 123 www.3way.com.br
  • 118. 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 Dados Relacional Banco de 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 Conexão de código aberto que é disponibilizado e gerenciado pela Apache Software 1.7 Fechando framework 12 Foundation. Temos abaixo uma ou Statement de como o Struts gerencia a arquitetura Model 2: 1.8 PreparedStatement representação 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 26 14.4.1. Controller Tomcat 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 Controller do framework Struts encontra-se a ActionServlet. Este serve 27 centro da implementação web 4.4.3 um Servlet Front Controller e fornece um único ponto de acesso ao restante da aplicação. Contém também Configurar contexto: web.xml 27 como 4.4.4 29 a lógica de Ativar contexto requisição do cliente, através da requisição HTTP do cliente, baseado na requisição, e manipulação da 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 componente de View deve ser chamado em seguida lendo esta informação de um arquivo de configuração 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 111 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 124 www.3way.com.br
  • 119. Java WEB Java WEB XML, geralmente nomeado struts-config.xml. Esta servlet é fornecida pelo framework Struts. Tudo o que é Sumário necessário para incluí-la em nossa aplicação é configurá-la corretamente no descritor de implementação da 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>Cursor 1.9.3 Recurso avaçando: O 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 2.3 A plataforma Java Enterprise Edition 14.5 – web.xml configurando struts 18 2.3.1 APIs 19 2.3.2 Contêiners 19 14.4.1.2. Action 2.3.3 Como mencionamos antes, algumas requisições do cliente são delegadas às instâncias de objetos da Action Deployment de aplicações 21 3 nossa classe servlet Front Controller. Todos os objetos Action definem um método chamado execute() e é este Análise de arquiteturas 21 por 3.1 Arquitetura Física e Arquitetura Lógica 21 o método que é chamado pela ActionServlet para gerenciar a requisição. 3.2 Tipos de aplicações na WEB desenvolvedores somente a classe base Action. Para incluir objetos Action 21 O framework Struts fornece aos 3.3 gerenciadores de requisições em sua aplicação, os desenvolvedores devem estender esta classe base e Arquitetura MVC para a Web 21 como 3.4 Vantagens da arquitetura MVC 22 fornecer uma implementação para o método execute(). 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 actions; utilizar Qual versão de JDK 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 import versão de Tomcat utilizar Qual forms.LoginForm; 25 import javax.servlet.http.*; 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 import org.apache.struts.action.*; [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 public class LoginAction extends Action { 4.4 Criarpublic ActionForward execute(ActionMapping mapping, ActionForm form, contexto de desenvolvimento 26 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 // 4.4.5 Testar contexto para a implementação específica ActionForm 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 Recupera os dados especificados pelo usuário. 31 // 4.8 Logs 31 String loginName = loginForm.getLoginName(); 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 112 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 125 www.3way.com.br
  • 120. Java WEB Java WEB Sumário String password = loginForm.getPassword(); // Verifica se é o usuário correto if (!(loginName.equals("1234") && password.equals("1234"))) 1 JDBC 8 return mapping.findForward("failure"); 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java // Armazena o resultado no session scope 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 1.4 Criar Banco HttpSession session = request.getSession(); de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 session.setAttribute("USER", loginName); 1.6 Inserindo Dados 11 1.7 Fechando a // o usuário efetuou o login com sucesso. Despacha o usuário para 12 Conexão 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 } Recurso avaçando: O Cursor 1.9.3 15 Convém lembrar que ao codificar 16 1.9.4 Alteração 14.5 – Exemplo ação struts, LoginAction.java Listagem 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 utilizado? 2.1 Porque Java EE tem sido tão acima emprega o uso de um 17 única cópia do objeto e usá-lo para objeto de negócio,Java Enterprise Edition? para a autenticação do chamado UserService, 2.2 O que é 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 execute(). Instâncias de Action que forem criadas desta 2.3.1 APIs 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 aplicações 2.3.3 Deployment ser considerados parte da Model), não 21 implementada na própria Action. As únicas atividades que uma Action safe e certificar em utilizar sempre21 3 Análise de arquiteturas deve executar são: variáveis locais e não variáveis de 21 3.1 Arquitetura Física e Arquitetura Lógica - Recuperar aplicações na WEBfornecidas pelo JavaBean de 3.2 Tipos de as informações 21 classe. usuário do ActionForm associado. 3.3 Arquitetura MVC para a Web 21 - Traduzir dados arquitetura MVCem parâmetros requeridos do formulário 3.4 Vantagens da 22 pelos objetos de negócio que implementam a funcionalidade. 4 Ambiente de desenvolvimento 23 - Recuperar o resultado da operação do objeto de negócio e 4.1 Tomcat 23 4.1.1 determinar Java JSE SDK (JDK) para onde o usuário deve ser Instalar a View seguinte 24 4.1.2 encaminhado. de JDK utilizar Qual versão 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 4.2.1 utilizadosversão de Tomcataplicação. Qual pelo restante da utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 Instâncias de Action são capazes de instruir a ActionServlet para qual componente de View delegar a [Windows] Tomcat como serviço 25 resposta retornando instâncias de objetos ActionForward. Actions têm o acesso a estes objetos de ActionForward 4.2.2.2 Tomcat como processo 26 com o uso de um objeto ActionMapping, que encapsula os dados de mapeamentos de caminhos lógicos para cada 4.3 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 chamado success, nossa Action executa a seguinte instrução: 4.4.2 Criar contexto de aplicação web 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 Servlet 4.5 Bibliotecas 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 dos dados dos formulários preenchidos pelo usuário através das instâncias de Action que 4.7 Testar seus JSPs 31 gerenciam os eventos de formulário. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 113 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 126 www.3way.com.br
  • 121. 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 8 Abaixo é listado o ActionForm usado no exemplo acima (Listagem 14.5): 1.2 JDBC – Java Database Connectivity 8 1.2.1 import org.apache.struts.action.*; java.sql.DriverManager Struts fornece a definição8 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 String getLoginName() { 14 public 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 2.1 Porque Java this.loginName = loginName; EE tem sido tão utilizado? 17 } é Java Enterprise Edition? 2.2 O que 18 public String getPassword() { 2.3 A plataforma Java 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 4.2.1 - Não colocar nenhuma lógica de negócio no ActionForm. São concebidos meramente para transferir Qual versão de Tomcat utilizar 25 dados entre componentes da View e do Controller e por isso não são utilizados pela lógica de negócio. 25 4.2.2 Iniciar e parar o Tomcat 4.2.2.1 - Opcionalmente, incluir um método de validação dos dados antes que o controle passe para a Action. 25 [Windows] Tomcat como serviço 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 version="1.0" encoding="UTF-8" ?> 4.4.3 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> seus servlets 4.6 Testar 30 <form-bean name="loginForm" type="login.LoginForm"/> 4.7 Testar seus JSPs 31 </form-beans> 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 114 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 127 www.3way.com.br
  • 122. Java WEB Java WEB <action-mappings> Sumário <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 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 </struts-config> a Conexão 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 o arquivo XMLO Cursor Recurso avaçando: como sendo um arquivo de configuração para 15 1.9.4 utilização pelo framework Struts. Excluir esta linha, ou mesmo digitá-la Alteração 16 1.9.5 errado, resultará em erros quando a aplicação carregar. Exclusão 16 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 é Java arquivo de configuração. Todos os outros elementos são filhos desse elemento. 18 Elemento raiz doEnterprise Edition? 2.3 A plataforma Java Enterprise Edition 18 2.3.1 APIs 19 <form-beans> 2.3.2 Marca o início e o fim das definições das instâncias de uma classe ActionForms. Elementos <form-beans> Contêiners 19 2.3.3 Devem ser colocados como filhos deste elemento. Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 <form-bean> 3.2 Tipos de aplicações na WEB 21 Define uma instância de ActionForm que pode ser utilizada pela aplicação. Tem dois atributos: 3.3 Arquitetura MVClógico a Web para a ser associado com a classe ActionForm 21 name – o nome 3.4 Vantagens da arquiteturada classe ActionForm. 22 type – o nome completo MVC 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 <action-mappings> 4.1.1 Marca o início e JSE SDK (JDK) Instalar Java o fim das definições de ações e seus mapeamentos. Todos os elementos <action> devem 24 4.1.2 ser Qual versão de JDK utilizar elemento. 24 colocados como filhos deste 4.1.2.1 JAVA_HOME 24 4.2 25 <action> Instalar Tomcat 4.2.1 Define uma instância de um objeto Action para utilização pela aplicação. A maior parte dos elementos 25 Qual versão de Tomcat utilizar de 4.2.2 ação implementa osTomcat atributos: Iniciar e parar o seguintes 25 4.2.2.1 [Windows]– o nome do elemento <form-bean> a ser utilizado nesta ação. 25 name Tomcat como serviço 4.2.2.2 Tomcat como caminho relativo ao contexto a ser utilizado por esta Action. Qualquer requisição a este processo 26 path – o 4.3 Testar Tomcat 26 caminho resulta na chamada da Action definida. 4.4 Criar scope – contexto do escopo onde nossa ActionForm pode ser acessada. Isto informa onde a contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios armazenar a instância da classe ActionForm. 26 ActionServlet deverá 4.4.2 Criartype – o nome de classe Action. contexto de aplicação web 27 4.4.3 Configurar contexto: web.xml 27 4.4.4 29 <forward> Ativar contexto 4.4.5 Ações podem ter nenhum ou muitos elementos de redireção. Este elemento define o mapeamento lógico Testar contexto 29 4.5 Bibliotecas Servlet 29 entre um nome e um caminho na nossa aplicação. Tem os seguintes atributos: 4.6 Testar seus servlets lógico do elemento de redireção que pode ser utilizado pela instância de Action. 30 name – o nome 4.7 Testar seus o caminho para o componente de visualização associado a este redirecionador. 31 path – JSPs 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 115 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 128 www.3way.com.br
  • 123. Java WEB Java WEB 14.4.2. Model (Modelo) Sumário framework Struts não fornece explicitamente nenhum componente dentro de Model. Quais objetos O utilizar como componentes Model é deixado a critério do desenvolvedor, apesar de serem normalmente JavaBeans 1 JDBC 8 ou, eventualmente, Entreprise JavaBeans (EJB), ou ainda Springs. 1.1 Banco de Dados Relacional 8 1.2 JDBC – Java Database Connectivity 8 14.4.3. View (Visualização) 1.2.1 Struts pode utilizar qualquer tecnologia da camada de apresentação, apesar de, na maioria dos casos, java.sql.DriverManager 8 1.3 9 utilizar JSP, Fábrica deHTML. O que o Struts fornece para esta camada é um conjunto de bibliotecas de tags que JSF e/ou Conexões 1.4 Criaras facilidades do Struts para popular e validar automaticamente os formulários. Banco de Dados e Tabelas 10 permite utilizar 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 14 1.9.2 Tendo visto o uso e a facilidade de se programar páginas utilizando JSTL Pesquisando 1.9.3 Recurso desejaria utilizar a 15 você provavelmenteavaçando: O Cursor 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 manipuladores de tags Escrever novos Java Enterprise Edition é uma tarefa relativamente certamente o código JSP e 2.1 17 simples de Porque Java EE JSP/Servlets. utilizado? ser feito com tem sido tão Existem três maneiras de se criar seus 2.2 O que é Java de tags. Dessas três, próprios manipuladores Enterprise Edition? duas foram introduzidas com JSP a organização correm o 18 2.3 A plataforma de Enterprise tags mais simples (Simple Tags e Tag 2.0 para tornar a tarefa JavadesenvolverEdition risco de ficar muito 18 2.3.1 19 Files). MasAPIs assim, você precisará aprender como desenvolver as tags ainda bagunçados. Não seria 19 2.3.2 Contêiners Clássicas, para as ocasiões absurdamente raras em que nenhuma das outras melhor se pudéssemos 21 2.3.3 Deployment que você quer. duas for capaz de fazer ode aplicações 3 Análise de arquiteturas 21 criar tags como as da JSTL 3.1 Arquitetura Física Custom Tags? 15.2 Como funcionam ase Arquitetura Lógica para incrementar nossa 21 3.2 Tipos de aplicações na WEB pensado, construir tags JSP é algo tão 21 Ao contrário do que você esteja aplicação? 3.3 Arquitetura MVC para a Web Java normal ou um Servlet. Para usar 21 simples quanto desenvolver uma classe 3.4 Vantagens da arquitetura separadamente três componentes: 22 JSP Custom Tags, você precisa definirMVC 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 versão de JDK utilizar Qual XML contendo elementos que são mapeados para a 24 4.1.2.1 implementação da tag e JAVA_HOME 24 4.2 Instalar Tomcat usa a tag library. 25 - um arquivo JSP que 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 116 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 129 www.3way.com.br
  • 124. 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 } 1.2 JDBC – catch(IOException ioe) { Java Database Connectivity 8 System.out.println("Erro em TagExemplo: " + ioe); 1.2.1 java.sql.DriverManager 8 } de Conexões 1.3 Fábrica 9 1.4 Criarreturn(SKIP_BODY); 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 Arquivo Descritor de Tag Library extensão .tld, 1.9.1 DAO – Data Access Object 13 1.9.2 Uma vez definido o tag handler, sua próxima tarefa é identificar a classe Pesquisando diferentemente do 14 para o servidor e associando-aOcom uma tag XML, apropriada, do descritor de 1.9.3 Recurso avaçando: Cursor 15 web.xml. tags. A Listagem 15.2 mostra um arquivo (em formato XML), ele contém 1.9.4 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 a tags de descrição. A parte não negritada da listagem é um série de Java Enterprise Edition 2 17 comum, e virtual igual, para todos os arquivos descritores de tags, podendo ser 2.1 Porque Java EE tem sido tão utilizado? 17 copiado para novos arquivos descritores de forma literal. 2.2 O que é Java Enterprise Edition? 18 2.3 A plataforma Java tag define o nome 18 Note que o elemento Enterprise Edition principal da tag e identifica a 2.3.1 APIs 19 classe que manipula 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 Deployment de beans ou 21 como local de instalação de aplicaçõesqualquer 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 3.3Em uma aplicação MVCo Arquitetura real para a PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" Web 21 3.4local mais indicado para Vantagens da arquitetura MVC 22 "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd"> 4 colocação do TLD será Ambiente de desenvolvimento 23 <taglib> 4.1 Tomcat 23 dentroInstalar Java JSE SDK (JDK) do subdiretório <tlib-version>1.0</tlib-version> 4.1.1 24 WEB-INF, assim o arquivo utilizar <jsp-version>1.2</jsp-version> 4.1.2 Qual versão de JDK 24 4.1.2.1 ser reutilizado por 24 <short-name>exemplo-tags</short-name> poderá JAVA_HOME 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 como serviço 4.2.2.1 [Windows] Tomcat 25 4.2.2.2 possa acessarprocesso </description> Tomcat como o 26 final <tag> 4.3 26 arquivo Testar Tomcat 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 Seja Todos os direitos reservados a 3Way Networks 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
  • 125. 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 – Javauri="..." prefix="..." %> Database Connectivity 8 <%@ taglib 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 URL relativa, bem simples, que corresponde a uma descritor de arquivo TLD colocado no mesmo diretório 10 Criar Banco de Dados e Tabelas uma da 1.5 Classes uso da tag. Adicionalmente, você pode usar o arquivo web.xml para mudar o significado 10 página JSP que faz Javabeans – Entidades do 1.6 11 literal stringInserindo Dados fornecido ao atributo uri da diretiva taglib, veja o elemento taglib do web.xml. 1.7 Fechando a Conexão obrigatório, especifica um prefixo que será usado como nome da tag definida 12 O atributo prefix, também no 1.8 12 descritor dePreparedStatement ou o arquivo TLD defini uma tag nomeado como tag1 e o atributo prefix tem como tags. Por exemplo, se Statement 1.9 Design Patterns 13 valor o literal teste, então o nome corrente da tag será teste:tag1. Esta tag será usada, dependendo se ela está 1.9.1 como uma tag que aceita um corpo, de duas das seguintes maneiras: DAO – Data Access Object 13 definida 1.9.2 Pesquisando 14 1.9.3 <test:tag1>QualquerCursor Recurso avaçando: O JSP</test:tag1> 15 1.9.4 Alteração 16 1.9.5 16 ou apenas Exclusão 2 Introdução a Java Enterprise Edition 17 <test:tag1 /> tem sido tão utilizado? 2.1 Porque Java EE 17 2.2 O que é Java Enterprise Edition? 18 Para demonstrar,Java Enterprise Edition Listagem 15.2 esta nomeado como tagexemplo.tld e reside 18 no 2.3 A plataforma o descritor definido na mesmo diretório da página JSP mostrada na Listagem 15.3. Daí, o JSP usa a diretiva taglib com uma simples URL 2.3.1 APIs 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> 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 <%@ taglib uri="tagexemplo.tld" prefix="mtag" %> 3.3 Arquitetura <TITLE><mtag:example /></TITLE> MVC para a Web 21 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> Tomcat 4.2 Instalar 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 File [Windows] Tomcat como serviço 25 16. Tag 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 16.1 O que é um Tag File 4.4 Criar File nada desenvolvimento 26 Uma Tagcontexto demais é do que um pequeno código de arquivo JSP. A sua função é justamente criar 4.4.1 Estrutura de diretórios para um determinado fim. Ela ajuda na organização e design da sua aplicação, 26 pequenos fragmentos de códigos 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 Utilizando contexto em uma página JSP Testar Tag Files 29 16.2 4.5 Bibliotecas você pode invocar conteúdo reutilizável usando um tag customizada, em vez dos genéricos Servlet 29 Com Tag Files 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 118 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 132 www.3way.com.br
  • 126. 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 uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 8 <%@ taglibDados Relacional 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> – Entidades 1.5 Classes Javabeans 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 <%@ taglib prefix="ex" tagdir="/WEB-INF/tags" %> Recurso avaçando: O Cursor 15 1.9.4 <html> Alteração 16 1.9.5 <body> Exclusão 16 2 Introduçãoprimeiros seis números da seqüência de a Java Enterprise Edition 17 Os 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 são localizadas? Par responder isto, nós precisamos saber como o contêiner acessa e 4.2 Instalar tag files 25 processa asQualfiles. de Tomcat utilizar tag versão 4.2.1 25 4.2.2 Iniciar e parar o Tomcat 25 16.3 Tag [Windows] Tomcat como serviço Files empacotados 4.2.2.1 25 4.2.2.2 Para ficar mais fácil e rápido, no exemplo da Listagem 16.1, nos colocamos a tag file no diretório WEBTomcat 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 defiles dentro deste diretório. desenvolvimento 26 automaticamente pelos tag 4.4.1 Mas se você quiser colocar suas tags dentro de um JAR a situação muda. Neste caso você precisará criar Estrutura de diretórios 26 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 4.4.5 Para tornar isto possível, o TLD do tag file usa um elemento <tag-file> no lugar de <tag>. Os únicos 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.7TLD para um tag fileJSPs Testar seus empacotado. 31 de 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 119 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 133 www.3way.com.br
  • 127. 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 ser colocado dentro do diretório META-INF e o tag file(s) deverão estar em META-INF/tags Dados e Tabelas 10 Este arquivo deve 1.5 Classes Javabeans – Entidades 10 ou em um subdiretório. 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/ Access Object – Data 13 exemplo.tag 1.9.2 Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Uma vez que o tag file não se encontra dentro ou abaixo de /WEB-INF/tags, você não poderá usar o Alteração 16 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á queusada com segue: Edition? ser é Java Enterprise 2.2 O 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 2.3.3 Outra diferença de aplicações Deployment importante entre TLDs de tag file e TLDs de tags clássicas, são relativos aos elementos 21 <attribute>Análise de arquiteturastags clássicas podem conter esta informação dentro de seus TLDs, tag files não. e <body-content>. As 3 21 3.1 Arquitetura conjunto de diretivas especiais. Elas dizem ao contêiner como processar o tag file, é 21 Os tag files usam um Física e Arquitetura Lógica 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 três tipos diferentes de diretivas: page, taglib e include. Tag files contém 4.1 diretiva page e 23 possui variable, cria e inicializa uma variável usada no processamento da tag. A tag, 4.1.1 Instalar Java JSE SDK (JDK) adicionou outras 24 diz ao web contêiner comoJDK utilizaro tag file. A attribute, descreve os atributos que 4.1.2 Qual versão de processar 24 três: variable, tag e24 podem ser usados na tag. Vejamos as duas últimas. 4.1.2.1 JAVA_HOME attribute. 4.2 Instalar Tomcat 25 4.2.1 tagQual versão de Tomcat utilizar 25 16.4.1 4.2.2 A nova diretiva, tag,Tomcat como a diretiva page em um JSP. Ela fornece ao Iniciar e parar o funciona 25 4.2.2.1 [Windows] Tomcat como serviço a ser usado por todo o arquivo de tag. 25 web contêiner um conjunto de configuração 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 métodoCriar contexto de desenvolvimento as variáveis locais especificadas pela 26 um em Java, o web contêiner atualiza 4.4.1 Estrutura de diretórios 26 diretiva. 4.4.2 Por Criar contexto de aplicação file usa a diretiva tag para enviar dados ao 27 exemplo, o seguinte tag web 4.4.3 dinâmico. Estes dados são mostrados com tag de ação forEach da JSTL. Configurar contexto: web.xml 27 atributo 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 120 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 134 www.3way.com.br
  • 128. Java WEB Java WEB <c:forEach items="${atributo}" var="localVar"> Sumário ${localVar.value}<br> </c:forEach> 1 JDBC 8 Listagem 16.3 – dinatributo.tag, tag file e atributos dinâmicos 1.1 Banco de Dados Relacional 8 O código–JSP, na Listagem 16.4, mostra como usar a tag file (dinatributo.tag, Listagem 16.3) e como 1.2 JDBC Java 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 Bancoprefix="dyn" tagdir="/WEB-INF/tags" %> taglib de Dados e Tabelas 1.4 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 attribute Pesquisando 14 16.4.2 1.9.3 Atributos dinâmicos são Cursor flexíveis, mas se você souber quais atributos sua tag irá precisar você Recurso avaçando: O bastante 15 1.9.4 informá-las ao web contêiner usando atributos estáticos. As tags tradicionais tem o subelemento Alteração 16 poderá 1.9.5 <attribute>Exclusãopara tal propósito. Mas para configurar um conjunto de atributos na tag file nos precisamos 16 no TLD da 2 Introdução a Java Enterprise Edition 17 diretiva attribute. 2.1 Porque Java EE tem sido tão utilizado? 17 O atributo name fornece uma identificação required e informa ao contêiner 2.2 18 se atributo O que é Java Enterprise Edition? é obrigatório e rtexprvalue informa ao contêiner que o valor do atributo 2.3 A plataforma Java execução. pode ser obtido em tempo de Enterprise Edition Os atributos 18 2.3.1 Vejamos um exemplo simples para demonstrar o uso destas diretivas em um APIs 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 21 3 Análise taglib de arquiteturas <%@ 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 JSE SDK (JDK) 4.1.1 Instalar Java campeão 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 ! Campeão, Brasil 25 Quero hexa 4.2.1 Qual versão de Tomcat utilizar 25 </c:otherwise> 4.2.2 </c:choose> o Tomcat Iniciar e parar 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 Tomcat 26 Então, o seguinte código JSP usa a tag file e configura o atributo: 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> contexto de aplicação web Criar 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> seus servlets 4.6 Testar 30 Listagem 16.6 – estatributo.jsp 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 121 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 135 www.3way.com.br
  • 129. 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 8 16.4.3 variable de Dados Relacional 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 1.9.4 e mostrar este valor dentro de um JSP com ${x}. Um consideração importante a respeito desta diretiva é 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 Standard Actions tem sido tão utilizado? Porque Java EE 17 16.5 2.2 JSP O que é Java Enterprise Edition? fornece um conjunto 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 APIs duas: <jsp:invoke> que usa o fragmento declarado pela diretiva attribute e <jsp:doBody> que processa o corpo 19 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 obtém o conteúdo 21 As classes SimpleTag e Arquitetura Lógica do corpo da tag pela chamado do método getJspBody(), que 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 MVCO argumento deste método determina que objeto JspWrite irá receber a saída 21 para a Web chama o método invoke(). do 3.4 22 fragmento. Vantagens da arquitetura MVC 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 23 atributos declarados como fragmentos, não podendo ser utilizados com conteúdo do corpo. Além disto, esta ação 4.1.1 Instalar Java JSE SDK (JDK) 24 pode fazer mais 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 os atributos, somente fragment é obrigatório na ação <jsp:invoke>. JAVA_HOME 24 4.2 Se nem var Instalar Tomcat ou varReader estiver configurado, então o JspFragment será direcionado com SimpleTag, tag 25 4.2.1JspWrite padrão. Se uma delas, var ou varReader for configurada, mas scope Qual versão de Tomcat utilizar para files não podem 25 4.2.2 Iniciar e do fragmento será page. 25 não, então o escopoparar o Tomcat processar elementos25 4.2.2.1 A Listagem 16.6 apresenta uma tag file que usa <jsp:invoke>. O atributo [Windows] Tomcat como serviço de script (declarações, 4.2.2.2 Tomcat como processo 26 fragment, obrigatório, esta 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.4como uma variável String.desenvolvimento Criar contexto de 26 JSP dentro do conteúdo do 4.4.1 Estrutura de diretórios 26 corpo. 4.4.2 Criar contexto de aplicação web 27 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4.4.3attribute name="frag" required="true" fragment="true"%> Configurar contexto: web.xml 27 <%@ 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:invokeseus servlets fragment="frag"/> 4.6 Testar 30 </c:if> Testar seus JSPs 4.7 31 Listagem 16.6 - invokeaction.tag 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 122 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 136 www.3way.com.br
  • 130. Java WEB Java WEB Sumário Listagem 16.7, apresenta o JSP necessário para testar esta tag file. Primeiro, ele incorpora a tag e A 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 8 será o valorJDBC do atributo frag. 1.1 Banco de Dados Relacional 8 1.2 JDBC – Javaprefix="inv" tagdir="/WEB-INF/tags" %> Database Connectivity 8 <%@ taglib 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> Javabeans – Entidades 1.5 Classes 10 <inv:invokeaction proc="yes"> 1.6 Inserindo Dados 11 <jsp:attribute 1.7 Fechando a Conexão name="frag"> 12 dois + dois = ${2+2} 1.8 PreparedStatement ou Statement 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 tag files fazem para usar informações entre as tags. Porque Java EE tem sido tão utilizado? 17 como 2.2 O que é Java Enterprise Edition? 18 2.3 <jsp:doBody/> Java Enterprise Edition A plataforma 18 16.5.2 2.3.1 A ação <jsp:doBody> funciona como o <jsp:invoke>, mas ele recebe o corpo da tag ao invés do atributo. 19 APIs Ele 2.3.2 os Contêiners 19 contém 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 padrão; 21 - mostrá-lo com o JspWriter 3.1 Arquitetura Física e Arquitetura Lógica 21 - enviá-lo para uma variável com o atributo var; 3.2 Tipos de aplicações na WEBReader com o atributo varReader. 21 - armazená-lo como um objeto 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 A tag file da Listagem 16.8 processa o conteúdo do corpo de acordo como o atributo att. Quando att é igual 4 ele será armazenadodesenvolvimento quando att for igual reader, ele será armazenado num objeto Reader.23 Ambiente de numa variável e var, Se 4.1não for especificado, o padrão é que JspWriter mostre o conteúdo como saída. Tomcat 23 att 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> de Tomcat utilizar Qual versão 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> servlets 4.6 Testar seus 30 Listagem 16.8 - bodyaction.tag 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 123 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 137 www.3way.com.br
  • 131. 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 1.4 Criar Banco de Dados e Tabelastag 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 Enterprise Edition 2 Introdução a Java uma série de novos mecanismos com o intuito de 17 têm o mesmo poder facilitar a vida do desenvolvedor. Com Simple Tags, podem ser criados todos tipos 2.1 Porque Java EE tem sido tão utilizado? 17 de tags com mais é Java Enterprise Edition? corpo vazio, passando por tags que, facilidade: desde tags com funcional. 2.2 O que 18 dependendo de uma determinada condição, incluem ou não seu corpo, e até tags 2.3 A plataforma Java Enterprise Edition 18 que processam o corpo repetidas vezes. 2.3.1 APIs 19 Toda a lógica de processamento de um Simple Tag fica em um único 2.3.2 Contêiners 19 método, Deploymentem aplicações classe que implementa a interface doTag(), 2.3.3 de uma 21 javax.servlet.jsp.tagext.SimpleTag. 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 17.2. Ciclo de Vida. 3.2 Tipos de aplicações na WEB 21 3.3 Arquitetura MVC para a Web uma nova instância da classe handler é criada, dois ou mais métodos são 21 Quando um JSP invoca uma tag, 3.4 Vantagens da e quando o método doTag() é finalizado, o objeto handle desaparece, em outras palavras, 22 chamados para o handler arquitetura MVC 4 Ambiente de desenvolvimento 23 estes objetos handler não são reutilizados pelo web contêiner. 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 17.3. Overview das classes envolvidas 4.1.2 Uma Tagversão de JDK utilizar Qual handler Simples deve implementar a interface SimpleTag. A maneira mais fácil de fazê-lo é 24 4.1.2.1 JAVA_HOME 24 estender SimpleTagSupport e substituir apenas o método de que você precisa, doTag(). Você não precisa usar 4.2 Instalar mas 99,99% dos desenvolvedores de tags simples a usam. Tomcat 25 SimpleTagSupport, 4.2.1 A SimpleTagSupport implementa os métodos de SimpleTag, mas o doTag() não faz nada, você precisa Qual versão de Tomcat utilizar 25 4.2.2 25 substituí-lo Iniciar etag handler. Ela também adiciona três métodos de conveniência, o mais útil é o getJspBody(). em seu parar o Tomcat 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 contextoode desenvolvimento para o processamento na tag 26 setJspContext() Torna JspContext disponível 4.4.1 Estrutura de diretórios 26 setParent()Criar contexto de aplicação web Chamado pelo web contêiner para tornar a tag pai disponível 4.4.2 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 pelo web contêiner no começar da operação da SimpleTag 29 doTag() Chamado 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets classes Java para obter seu JspTag pai 30 getParent() Invocado por 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 124 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 138 www.3way.com.br
  • 132. Java WEB Java WEB Sumário 17.4. Criando SimpleTags O primeiro passo é escrever uma classe que estenda SimpleTagSupport: 1 JDBC 8 1.1 Banco de Dados Relacional 8 import java.io.IOException; 1.2 JDBC – Java Database Connectivity 8 1.2.1 import javax.servlet.jsp.JspException; java.sql.DriverManager 8 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 1.9.3 Depois de avaçando: O Cursor necessário reimplementar o método doTag() oriundo da superclasse Recurso criar a classe é 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 que é Java Enterprise Edition? 18 import javax.servlet.jsp.JspException; 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 2.3.3 public class de aplicações extends SimpleTagSupport { Deployment SimpleTag1 21 3 Análise de arquiteturas 21 public void doTag() Lógica 3.1 Arquitetura Física e Arquiteturathrows 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 17.2 – SimpleTag1.java, com método doTag() 23 Listagem 4.1 Tomcat 23 4.1.1 Note que o Java JSE SDK (JDK) Instalar método doTag() declara uma IOException, então não é preciso tratar a exceção com um bloca 24 4.1.2 Qual versão de JDK utilizar 24 try/catch. 4.1.2.1 JAVA_HOME 24 4.2 Mapeamento de tlds em páginas Jsp. Instalar Tomcat 25 17.5. 4.2.1 CrieQualTLD para a Tomcat utilizar versão de tag. 25 um 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 <?xml version="1.0" encoding="UTF-8" ?> [Windows] Tomcat como serviço 25 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 125 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 139 www.3way.com.br
  • 133. Java WEB Java WEB Sumário <tag> <description>Minha Tag</description> <name>minhaTag</name> 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> Conexões 1.3 Fábrica de 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 11 de 1.6 Inserindo Dados diretórios do pacote. AsConexãoTag Handler vão para o mesmo lugar onde todas as outras classes Java da aplicação classes 1.7 Fechando a 12 web forem.PreparedStatement queStatement Escrevendo um JSP ou use a tag. 1.8 12 1.9 Design Patterns 13 <%@ page DAO – Data Access Object language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> 1.9.1 13 <%@ taglib prefix="tag" uri="simpleTags" %> 1.9.2 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 é Javahttp-equiv="Content-Type" content="text/html; charset=UTF-8"> Enterprise Edition? 18 <meta 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 21 </html> Tipos de aplicações na WEB Listagem 3.3 Arquitetura MVC para a Web 17.4 – Usando SimpleTag1 com SimpleTag1.jsp 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 Instalar Java JSE SDK (JDK) 24 comando especial no 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 taglib prefix="tag" uri="simpleTags" %> Instalar Tomcat 25 <%@ 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 4.4 Criar<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> contexto de desenvolvimento 26 <title>Insert 4.4.1 Estrutura de diretórios title here</title> 26 4.4.2 </head>contexto de aplicação web Criar 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> contexto Testar 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 126 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 140 www.3way.com.br
  • 134. 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 } Fábrica de Conexões 1.3 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 1.9.1 <taglib Data Access Object DAO – xmlns="http://java.sun.com/xml/ns/j2ee" 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 Iniciar e parar o Tomcat defina o atributo. 4.2.2 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 <tag:minhaTag> A mensagem é: ${mensagem } </tag:minhaTag> Tomcat como processo 26 4.3 Testar Tomcat 26 4.4 Criar contexto a tag é invocada, “mensagem” não é um atributo dentro do escopo! Se você tirasse esta de desenvolvimento 26 No ponto em que 4.4.1 Estrutura retornaria nula. Para definir o atributo mensagem usamos o método setAttribute: de diretórios 26 expressão da tag, ela 4.4.2 Criar contexto de aplicação web 27 4.4.3 public void contexto: web.xml JspException, IOException { Configurar doTag() throws 27 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 } Testar seus servlets 4.6 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 127 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 141 www.3way.com.br
  • 135. 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> Dados 1.6 Inserindo 11 1.7 Fechando a Conexão 12 1.8 PreparedStatement ou 12 O método doTag() da tag handler: Statement 1.9 Design Patterns 13 1.9.1 String[]Data Access Object DAO – mensagem = {"oi!", "tudo bem?", "Bom dia!", "Boa noite!"}; 13 1.9.2 Pesquisando 14 1.9.3 public void doTag()Cursor Recurso avaçando: O throws JspException, IOException { 15 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 Browsers Java JSE SDK (JDK) 4.1.1 Instalar 24 4.1.2 Browsersversão de JDK utilizar Qual são softwares que lêem e interpretam arquivos HTML (Hyper Text Markup Language) enviados 24 na 4.1.2.1 JAVA_HOME World Wide Web ( www – Rede Mundial ), formata-os em páginas da Web e os exibe ao usuário. Navegadores 24 da 4.2 Instalar Tomcat Web também 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 Browsers opara todos os gostos. Os mais utilizados são o Internet Iniciar e parar Tomcat 25 Endereços URL de 25 4.2.2.1 [Windows] Tomcat como serviço Explorer e o Mozilla Firefox, vêm acompanhados de outros programas para Internet, 4.2.2.2 Tomcat como Eletrônico como o leitor de Correioprocesso (e-mail). Existem outras opções de Browsers, recursos HTTP 26 4.3 Testar deles e basta escolher um Tomcat 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 128 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 142 www.3way.com.br
  • 136. Java WEB Java WEB 18.3 User-Agent String 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 O Documento HTML e Tabelas 1.4 Criar Banco de Dados 10 O primeiro Javabeansque deve-se ter em mente ao projetar páginas Web é 1.5 Classes conceito – Entidades 10 que HTML não foi criada para controlar a aparência dos documentos, ao contrário 1.6 Inserindo Dados Cada navegador 11 dos processadores de texto e programas de layout de página. As tags de HTML 1.7 Fechando a Conexão mostra a página de 12 apenas informam ao navegadorou Statement elementos que estão na página. Eles 1.8 PreparedStatement o que são os 12 uma forma um pouco dizem, por exemplo, que um determinado trecho é o título principal do documento e 1.9 Design Patterns 13 diferente, o que 13 outro é um DAO de lista. A formatação do trecho é deixada para o navegador. item – Data Access Object 1.9.1 1.9.2 Para complicar ainda mais, cada usuário pode modificar a configuração Pesquisando 14 dificulta o trabalho de padrão de seu navegador para O Cursor programa mostre o texto na fonte (tipo de 1.9.3 Recurso avaçando: que o seu programação visual 15 caractere) que quiser. 1.9.4 Alteração 16 na Web. Em Exclusão compensação é muito simples criar uma página básica para colocar na 1.9.5 16 Internet com HTML. Exemplo de uma página HTML: 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 <html> é Java Enterprise Edition? 2.2 O que 18 <head> 2.3 A plataforma Java Enterprise Edition 18 <title>Minha primeira página</title> 2.3.1 APIs</head> 19 2.3.2 Contêiners 19 2.3.3 Deployment de aplicações 21 <body> Texto – 3 Análise de arquiteturasimagens – links - ... 21 <body>Física e Arquitetura Lógica 3.1 Arquitetura 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 4.1.1 Objeto de Java JSE SDK (JDK) Instalar 24 4.1.2 Qual versão 24 Documentos (DOM),de JDK utilizar 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 o Tomcat 4.2.2 Iniciar e parar 25 4.2.2.1sua estrutura e [Windows] Tomcat como serviço 25 pela 4.2.2.2 Tomcat como processo O Modelo de Objetos 26 18.5 adicionar, modificar 4.3 Testar Tomcat 26 O Modelo ou apagar elementos de desenvolvimento de Objeto de Documentos (DOM – Document Object Model) é 4.4 Criar contexto 26 uma interface de programação de aplicativos (API) para documentos HTML e XML. É a 4.4.1 e conteúdo. de diretórios Estrutura 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 129 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 143 www.3way.com.br
  • 137. Java WEB Java WEB Tudo o que seja encontrado em um documento HTML ou XML pode ser acessado, alterado, apagado ou Sumário adicionado através do Modelo de Objeto de Documentos com apenas algumas exceções. Em particular as interfaces 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 interface de programação standard que possa ser utilizada em um número amplo de ambientes 8 proporcionar uma de Dados Relacional 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 15 1.9.3 Recurso avaçando: O Cursor 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 Tomcat do W3C, cada elemento (tag) tem sua função própria no (X)HTML. Cada tag tem seu recomendações 4.2 25 papel a cumprir, versão de Tomcat utilizar 4.2.1 Qual foi criada com um propósito. Criar documentos semanticamente corretos significa utilizar a tag 25 certa no lugar certo. Por o Tomcat <h1> para título superior, <p> para parágrafos, <ul> para lista não ordenada, exemplo: 4.2.2 Iniciar e parar 25 <form> para formulário, etc... como serviço 4.2.2.1 [Windows] Tomcat 25 4.2.2.2 Criando documentos semanticamente corretos, além de contribuir para uma web melhor, você estará Tomcat como processo 26 beneficiando a si Tomcat Seu site poderá aparecer primeiro no Google e outros sites de busca, será bastante próprio. 4.3 Testar 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 XML Configurar contexto: web.xml 4.4.3 27 Extensiblecontexto Language (XML) é linguagem de marcação de dados (meta-markup language) que Markup 4.4.4 Ativar 29 provê um formato para descrever dados estruturados. Isso facilita declarações mais precisas do conteúdo e 4.4.5 Testar contexto 29 resultados mais significativos de busca através de múltiplas plataformas. O XML também vai permitir o surgimento 4.5 Bibliotecas Servlet 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 130 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 145 www.3way.com.br
  • 138. 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 Banco de Dados Relacional 8 livro, a quantidade 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 aplicações onde os quais são encontrados. Uma vez que o dado foi encontrado, 8 por dados independentemente das 1.3 Fábrica de Conexões 9 ele pode ser 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 Inserindo Dados 11 18.9 Doctype 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 Introdução contexto: web.xml Configurar 27 18.10.1 4.4.4 Apesar dessa aparente sofisticação, as páginas Web não passam de documentos de texto simples. Podem Ativar contexto 29 4.4.5 Testar contexto editor de texto, como o Notepad do Windows. A diferença é que as páginas Web 29 ser produzidas com qualquer 4.5 Bibliotecas Servlet 29 contêm algumas marcas especiais para determinar o papel de cada elemento dentro do texto. Alguns elementos 4.6 Testar seus servlets 30 são marcados como títulos, outros como parágrafos. As marcações são usadas também para indicar os links que 4.7 a outros documentos na rede. Essas marcas são chamadas de tags e estão especificadas dentro da linguagem Testar seus JSPs 31 levam 4.8 Logs as páginas Web, HTML. 31 utilizada para criar 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 131 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 146 www.3way.com.br
  • 139. 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 </HTML> 8 <HTML> ... Dados Relacional <HEAD> – Java Database Connectivity 1.2 JDBC ... </HEAD> 8 1.2.1 <TITLE> ... </TITLE> java.sql.DriverManager 8 <BODY> ... Conexões </BODY> 1.3 Fábrica de 9 1.4 Criar Banco de Dados e Tabelas 10 Onde: 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo Dados 11 <HTML> ... </HTML> a Conexão 1.7 Fechando 12 São PreparedStatement ou Statement usados para delimitar os comandos HTML, indicam o início e o fim de um documento. O Browser 1.8 12 reconhece aDesign Patterns TAG HTML e indica que o documento que virá a seguir deve ser interpretado como HTML. 1.9 13 1.9.1 DAO – Data Access Object 13 <HEAD> ... </HEAD> 1.9.2 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 Alteraçãoque é exibido na barra de títulos do browser. é o título 1.9.4 16 1.9.5 Exclusão 16 <TITLE> ... </TITLE> a Java Enterprise Edition 2 Introdução 17 Definem o títuloEE tem sido que utilizado? na barra de títulos do browser. Estas TAGs devem estar sempre 2.1 Porque Java da página tão é exibido 17 detro das TAGs <head></head>. Edition? 2.2 O que é Java Enterprise 18 2.3 A plataforma Java Enterprise Edition 18 <BODY> ... </BODY> 2.3.1 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 Lógica 3.1 Arquitetura Física e Arquitetura 21 Os comandos em HTMLna WEB 3.2 Tipos de aplicações são chamados de TAGs, compreendem de marcas padrões que são ultilizadas para 21 fazer indicações a um browser. 3.3 Arquitetura MVC para a Web 21 Assim, como em outras linguagens, os comandos tem uma sintaxe própria e obedecem a algumas regras: 22 3.4 Vantagens da arquitetura MVC - 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 4.1.1 precedência de uma barra(/). 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 4.2.2.1 <nome da tag>: indica o início da TAG [Windows] Tomcat como serviço 25 4.2.2.2 </nome da tag>: indica o final da TAG. 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 4.4.1 Os atributos HTML devem ser colocados sempre na tag de abertura, logo Estrutura de diretórios após o nome do contexto de aplicação de um espaço e é composto de um nome de 4.4.2 Criar elemento, precedido web 27 atributo, um sinal de igual (=) e um valor de atributo, cercado por aspas duplas (") ou 4.4.3 Configurar contexto: web.xml 27 simples (‘). Ativar contexto 4.4.4 29 bom contexto 4.4.5 Um Testarexemplo de atributo é o id, que serve para identificar, de maneira 29 única, um elemento dentro de um documento HTML. Exemplo: 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 <p Testar seus JSPs id="nome"> 4.7 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 132 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 147 www.3way.com.br
  • 140. Java WEB Java WEB Outro bom exemplo é o atributo href, usado para definir uma referência de hipertexto (link) em um Sumário elemento A ou LINK. Exemplo: 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.DriverManagermesma não esteja disponível ou não seja suportada pelo user-agent (alt 8 substituir uma imagem, caso a é 1.3 9 abreviaturaFábrica de Conexões 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 de título <H> - "Headings" ou Statement 1.8 PreparedStatement 12 formas, utilizando 13 Com elas você pode apenas definir o tamanho das letras, mas não o tipo de 1.9 Design Patterns Headings ou a tag 13 fontes. VejaDAO – Data Access as tags headings para cabeçalhos que vão do tamanho agora como ficam Object 1.9.1 1 até 6: 1.9.2 Pesquisando 14 FONT. 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 <H1> Este é o primeiro nível </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 quarto nível </H4> 2.1 Porque Java EE tem sido tão utilizado? 17 <H5> que é Javao quinto Edition? </H5> Este é Enterprise nível 2.2 O 18 <H6> plataforma Java Enterprise Edition 2.3 A Este é o sexto nível </H6> 18 2.3.1 APIs 19 Tag <FONT> 2.3.2 Contêiners 19 2.3.3 Você pode tambémaplicações de fonte no lugar das tags de headings. Este tipo de tag é a mais usada, Deployment de usar as tags 21 pois você pode definir arquiteturas 3 Análise de mais facilmente o tamanho do texto e fonte que você deseja, e personalizar ainda mais a sua 21 página. A tag é <FONT>, dentroArquiteturapode definir vários parâmetros, como cor, tamanho e tipo de letra. Veja dela você Lógica 3.1 Arquitetura Física e 21 agora comoTipos as tags de fontes:WEB usar de aplicações na 3.2 21 3.3 Arquitetura MVC para a Web 21 Atributo FACE 3.4 Vantagens da arquitetura MVC 22 Uma evoluçãode desenvolvimento da fonte (tipo de letra) para os textos, a tag é feita assim: 4 Ambiente que permite a escolha 23 4.1 Tomcat 23 4.1.1 <FONT FACE=fonte_da_letra>Texto</FONT> Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 Exemplos: JAVA_HOME 4.1.2.1 24 4.2 Instalar Tomcat 25 4.2.1 <FONT FACE=Times>Fonte Times New Roman </FONT> Qual versão de Tomcat utilizar 25 <FONT FACE=Arial>Fonte Arial </FONT> 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 <FONT FACE=Courier>Fonte Courier New </FONT> [Windows] Tomcat como serviço 25 4.2.2.2 Tomcat como processo 26 4.3 Testar Tomcat 26 Atributo COLOR e SIZE 4.4 Criar contexto de desenvolvimento 26 4.4.1 <font size="3"> A palavra terá o tamanho 3</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 30 </font> seus servlets 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 133 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 148 www.3way.com.br
  • 141. Java WEB Java WEB 18.10.2.4 Caracteres Especiais Sumário formas de representar caracteres especiais, através de uma notação específica, são chamadas de As Entidades. Existem Entidades de Caracter e Entidades Numéricas. 1 JDBC 8 1.1 8 Exemplo: Banco de Dados Relacional 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: Design Patterns 1.9 13 Caracter DAO – Data Access Object Caracter Entidade de Entidade Numérica Descrição 1.9.1 13 ã &#227; a c/ til 1.9.2 Pesquisando &atilde; 14 1.9.3 Recurso avaçando: O Cursor 15 caracter 1.9.4 Um Alteração bastante útil é o espaço não ignorável, o &nbsp; (Non-breaking space). Este caracter é 16 importante Exclusãodesejamos forçar o browser a não ignorar espaços em branco entre palavras. quando 1.9.5 16 2 Introdução a Java Enterprise Edition 17 Caracter Porque Java EE tem sido tão utilizado? Entidade Numérica Entidade de Caracter Descrição 2.1 17 2.2 O space 18 Non-breakingque é Java Enterprise Edition? &nbsp; 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 decomo fica com &nbsp;&nbsp;&nbsp;&nbsp; espaço não ignorável!</p>21 aplicações <p>Veja 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 23 Os caracteres ASCII “<” (menor que), “>” (maior que), e “&” (e (ê) comercial) tem significados especiais 4.1.1indicarInstalar Java JSEHTML. Mas por vezes queremos exibir estes símbolos na tela e são usados dentro 24 SDK (JDK) para um comando de 4.1.2 Qual versão correspondência: 24 documentos seguindo a de JDK utilizar 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üênciasde desenvolvimento caracteres ISO Latin1. Temos aqui uma tabela com as entidades 4.4 Criar contexto de escape suportam 26 mais utilizados em Português: 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 Tabela de Caracteres Especiais e web.xml 4.4.3 Configurar contexto: Acentuação 27 Caracter Ativar contexto Entidade de Caracter Entidade Numérica Descrição 4.4.4 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 134 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 149 www.3way.com.br
  • 142. 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; &#202; E c/ acento circunflexo 1.2 JDBC – Java Database Connectivity 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 &atilde; 14 ã &#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; Edition? &#241; n c/ til 2.2 O que é Java Enterprise 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 deentidades numéricas: aplicações na WEB 21 Veja outras 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 Tabela de Caracteres 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? utilizar 4.2.1 Qual versão de Tomcat 25 Os Iniciar e parar o Tomcat browsers costumam mostrar corretamente os caracteres acentuados 4.2.2 25 normalmente. Essa prática, embora facilite sobre a digitação dos documentos, não é 4.2.2.1 [Windows] Tomcat como serviç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íngua26 Chama-se Tomcat de caracteres uma representação digital de texto. Um conjunto 4.3 Testar caracter é um símbolo cujas diversas representações devem significar a mesma coisa Portuguesa chegam a 4.4 Criar contexto de desenvolvimento 26 para uma comunidade de pessoas. Na prática, porém, existem alguns conjuntos que travar os Browsers de 4.4.1 Estrutura de 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 4.4.3 Os Browser já contexto: web.xmlescolha a codificação adequada ao conjunto Configurar permitem que se 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 de um documento, pode-se inserir uma indicação do 4.4.5 Testar contexto 29 diferentes do ISO Latin esquema de codificação, através do campo: 4.5 Bibliotecas Servlet 29 1, apesar do ISO Latin 30 1 4.6 Testar seus servlets <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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 135 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 150 www.3way.com.br
  • 143. 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 linha um número ou letra. Devem ser usados junto com o tag <LI>. Dados Relacional 8 recebem na primeira 1.2 8 Exemplo: JDBC – Java Database Connectivity 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 PreparedStatement ou Statement 12 Atributo: START=n Podem servir como 1.9 Design o número 13 Especifica Patterns a partir do qual os itens da lista começam a ser resumos ou índices de 1.9.1 DAO –que nAccess Object número ou uma letra. Também podem ser Data pode ser um 13 contados. Sendo 1.9.2 Pesquisando todo o site, contendo14 utilizados números romanos. 1.9.3 Exemplo: Recurso avaçando: O Cursor 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 Atributo: TYPE APIs 19 2.3.2 Define o tipo de numeração empregada na lista. Pode assumir valores "1 (1, Contêiners 19 2.3.3 etc) ", "I" (I, II, III, de aplicações ii, iii, iv, etc), "A" (A,B, ..., Z) ou "a" (a, b, ..., z). Deployment IV, etc), "i" (i, 21 2, 3, 4, 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 Consultoria MVC 22 <li> da arquitetura </li> 4 Ambiente de desenvolvimento </li> 23 <li> Desenvolvimento 4.1 Tomcat Manutenção </li> 23 <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 JAVA_HOME 24 18.10.3.2 Listas 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.1da lista recebem marcas gráficas na primeira linha conhecidas como bullets. Qual versão de Tomcat utilizar 25 itens 4.2.2 25 Exemplo: Iniciar e parar o Tomcat 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 Atributo: TYPE contexto: web.xml Configurar 27 4.4.4 Indica qual o símbolo deve ser usado para demarcar cada elemento da lista. Pode ser os valores disc, circle Ativar contexto 29 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 136 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 151 www.3way.com.br
  • 144. Java WEB Java WEB Sumário <li> Consultoria </li> <li> Desenvolvimento </li> <li> Manutenção </li> 1 JDBC </ul> 1.1 Banco de Dados Relacional 1.2 JDBC – de Lista de Conteudo 18.10.3.3 ExemploJava Database Connectivity 1.2.1 java.sql.DriverManager 1.3 Fábrica Listas de Definição de Conexões 1.4 Criar Banco de Dados também Estas listas são chamadas e Tabelas“Listas de Glossário”, uma vez que têm o formato: 1.5 Classes Javabeans – Entidades 1.6 Inserindo Dados <DL> 1.7 Fechando a Conexãoser definido <DT>termo a 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 queser definido Edition? O a é Java Enterprise 2.3 Adefinição Java Enterprise Edition plataforma 2.3.1 APIs 2.3.2 Este tipo de lista é muito utilizado para diversos efeitos de organização de páginas. Contêiners 2.3.3 <DL> Deployment de aplicações 3 Análise de ser definido <DT>termo aarquiteturas 3.1 Arquitetura Física e Arquitetura Lógica <DD>definição 3.2 Tipos de aplicações na WEB <OL> 3.3 Arquitetura MVCuma lista numerada <LI>item de para a Web 3.4 Vantagens da arquitetura MVC <LI>item 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 de JDK utilizar numerada <LI>item de uma lista 4.1.2.1 JAVA_HOME </OL> 4.2 Instalar Tomcat definido <DT>termo a ser 4.2.1 <DD>definição Tomcat utilizar Qual versão de 4.2.2 </DL> e parar o Tomcat Iniciar 4.2.2.1 [Windows] Tomcat como serviço 4.2.2.2 Saída: Tomcat como processo 4.3 Testar ser definido termo a Tomcat 4.4 Criar contexto de desenvolvimento definição 4.4.1 Estrutura de diretórios 1. item de uma lista numerada 4.4.2 Criar contexto de de uma lista numerada 2. item aplicação web 4.4.3 Configurar contexto: web.xmluma lista item de 4.4.4 Ativar contexto de uma lista numerada 3. item 4.4.5 termo a contexto Testar 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 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
  • 145. 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 longasDados o assunto tem vários tópicos, podemos utilizar índices onde os links tem a função de onde Relacional 1.1 Banco de 8 interligar osJDBC – Javaum texto eConnectivity tópicos de Database que com apenas um clique em um dos tópicos do índice o item é exibido. 1.2 8 1.2.1 java.sql.DriverManager 18.10.4.1 TAG <A> de Conexões 1.3 Fábrica <A> e </A> Criar Banco de Dados e Tabelas 1.4 Marca o início e o fim de um link. 1.5 Classes Javabeans – Entidades Atributos: Inserindo Dados 1.6 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: PreparedStatement ou Statement 1.8 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 O Cursor 1.9.3 Recurso avaçando: 15 no 1.9.4 O caminho relativo pode ser usado sempre que queremos fazer referência a um documento armazenado 16 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 21 <A Arquitetura Física e Arquitetura Lógica HREF="http://www.3way.com.br/">SITE DA 3WAY</A> 3.2 Tipos de aplicações na WEB 21 3.3 ofereceArquitetura MVC para a Web no servidor WWW da 3Way Networks. Com a mesma sintaxe, é possível 21 que um link para um documento 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 Target Atributo 4.1.1 A função do atributo target basicamente é indicar o nome de um frame na página onde um documento Instalar Java JSE SDK (JDK) 24 4.1.2ser aberto.versão de JDK utilizarvocê pode ter com ele é se o documento lincado deve ser aberto na própria Qual Outro controle que 24 deve 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 janela (target= “_blank”) do seu browser. Essa é a única função do atributo target e é basicamente tudo o Instalar Tomcat 25 outra 4.2.1 Qual versão de Tomcat utilizar 25 que precisar saber sobre ele. 4.2.2 Iniciar 25 Veja o exemplo: e parar o Tomcat 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 <a Tomcat como processo target="_self">slide 1.</a> - irá abrir na mesma página. 26 href="slide.html" 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 138 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 153 www.3way.com.br
  • 146. 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 8 Na Banco de Dados Relacional inserir nas células tudo o que normalmente faz parte do corpo de um linguagem HTML você pode 1.2 JDBC – textos, links, imagens, listas e até outras tabelas. Java Database Connectivity 8 documento, como 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 TABLE <table>...</table> 1.4 Criar Banco e oDados e Tabelasdeterminada tabela. Todas as demais de final de uma 10 Indica o início Todos os atributos de uma 1.5 Classes Javabeans Entidades 10 marcas referentes a 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 1.9.2 Pesquisando A</td> 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 O que é Java Enterprise Edition? 18 01 – BORDER -> Se presente, a tabela apresenta bordas. Se for atributo o 2.3 A plataforma Java a tabela não apresentará bordas, como o espaço 18 valor 0 (zero), não somente Enterprise Edition 2.3.1 APIs 19 usualmente reservado para bordas será liberado, permitindo a confecção de 2.3.2 Contêiners 19 tabelas mais compactas. 2.3.3 21 Exemplo: Deployment de aplicações <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: Arquitetura MVC para a Web 3.3 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. Instalar Java JSE SDK (JDK) 4.1.1 24 Exemplo: Qual versão de JDK utilizar 4.1.2 24 <table cellpadding="5"> 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 4.2.1 04 – WIDTH -> de Tomcat utilizarda tabela. Usa-se como medida o número de pixels desejado ou uma Qual versão Indica a largura 25 porcentagem da largura do documento. 4.2.2 Iniciar e parar o Tomcat 25 Exemplo: [Windows] Tomcat como serviço 4.2.2.1 25 4.2.2.2 <table width="300"> Tomcat como processo 26 4.3 Testar Tomcat 26 05 – ALIGN -> Indica a posição da tabela no documento. Pode assumir os valores LEFT ou RIGHT, indicando, 4.4 Criar contexto de desenvolvimento 26 respectivamente, quedetabela deve estar a esquerda ou a direita do documento, e com o texto fluindo à sua volta. 4.4.1 Estrutura a diretórios 26 Exemplo: Criar contexto de aplicação web 4.4.2 27 4.4.3 <table align="center"> Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 06 – BACKGROUND -> Especifica uma imagem que será utilizada como "background" da tabela. A imagem Testar contexto 29 será "TILED", isto é, repetida de forma a cobrir todo o fundo da tabela. 4.5 Bibliotecas Servlet 29 Exemplo: Testar seus servlets 4.6 30 <table border background="imagem.gif"> 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 139 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 154 www.3way.com.br
  • 147. Java WEB Java WEB 07 – BGCOLOR -> Especifica uma cor de fundo para a tabela. Sumário Exemplo: <table border bgcolor="yellow"> 1 JDBC 8 1.1 Banco de Dados -> Especifica 8 08 – BORDERCOLORRelacional uma cor para as bordas da tabela. 1.2 JDBC – Java Database Connectivity 8 Exemplo: 1.2.1 <table border bgcolor="yellow" bordercolor="blue"> java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 1.4 Criar <TR> de Dados e Tabelas Banco 10 18.10.5.1 A TAG 1.5 Classes Javabeans – Entidades 10 TR <tr>...</tr> 1.6 Inserindo e o final 11 Indica o inícioDados 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: é Java Enterprise Edition? 2.2 O que 18 1 – BGCOLOR -> Define a cor de fundo de uma linha da tabela. 2.3 A plataforma Java Enterprise Edition 18 Exemplo: APIs 2.3.1 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> de aplicações na WEB 3.2 Tipos 21 </table> 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens da arquitetura MVC 22 18.10.5.2 A Ambiente de desenvolvimento TAG <TD> 4 23 Indica um elemento (célula) da tabela, vindo do inglês "Table Data". Os elementos contém os dados 23 da 4.1 Tomcat tabela, sejam eles texto, JSE SDK (JDK) etc. 4.1.1 Instalar Java links, imagens, 24 Exemplo: Qual versão de JDK utilizar 4.1.2 24 <table> 4.1.2.1 JAVA_HOME 24 <tr> 4.2 Instalar Tomcat 25 <td>Texto 4.2.1 Qual versão deA</td> utilizar Tomcat 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 4.4.1 01 – ALIGN ->de diretóriosconteúdo da célula estará alinhado a esquerda (LEFT), centralizado (CENTER) ou a Estrutura Define se o 26 direita (RIGHT). Se omitido, o aplicação web à esquerda. alinhamento fica 4.4.2 Criar contexto de 27 Exemplo: Configurar contexto: web.xml 4.4.3 27 4.4.4 <table> contexto Ativar <tr> contexto 4.4.5 Testar <td align="ceter">Texto A</td> 4.5 Bibliotecas Servlet <td>Texto B</td> 4.6 Testar seus servlets </tr> seus JSPs 4.7 Testar </table> 4.8 Logs 4.9 Variáveis de Ambiente Seja Todos os direitos reservados a 3Way Networks 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
  • 148. Java WEB Java WEB Sumário – VALIGN -> Define se o conteúdo da célula estará alinhado com seu topo ("TOP"), centralizado 02 ("MIDDLE") ou com sua base ("BOTTOM"). Se omitido o alinhamento fica ao meio. 1 8 Exemplo: JDBC 1.1 Banco 8 <table> de Dados Relacional 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 10 </table> Javabeans – Entidades 1.6 Inserindo Dados 11 1.7 Fechando ->Conexãoa largura da célula. Pode ser expressa em pixels ou como uma porcentagem 12 a Define 03 – WIDTH da 1.8 PreparedStatement ou Statement 12 largura total da tabela. 1.9 Design Patterns 13 Exemplo: DAO – Data Access Object 1.9.1 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> Java EE tem sido tão utilizado? 2.1 Porque 17 2.2 O que é Java Enterprise Edition? 18 04 A plataforma Java Enterprise Edition – COLSPAN -> Indica quantas "células de largura" (colunas) a respectiva célula deve ocupar. ( 2.3 18 Mesclagem) 2.3.1 APIs 19 2.3.2 19 Exemplo: Contêiners 2.3.3 <table> Deployment de aplicações 21 3 Análise de arquiteturas 21 <tr> 3.1 Arquitetura Física e ArquiteturaA</td> 21 <td colspan="2">Texto Lógica 3.2 Tipos 21 </tr> de aplicações na WEB 3.3 Arquitetura MVC para a Web 21 <tr> 3.4 Vantagens da arquitetura MVC 22 <td>Texto B</td> 4 Ambiente de desenvolvimento 23 </tr> 4.1 Tomcat 23 </table> 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 05 – ROWSPAN de Indica quantas "células de altura" (linhas) a respectiva célula deve ocupar. Qual versão -> JDK utilizar 24 4.1.2.1 24 Exemplo: JAVA_HOME 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> Tomcat exibem o conteúdo de 26 4.3 Testar <tr> contexto de desenvolvimento 4.4 Criar 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 contexto TAG <TH> 4.4.5 29 TH <th>...</th> 4.5 Bibliotecas Servlet 29 Indica umseus servlets tabela. A única diferença para TD é que o elemento da 4.6 Testar 30 elemento éTestar seus JSPs identificado como HEADER (cabeçalho) da tabela. Os atributos da 4.7 31 TAG <TH> são os mesmos da TAG <TD>. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 141 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 156 www.3way.com.br
  • 149. Java WEB Java WEB Exemplo: Sumário <table> <tr> 1 JDBC 8 <th>Texto A</th> 1.1 Banco 8 </tr> de Dados Relacional 1.2 JDBC – Java Database Connectivity 8 </table> 1.2.1 java.sql.DriverManager 8 1.3 Fábrica Formal das Tabelas 9 18.10.5.4 Estrutura de Conexões 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – cellspacing="0" border="1" cellpadding="0" align="center"> 10 <TABLE width="500" Entidades 1.6 Inserindo Dados 11 <tr> 1.7 Fechando a <TD align="center" colspan="5" bgcolor="red">Tabela de Preço</TD> 12 Conexão 1.8 PreparedStatement ou Statement 12 </tr> 1.9 Design Patterns 13 1.9.1 DAO – Data Access Object bgcolor="Gray"> 13 <tr align="center" 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> Lógica Física e Arquitetura 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> e parar o Tomcat Iniciar 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 seus servlets 4.6 Testar 30 IMG <img> Testar seus JSPs 4.7 31 EsteLogs é responsável por ligar uma imagem ao documento. TAG 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
  • 150. Java WEB Java WEB Sumário Atributos de IMG: 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 Fechando a Conexão 12 lugar. Este texto também é exibido quando o cursor fica parado sobre a imagem. 1.8 PreparedStatement ou Statement 12 Exemplo: 1.9 Design Patterns 13 1.9.1 <img src="/images/imagem.gif" alt="Logotipo"> DAO – Data Access Object 13 1.9.2 Pesquisando 14 3 - ALIGN Recurso avaçando: O Cursor 1.9.3 15 1.9.4 Determina o alinhamento da imagem em relação ao texto existente na mesma linha. Os valores válidos são Alteração 16 "TOP", "MIDDLE", "BOTTOM","LEFT" e "RIGHT". 1.9.5 Exclusão 16 Exemplo: Introdução a Java Enterprise Edition 2 17 2.1 Porque Java EE tem sido tão utilizado? 17 <img que é Java Enterprise Edition? src="/images/imagem.gif" align="top"> 2.2 O 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: Deployment de aplicações 2.3.3 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,MVC da imagem. 3.4 Vantagens da arquitetura 22 Exemplo: Ambiente de desenvolvimento 4 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 src="/images/imagem.gif" border="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 7 - HSPACE 4.3 Testar a quantidade de espaço deixado em branco aos lados da imagem, de forma que ela não fique 26 DeterminaTomcat 4.4 Criar contexto de desenvolvimento da página. 26 demasiadamente próxima dos outros elementos 4.4.1 Estrutura de diretórios 26 Exemplo: 4.4.2 Criar contexto de aplicação web 27 4.4.3 <img src="/images/imagem.gif" hspace="10"> Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 29 8 - VSPACE Testar contexto 4.5 Bibliotecas Servlet de espaço deixado em branco acima e abaixo da imagem. 29 Determina a quantidade 4.6 30 Exemplo: Testar seus servlets 4.7 Testar seus JSPs 31 4.8 Logs 31 <img src="/images/imagem.gif" vspace="10"> 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 143 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 158 www.3way.com.br
  • 151. 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 DadosumTabelas e formulário, isto é, um local da página utilizado pelo usuário para enviar 10 Indica a existência de 1.5 Classes Javabeans – Entidades 10 informações para um local predeterminado (usualmente um Script CGI). 1.6 11 Exemplo: Inserindo Dados 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 type="reset" value="Reset" name="B2"> Cursor 15 <input 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 a localização (URL) do script que irá receber e interpretar os dados enviados pelo formulário. APIs 19 2.3.2 19 Exemplo: Contêiners 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 Vantagens da arquitetura MVC 22 serão passados pelo script) ou POST (envia os dados para entrada padrão do sistema operacional). 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 elementos de um formulário HTML são definidos pela tag <INPUT>. Cada tipo de elemento possui JAVA_HOME 24 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 o tipo de elemento. serviço [Windows] Tomcat como 25 4.2.2.2 Tomcat como processo 26 4.3 26 2 – NAME Testar Tomcat 4.4 Criar nome daquele elemento. contexto de desenvolvimento 26 Define o 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de 27 18.10.7.3 Campos de Texto aplicação web 4.4.3 O campo mais comum em formulários. Exibe na tela um campo de entrada de texto com apenas uma linha. Configurar contexto: web.xml 27 4.4.4 Ativar contexto 29 4.4.5 <input type="text" name="" value="" size="" maxlength=""> Testar contexto 29 4.5 Bibliotecas Servlet 29 4.6 Testar seus Texto: 30 Atributos do Campo de servlets 4.7 31 1 – Value Testar seus JSPs 4.8 Logs 31 É o valor pré-definido do elemento, que aparecerá quando a página for carregada. 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 144 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 159 www.3way.com.br
  • 152. Siga-nos também no Twitter! twitter.com/3waynet
  • 153. Java WEB Java WEB 2 - Size Sumário tamanho do elemento na tela, em caracteres. O 3 – Maxlength 1 JDBC 8 O tamanho máximo do texto contido no elemento, em caracteres. 1.1 Banco de Dados Relacional 8 1.2 JDBC – de Senha Java Database Connectivity 8 18.10.7.4 Campos 1.2.1 Tipo de campo semelhante ao anterior, com a diferença que neste caso os dados digitados são substituídos java.sql.DriverManager 8 1.3 Fábrica isso são os mais recomendados para campos que devam conter senhas. É importante salientar 9 por asteriscos, por de Conexões 1.4 nenhuma criptografia é utilizada. Apenas não aparece na tela o que está sendo digitado. Criar Banco de Dados e Tabelas 10 que 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 Patterns 13 18.10.7.5 Campos de Seleção 1.9.1 Utilizado– Data Access de múltipla escolha, onde o usuário pode marcar mais de uma opção. DAO para campos Object 13 1.9.2 Pesquisando 14 1.9.3 <input type="checkbox" name="" value="" checked> Recurso avaçando: O Cursor 15 1.9.4 Alteração 16 Atributos: Exclusão 1.9.5 16 1 – Value Introdução a Java Enterprise Edition 2 17 O valor queJava EE tem sido servidor quando o formulário for submetido, no caso do campo estar marcado. 2.1 Porque será enviado ao 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 inicial do elemento. Quando presente, o elemento já aparece marcado. APIs 19 2.3.2 Contêiners 19 18.10.7.6 Campos de Escolha 2.3.3 Deployment de aplicações 21 Utilizado para arquiteturasmúltipla escolha, onde o usuário pode marcar apenas uma opção. Para agrupar 3 Análise de campos de 21 vários elementos desteFísica e Arquitetura Lógica do 3.1 Arquitetura tipo, fazendo com que eles sejam exclusivos, basta atribuir o mesmo nome a todos 21 grupo. Possui os mesmos atributosWEB 3.2 Tipos de aplicações na do Campo de Seleção. 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 4.1.2 Exibe na versão deselect list. Qual tela uma JDK utilizar 24 4.1.2.1 JAVA_HOME 24 <select name=""> 4.2 Instalar Tomcat 25 4.2.1 Qual<option value="">texto</option> versão de Tomcat utilizar 25 </select>parar o Tomcat 4.2.2 Iniciar e 25 4.2.2.1 [Windows] Tomcat como serviço 25 18.10.7.8 Campos com Múltiplas Linhas 4.2.2.2 Tomcat como processo 26 É a Testar Tomcat 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 26 o parâmetro multiple, exibe na tela uma combo box. Caso contrário, exibe na tela uma select list. 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 <select name="" aplicação web size="" multiple> 4.4.2 Criar contexto de 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: Bibliotecas Servlet 4.5 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 145 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 161 www.3way.com.br
  • 154. 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 – do tipo option acrescenta uma linha ao select; Java Database Connectivity 8 Cada item 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 aquele item. Não é definido por um parâmetro, mas pelo texto que fica entre12 Valor a ser exibido para as 1.8 PreparedStatement ou Statement 12 tags <option> e </option>. 1.9 Design Patterns 13 1.9.1 Os Atributos da Access Object serve tanto para os Campos de Lista ou Menu quanto para os Campos com DAO – Data TAG <SELECT> 13 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 normalmente para ativar funções de scripts client-side (JavaScript, por exemplo). Sem essa Exclusão 16 2 Introduçãoefeito algum. a Java Enterprise Edition 17 utilização, não produz 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 O que é Java Enterprise name="" 18 <input type="button" Edition? 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 que aparecerá no corpo do botão. Deployment de aplicações 21 3 Análise de arquiteturas 21 3.1 Arquitetura Física e 21 18.10.7.10 Upload de Arquivos Arquitetura Lógica 3.2 Tipos de do browser WEB 21 Exibe na telaaplicações naum campo de texto e um botão, que ao clicado abre uma janela para localizar um 3.3 Arquitetura MVC para a Web de componente, o formulário deverá utilizar o método POST e ter o 21 arquivo no disco. Para utilizar este tipo 3.4 Vantagens da valor multipart/form-data. 22 parâmetro enctype com oarquitetura MVC 4 Ambiente de desenvolvimento 23 <input type="file" name="" size=""> 4.1 Tomcat 23 4.1.1 Instalar Java JSE SDK (JDK) 24 Atributo: Qual versão de JDK utilizar 4.1.2 24 1 – Size 4.1.2.1 JAVA_HOME 24 O tamanho Tomcat de texto exibido. 4.2 Instalar do campo 25 4.2.1 Qual versão de Tomcat utilizar 25 18.10.7.11 Fieldset parar o Tomcat 4.2.2 Iniciar e 25 4.2.2.1 As Tag de Fieldset são usadosserviço [Windows] Tomcat como para dividir controles similares de formulários em grupos. 25 Atributos: Tomcat como processo 4.2.2.2 26 4.3 Testar Tomcat 26 1 – Legend Criar contexto de desenvolvimento 4.4 26 4.4.1 Título da FieldSet; 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> éservlets em conjunto com elementos de formulário, propiciando uma maior facilidade 30 utilizada de 4.6 Testar seus acesso a esses elementos. 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 146 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 162 www.3way.com.br
  • 155. Java WEB Java WEB 18.10.8 Outras Tags Sumário 18.10.8.1 - Meta informações <meta> 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 JDBC como Altavista e vários outros, a encontrar o seu site mais rapidamente. Esses título, palavras-chave8 1.1 Banco as informações que códigos organizamde Dados Relacional os sistemas de busca precisam para mostrar a 1.2 JDBC – resultado de busca feita por e descrição do seu 8 sua página em um Java Database Connectivity um usuário. 1.2.1 As tags ficam entre os comandos <head> e </head>, que ficam bem no topo java.sql.DriverManager 8 site. 1.3 Fábrica de Conexões 9 da página. Eles podem ser colocados em todas as páginas do seu site, somente nas 1.4 Criar Bancona página inicial. de Dados e Tabelas 10 principais, ou ainda só 1.5 Classes Javabeans – Entidades 10 Esta outra meta é usada para informar quem é o autor da página, você pode 1.6 Inserindo Dados 11 por exemplo 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 – aluno@3way.com.br"> 1.9 Design Patterns 13 1.9.1 Insere a – Data Access página que aparecerá em alguns sistemas de buscas. DAO descrição da Object 13 1.9.2 Pesquisando 14 Pequena porque esta deve conter por volta de 255 caracteres, ou seja, uma breve 1.9.3 Recurso 15 descrição. Exemplo: avaçando: O Cursor 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 indicar a alguns sites de busca palavras chave (keywords) que podem ser usadas 2.1 Porque Java EE tem sido 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 name= "keywords" content="Palavras-chave sempre separadas por vírgula"> 19 APIs 2.3.2 Contêiners 19 18.10.8.2 - Frames 2.3.3 Deployment de aplicações 21 Possibilita, de arquiteturas se determine uma área da tela para ser a página principal e outras áreas para 3 Análise por exemplo, que 21 menus ou links. Isso usado de maneira coordenada pode ser de grande ajuda na navegabilidade pelas páginas 21 de 3.1 Arquitetura Física e Arquitetura Lógica seu site. O primeiro aplicações na WEB uma estrutura usando frames é definir o Frameset ou conjunto de frames, passo para se criar 3.2 Tipos de 21 que indica como será estruturado a Web 3.3 Arquitetura MVC para cada quadro na tela em termos de linhas (rows) e colunas (cols), e quais páginas 21 deverão serVantagens da arquitetura MVC apresentadas em cada um desses quadros. 3.4 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 parteTomcat da tela. 4.1 23 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK <frameset cols="100 , * "> utilizar 24 <frame src= menu.html name = "area-menu"> 4.1.2.1 JAVA_HOME 24 FramesInstalar Tomcat <frame src= apresentacao.html name="area-principal"> ou quadros 4.2 25 </frameset> permitem a divisão da Tomcat utilizar 4.2.1 Qual versão de 25 4.2.2 de exposição do o Tomcat 25 tela Iniciar e parar 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 de desenvolvimento 4.4 Criar contexto 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 147 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 163 www.3way.com.br
  • 156. 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 é um recurso em desuso, embora seja muito funcional. Ele é muito prático pois cria uma janela java.sql.DriverManager 8 1.3 Fábrica de colocar uma página de html. Basta você colocar o seguinte código aonde deseja que a sua 9 onde você quiser paraConexões 1.4 do Iframe Banco de Dados e Tabelas Criar apareça: 10 janela 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 scrolling=auto></iframe> 12 height=”150”Conexão 1.8 PreparedStatement ou Statement 12 1.9 Design Patterns 13 Onde: 1.9.1name:DAO nome da janela, ele será usado caso você queira criar links que abram dentro do iframe, usando o 13 é o – Data Access Object 1.9.2 Pesquisando de links <a></a>. 14 atributo target da TAG 1.9.3src: é a página que será aberta dentro do iframe. Recurso avaçando: O Cursor 15 1.9.4frameborder: borda do frame. Alteração 16 1.9.5width Exclusão largura e altura do iframe, respectivamente. 16 e height: 2 - scrolling: barra dearolagem. Introdução Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? 17 2.2 No caso de colocar um iframe Edition? você deve fazer o upload do arquivo html e das figuras (se tiver) e O que é Java Enterprise num post, 18 2.3 A plataforma acima no post Edition 18 depois colocar o código Java Enterprise alterando os dados como você preferir. Lembre-se que o HTML trabalha 2.3.1 com referências. Todos os arquivos vão ficar no mesmo nível, portanto não utilize nome de pastas para19 APIs sempre 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 Arquitetura Física e Arquitetura 21 18.11 Cascading 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 parada WEB a mesma conveniência de um só lugar para definir os a arquitetura MVC 3.4 Vantagens 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 SDK (JDK) 4.1.1 Instalar Java código separado que amplia as capacidades do HTML, para afetar a 24 permitindo Qualvocê redefina outilizar como as tags HTML funcionam. que versão de JDK modo 4.1.2 24 aparência das tags 24 4.1.2.1 JAVA_HOME 18.11.2 Usando CSSTomcat HTML em uma única25 4.2 Instalar com HTML O melhor da folha Tomcat utilizarcascata é que ela é incrivelmente fácil de de estilo em 4.2.1 Qual versão de 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 25 todo um site da WEB. 4.2.2.1 Podemos definir regras que dizem a uma tag HTML especifica o seu [Windows] Tomcat como serviço 25 conteúdo, ou podecomo processo 4.2.2.2 Tomcat criar regras genéricas e, em seguida, aplicá-las às TAGS como 26 quiser. Existem três etapas na regras da CSS. 4.3 Testar Tomcat 26 1 - Criar contexto de desenvolvimento uma TAG HTML se chama seletor. Seletor HTML: A parte de texto de 4.4 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 148 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 164 www.3way.com.br
  • 157. 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 12pt times;} 8 #objeto{font bold 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 signifique Embora a CSS Conexões 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 Classes Javabeans – Entidades 10 outros estilos 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 style="color:yellow">CSS</h2> Java Enterprise Edition 17 2.1 Porque Java <BR> sido tão utilizado? EE tem 17 2.2 O que é Java<P style="color:White"> Enterprise Edition? 18 2.3 A plataforma HTML <br> Edition Java Enterprise 18 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 no Escopo da Página 27 18.11.2.2 Estilos contexto de aplicação web 4.4.3 A principal utilização da web.xml Configurar contexto: CSS é para definir as regras de todo um documento. Para fazer isso, você deve 27 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 do acréscimo de estilo dessa forma possam parecer idênticos ao acréscimo dos 4.5 Bibliotecas Servlet 29 estilos diretamente emservlets uma TAG HTML, a colocação dos estilos em uma localização comum permite alterar 30 os 4.6 Testar seus estilos de um documento a partir de um único lugar. Veja o mesmo exemplo acima como ficaria: 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 149 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 165 www.3way.com.br
  • 158. 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> Object Access Pesquisando <P> Recurso avaçando: O Cursor HTML<br> Alteração HTML <br> Exclusão </P> </body> Introdução a Java Enterprise Edition </html> Java EE tem sido tão utilizado? Porque 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 150 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 166 www.3way.com.br
  • 159. 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 a folha de estilos. é muito f&aacute;cil. linkar e Tabelas Classes Javabeans – Entidades <br> Inserindo Dados <br> Fechando a Conexão width="300" cellspacing="2" cellpadding="2" border="0"> <table 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> é Java Enterprise Edition? O que 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 Declaração de Estilos 2.3.1 APIs 19 2.3.2 Declaração de estilos é o fragmento de uma regra CSS dentro dos colchetes { }. A declaração CSS compõe-se 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 de arquiteturas exemplo: 3 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 } Tomcat 4.1 23 4.1.1 H1{Instalar Java JSE SDK (JDK) 24 4.1.2 Qualfont-size : utilizar versão de JDK 36pt; 24 font-family : verdana,arial; 4.1.2.1 JAVA_HOME 24 text-decoration : underline; 4.2 Instalar Tomcat 25 4.2.1 Qualtext-align : center; 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 { contexto 4.4.4 Ativar 29 background-color : #006600; 4.4.5 Testar contexto 29 font-family 4.5 Bibliotecas Servlet : arial; 29 color servlets : White; 4.6 Testar seus 30 } Testar seus JSPs 4.7 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 151 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 167 www.3way.com.br
  • 160. 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 1.2.1 p {font-size: 12px;} java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 O seletorBanco de Dados e Tabelas 1.4 Criar é p (elemento HTML parágrafo) e a regra CSS escrita determina que os parágrafos terão uma fonte 10 de tamanho 12px. Javabeans – Entidades 1.5 Classes 10 1.6 Inserindo Dados 11 18.11.4.1 Seletores de Classes 1.7 Fechando a Conexão 12 Seletor tipo classe tem uma abrangência mais ampla. É um seletor cujo 1.8 PreparedStatement ou Statement 12 nome você Design Patterns ser aplicado a qualquer elemento HTML. A sintaxe para "inventa" e pode Quando se trabalha o 1.9 13 este tipo de seletor é um nome (nome da classe) precedido de um . (ponto) O nome 1.9.1 DAO – Data Access Object CSS com seletores, 13 pode conter letras de a-z, A-Z, números de 0-9, hífen, ou caracter de escape. 1.9.2 Pesquisando 14 significa que todos os Caracteres Recurso avaçando: Obem como qualquer caracter Unicode de código Unicode 161-255, Cursor 1.9.3 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 16 1.9.5 Exclusão .minhaclasse Java Enterprise Edition 2 Introdução a {color: #FF0000;} 17 terá o 2.1 Porque Java EE tem sido tão utilizado? comportamento 17 18.11.4.2 Sintaxe é Java Enterprise Edition? de Seletores Ultilizada para Definição 2.2 O que 18 descrito no CSS do 18 A sintaxe de umaJava Enterprise Edition 2.3 A plataforma regra css obedece o seguinte padrão: 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 22 As Vantagens da arquitetura MVC em CSS possuem duas dimensões: a propriedades de formatação 4 Ambiente de desenvolvimento visual (o efeito dos códigos). 23 dimensão textual (o código) e a dimensão 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 utilizada para a configuração de trechos de parágrafos; 25 <span></span> - é 4.2.1 <strong></strong> Tomcat utilizar HTML para deixar o texto em negrito; Qual versão de - é ultilizada no 25 4.2.2 <p></p> - e parar o Tomcat Iniciar marcação de parágrafos. 25 4.2.2.1 [Windows] Tomcat como serviço 25 4.2.2.2 Essas configurações na maioria das vezes são setadas para alteração no visual de textos e alteração 26 Tomcat como processo no 4.3 Testar Tomcat 26 posicionamento de determinadas partes do documento. 4.4 Criar contexto de desenvolvimento 26 4.4.1 EstruturaUnidades de diretórios 26 18.11.5.2 Tabela de 4.4.2 As unidades de medida de comprimento CSS referem-se a medidas na horizontal ou na vertical, em sentido Criar contexto de aplicação web 27 4.4.3amplo, em qualquer direção. Configurar contexto: web.xml 27 mais 4.4.4 O formatocontexto Ativar para declarar o valor de uma unidade de medida CSS é um número com ou sem ponto decimal 29 4.4.5 Testar contexto do sinal '+' (mais) ou do sinal '-' (menos), sendo o sinal '+' (mais) o valor default e 29 imediatamente precedido 4.5 Bibliotecas Servlet 29 imediatamente seguido por uma unidade identificadora válida: p, ex, px, em, deg, etc... A unidade identificadora é 4.6 Testar seus servlets 30 opcional quando se 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 152 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 168 www.3way.com.br
  • 161. 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 apropriadasJDBC ajustes de uso em diferentes tipos de mídia. (p. ex., de uma tela de para pela aplicação de 8 1.1 Banco impressora laser). monitor para uma de Dados Relacional 1.2 usuário, eles serão 8 O JDBC – Java Database Connectivity valor é tomado em relação: 1.2.1 java.sql.DriverManagerfonte ('font-size') herdada; em: ...ao tamanho da convertidos para o 8 1.3 Fábrica de Conexões x (xis) da fonte herdada; 9 ex: ...a altura da letra valor mais próximo 10 1.4 Criar...ao dispositivo (midia) de exibição; Banco de Dados e Tabelas px: suportado, isso pode10 1.5 Classes Javabeans – Entidades %: ... a uma medida previamente definida. 1.6 Inserindo Dados tornar-se desastroso11 Unidade absoluta - é aquela que não esta referenciada a qualquer outra 1.7 Fechando a Conexão unidades de medida de comprimento definidas nos unidade e nem é herdada. São para um layout. 12 1.8 PreparedStatement ouem fim são os conhecidos: centímetros, polegadas Statement 12 sistemas de medidas pela física e 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 pt -Pesquisando 14 point :1/72 in; 1.9.3 pc -Recurso avaçando: 1/6Cursor 15 pica :12 points ou O in; 1.9.4 mmAlteração :1/10 cm; 16 - milímetro 1.9.5 cm Exclusão 16 - centímetro :1/100 m; 2 Introdução a Java Enterprise Edition 17 in - 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: 1.5em; } plataforma Java Enterprise Edition 18 2.3.1 { APIs 19 h4 margin: 2ex; } 2.3.2 { font-size: 14px; } Contêiners 19 p 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} Arquitetura Lógica 21 margin: 1pc; e 3.2 h2 { Tipos de aplicações na WEB 21 font-size: 4mm; } 3.3 p.classe { padding: 0.3cm; } Arquitetura MVC para a Web 21 3.4 h5.classe { padding: 0.5in; } Vantagens da arquitetura MVC 22 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 Tomcat é o menor 4.2 considerações teóricas a mais simplista definição de pixel que encontrei é esta: 25 4.2.1elemento em um de Tomcat utilizar Qual versão Considere um dispositivo de exibição construido com uma densidade de 25 90 4.2.2 dispositivoede Iniciar 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 exibição, ao qual Tomcat para pixel é igual a um ponto no citado dispositivo. Daí pode-se concluir que 1 pixel 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.xmlunidade de medida de comprimento em referencia-se ao tamanho 27 A 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 153 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 169 www.3way.com.br
  • 162. 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 Banco de Dados Relacional { font-size: 1.2em } 1.1 8 1.2 JDBC – Java Database Connectivity 8 1.2.1 font-size de <h1> será 20% maior do que o tamanho das letras herdado por <h1>, exemplo: se h1 estiver 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 1.9.1 Valores em percentagem são relativos a um outro valor anterior declarado. Este valor anterior há que estar DAO – Data Access Object 13 bem definido e em geral esta definição está em uma determinada propriedade do mesmo elemento, 14 na 1.9.2 Pesquisando propriedade do elemento "pai" (por exemplo: uma medida CSS de comprimento) ou mesmo no contexto geral 15 da 1.9.3 Recurso avaçando: O Cursor formataçãoAlteração (por exemplo: a largura do bloco de conteúdo). 1.9.4 16 1.9.5 Exclusão 16 2 Introdução a Java Enterprise Edition 17 p { font-size: 10px } 2.1 Porque Java EE tem120% tão utilizado? sido } 17 p { line-height: 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 constituem Contêiners os textos dentro dos elementos HTML. As propriedades básicas para fontes são as listadas abaixo: 19 2.3.3 Deployment de aplicações 21 color:...................cor da fonte 3 Análise de arquiteturas fonte 21 font-family:.........tipo de 3.1 Arquitetura Física e Arquitetura Lógica 21 font-size:.............tamanho de fonte 3.2 Tipos de aplicações na WEB 21 font-style:...........estilo de fonte 3.3 Arquitetura MVC para a maiúsculas de menor altura Web 21 font-variant:........fontes 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 para as propriedades da fonte: 24 Valores válidosJava JSE SDK (JDK) 4.1.2 color: versão de JDK utilizar Qual 24 4.1.2.1 JAVA_HOME 24 1. código hexadecimal: #FFFFFF 4.2 Instalar Tomcat rgb(255,235,0) 25 2. código rgb: 4.2.1 Qualnome da cor: red, blue, green...etc versão de Tomcat utilizar 25 3. 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 font-family: Tomcat como serviço [Windows] 25 4.2.2.2 Tomcat como processo 26 1. family-name: define-se pelo nome da fonte, 4.3 Testar Tomcat 26 p. ex:"verdana", "helvetica", "arial", etc. 4.4 Criargeneric-family: define-se pelo nome genérico, contexto de desenvolvimento 26 2. 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 font-size: Configurar contexto: web.xml 27 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 Logsx-large 31 6. 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 154 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 170 www.3way.com.br
  • 163. 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 de Dados Relacional 11.% 1.2 JDBC – Java Database Connectivity 1.2.1 font-style: java.sql.DriverManager 1.3 Fábrica de Conexões 1. normal: fonte normal na vertical 1.4 Criaritalic: fonte inclinada 2. Banco de Dados e Tabelas 1.5 Classes Javabeans obliqua 3. oblique:fonte – Entidades 1.6 Inserindo Dados 1.7 Fechando font-variant: 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 font-weight: Pesquisando 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 a Java Enterprise Edition 4. lighter 2.1 Porque Java EE tem sido tão utilizado? 5. 100 2.2 O6. 200 Java Enterprise Edition? que é 2.3 A7. 300 plataforma Java Enterprise Edition 2.3.1 APIs 400 8. 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> de desenvolvimento contexto 4.4.1 Estrutura de diretórios 4.4.2 Criar contexto de aplicaçãona Fonte Purisa,<br> <div>Texto web 4.4.3 Configurar contexto: web.xml de 50px<br> tamanho 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 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
  • 164. 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 4.2.1 #cde = versão de Tomcat utilizar Qual #ccddee 25 #49c = #4499cc Tomcat 4.2.2 Iniciar e parar o 25 4.2.2.1 [Windows] Tomcat como serviço 25 é do como desta apostila detalhar o código hexadecimal, contudo ressaltamos que os dezesseis 4.2.2.2 NãoTomcatescopoprocesso 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 geral ser usada qualquer combinação deles. Assim: #FFDDHH não define uma cor, pois H não é válido. 4.4 Criar contexto de desenvolvimento 26 4.4.1 Estrutura de diretórios 26 4.4.2 27 Definir umaCriarpelo seu código rgb web cor contexto de aplicação 4.4.3 RGB é abreviatura para: web.xml Configurar contexto: 27 r =Ativar contexto red (vermelha) 4.4.4 29 green (verde) 4.4.5 g =Testar contexto 29 b =Bibliotecas Servlet blue (azul) 4.5 29 4.6 Testar seus servlets 30 Assim o código JSPs 4.7 Testar seus rgb(xxx, yyy, zzz) indica uma cor obtida com a mistura de uma quantidade xxx de vermelho 31 com yyy de Logs e com zzz de azul. Duas são as maneiras de se definir a quantidade de cada uma das três cores: 31 verde 4.8 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 156 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 172 www.3way.com.br
  • 165. 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 cor usando o nome da cor. Os nomes de cor válidos são os listados nas 1.8 PreparedStatement ou 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 O que é Java Enterprise Edition? #FF00FF 2.2 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: Criar contexto de desenvolvimento 4.4 26 4.4.1 p {color: aqua;} Estrutura de diretórios 26 {background-color: web 4.4.2 divCriar contexto de aplicaçãoteal;} 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 para CSS preconizam a definição da cor baseado nas cores adotadas pelo sistema Testar contexto 29 operacionalBibliotecas Servlet de unidade de definição de cor denominado System Colors está em desuso e não do usuário. Este tipo 4.5 29 deverá constar dasseus servlets futuras recomendações CSS3. Trata-se de uma lista de nomes de cores válidas à semelhança 30 da 4.6 Testar listagem de Testarpor palavra-chave e que se refere a áreas do sistema operacional. cores seus JSPs 4.7 31 As cores previstas são: 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 157 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 173 www.3way.com.br
  • 166. 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 8 WindowText Dados Relacional 1.2 JDBC – Java Database Connectivity 8 1.2.1 Embora os valores CSS sejam case insensitives recomenda-se usar a grafia com letras maiúsculas 8 java.sql.DriverManager e 1.3 Fábrica de Conexões das cores de sistema por razões de legibilidade. Exemplos: 9 minúsculas ao se escrever o nome 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 propriedades 13 um elemento HTML. As Access Object para as bordas são as listadas abaixo: 1.9.2 Pesquisando 14 1.9.3 border-width:...............espessura da borda Recurso avaçando: O Cursor 15 1.9.4 border-style:................estilo da borda Alteração 16 1.9.5 border-color:................cor da borda Exclusão 16 2 Introdução a Java Enterprise Edition 17 2.1 Porque Java EE tem sido tão utilizado? superior 17 border-top-width:...........espessura da borda 2.2 O que é Java Enterprise Edition? 18 border-top-style:............estilo da borda superior 2.3 A plataforma Java Enterpriseborda superior Edition 18 border-top-color:............cor da 2.3.1 APIs 19 2.3.2 border-right-width:........espessura da borda direita Contêiners 19 2.3.3 border-right-style:..........estilo da borda direita Deployment de aplicações 21 3 Análise de arquiteturas da borda direita 21 border-right-color:..........cor 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 da borda inferior 21 border-bottom-style:.........estilo 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:...........estilo da borda esquerda Instalar Java JSE SDK (JDK) 24 4.1.2 border-left-color:...........cor da borda esquerda Qual versão de JDK utilizar 24 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 4.2.2.1 border-bottom:..maneira abreviada para todas as propriedades da borda inferior [Windows] Tomcat como serviço 25 4.2.2.2 border-left:.........maneira abreviada para todas as propriedades da borda esquerda 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 válidos para as propriedades das bordas Estrutura de diretórios 26 Valores 4.4.2 color: contexto de aplicação web Criar 27 4.4.3 Configurar contexto: web.xml 27 1. código hexadecimal: #FFFFFF 4.4.4 Ativar contexto rgb(255,235,0) 29 2. código rgb: 4.4.5 Testar contexto red, blue, green...etc 29 3. nome da cor: 4.5 Bibliotecas Servlet 29 4.6 Testar seus servlets 30 style: 4.7 Testar seus JSPs 31 1. none: nenhuma borda 4.8 Logshidden: equivalente a none 31 2. 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 158 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 174 www.3way.com.br
  • 167. 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 relevo 8 9. inset: borda em baixo 1.3 Fábrica de Conexões alto relevo 9 10.outset: borda em 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 width: 1.6 Inserindo borda fina 11 1. thin: Dados 1.7 Fechando a Conexãomédia 12 2. medium: borda 1.8 PreparedStatement ou Statement 12 3. thick: borda grossa 1.9 Design Patterns medida reconhecida pelas CSS (px, pt, em, cm, ...) 13 4. length: uma 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 model (modelo das caixas) em CSS, descreve os boxes (as caixas) geradas pelos elementos HTML. O Recurso avaçando: O Cursor 15 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 ilustrar este conceito, considere um cabeçalho de nível 1 e um parágrafo, conforme marcação a seguir: Exclusão 16 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 background-color:#FFCCCC; } plataforma Java Enterprise Edition 18 p { 2.3.1 APIs 19 2.3.2 A seguir acresentamos uma regra CSS para a largura dos elementos : Contêiners 19 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 passo acrescentamos uma regra CSS para as bordas dos elementos: 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 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 #FF0000; 26 border:10px solid 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 seus servlets 30 } 4.7 Testar seus JSPs 31 4.8 Logs acresentamos uma regra CSS para os espaçamentos dos elementos: 31 A seguir 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 159 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 175 Sumário www.3way.com.br
  • 168. 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 acrescentamosObject DAO – Data Access uma regra CSS para as margens dos elementos: 13 1.9.2 Pesquisando 14 1.9.3 Recurso { 15 h1 avaçando: O Cursor 1.9.4 Alteração background-color:#99CC99; 16 1.9.5 Exclusão width:400px; 16 2 Introdução a Java Enterprisesolid #FF0000; 17 border:10px Edition 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 solid #0000FF; 21 border:5px determinado 3.1 Arquitetura padding:10px; Lógica Física e Arquitetura 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 Elementos HTML 23 18.11.5.7 Aplicando Estilos aos Principais 4.1 Tomcat 23 Para aplicar estilos aos elementos HTML, como já dito, é so declarar no 4.1.1 a TAG em que você quer (JDK) as propriedades do CSS. Usando as classes, Instalar Java JSE SDK definir 24 seletor 4.1.2 pode Qual versão de JDK utilizar 24 você inventar um nome ao seletor e atribuir propriedades CSS ao mesmo. 4.1.2.1 24 Exemplo: JAVA_HOME 4.2 Instalar Tomcat 25 4.2.1 .minhaClasse{ color:#red; font-style: bold; } Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 4.2.2.1 Para que as propriedades definidas no classe minhaClasse tenham efeito, [Windows] Tomcat como serviço 25 4.2.2.2 colocar o nome da classe no atributo class de qualquer elemento HTML. Exemplo: Tomcat como processo 26 devemos 4.3 Testar Tomcat 26 4.4 26 <p Criar contexto de desenvolvimento class=”minhaClasse”> Imprime esse texto na cor Vermelha e em negrito</p> 4.4.1 <strong class=”minhaClasse”>Outro elemento com as mesmas propriedades</strong>26 Estrutura de diretórios 4.4.2 Criar contexto de aplicação web 27 4.4.3 Construindo nossos documentos HTML, em determinado momento queremos aplicar um bloco 27 Configurar contexto: web.xml de 4.4.4 Ativar contexto elemento. Quando esse tipo de definição se faz essencial é necessário incluirmos 29 propriedades CSS a um único 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 seusid=”corpo”>...</div> JSPs 31 <div 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 160 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 176 www.3way.com.br
  • 169. Java WEB Java WEB Aplicando as propriedades CSS ao elemento: Sumário #corpo{ 1 JDBC 8 border-top:2px dotted #FF00FF; 1.1 Banco de Dados Relacional Verdana; 8 font-family: 1.2 JDBC – Java Database #C0C0C0; Connectivity 8 color: 1.2.1 java.sql.DriverManager 2px; 8 padding: 1.3 Fábrica de Conexões 9 } 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans – Entidades 10 De acordo como definimos o seletor acima, as propriedades só irão ser aplicadas para o elemento no qual 1.6 11 seu ID for Inserindo Dados 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 propriedades no CSS capaz de estilizar a barra de rolagem do Internet Explorer. No Ópera este DAO – Data Access Object 13 1.9.2 não está ativado por padrão, nem há fixação disponíveis na interface do Pesquisando 14 recurso 1.9.3 Recurso avaçando: O Cursor 15 usuário. O usuário tem que adicionar uma linha ao seu arquivo opera6.ini. Na "[User 1.9.4 Alteração linha 16 Prefs]", a a seguir deve ser adicionado: Outros browsers não 1.9.5 Exclusão 16 Enable Scrollbar Colors=1 suportam esse 17 2 Introdução a Java Enterpriseque interfira diretamente com o navegador do Edition Qualquer prática de estilização recurso. 2.1 Porque Java EE tem sido tão utilizado? 17 usuário, pode estar dificultando acessibilidade ou conflitando com preferências 2.2 O que é use todo seu esforço 18 pessoais, portanto, Java Enterprise Edition? e poder de persuasão no sentido de 2.3 A plataforma Java Enterprise Edition pois é uma tecnologia particular e 18 convencer seu cliente a não adotar esta prática 2.3.1ser evitada. APIs 19 deve 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 list Tomcatas características (valores) das listas HTML. As propriedades list são as listadas Qual versão de define utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 abaixo: 4.2.2.1 [Windows] Tomcat como serviço 25 list-style-position..........onde o marcador da lista é posicionado; 4.2.2.2 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 Ativar contexto 29 list-style-position: 4.4.5 Testar contexto marcador fora do alinhamento do texto 29 1. outside: 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 161 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 178 www.3way.com.br
  • 170. Java WEB Java WEB 2. disc: círculo (bolinha cheia) 3. circle: circunferência (bolinha vazia) 4. square: quadrado cheio 1 JDBC decimal: números 1, 2, 3, 4, ... 8 5. 1.1 Banco de Dados Relacional 8 6. 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 de Conexões letra minúscula a, b, c, d, ... 9 9. lower-alpha: 1.4 Criar Banco de Dados letra maiúscula A, B, C, D, ... e Tabelas 10 10. upper-alpha: 1.5 Classes Javabeans – Entidades 10 11. 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 Patterns 13 15. armenian 1.9.1 DAO16.Data Access Object – georgian 13 1.9.2 Pesquisando 14 17. cjk-ideographic 1.9.3 Recursohiragana O Cursor 15 18. avaçando: 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 é Java Enterprise Edition? 18 18.11.5.10 Marcadores Customizados 2.3 A plataforma Java Enterprise Editioné possível customizar os marcadores das listas HTML usando uma 18 Usando a propriedade list-style-image 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 22 Exemplos: Vantagens da arquitetura MVC 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> Tomcat utilizar versão de 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 162 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 179 Sumário www.3way.com.br
  • 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 18.11.5.11 Hyperlinks Access Object 1.9.1 DAO – Data 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 : pseudoEE tem {propriedade: valor} 2.1 Porque Java classe 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 para links localizados em diferentes lugares em uma mesma página. No último item deste tutorial 2.3.1 APIs 19 "Diferentes Contêiners estilos de links em uma mesma página web" veremos este efeito. 2.3.2 19 2.3.3 Deployment de aplicações 21 seletor.class: pseudo-class { propriedade: valor } 3 Análise de arquiteturas 21 3.1 Arquitetura Física e Arquitetura Lógica 21 SãoTipos de aplicações na WEB links: quatro as pseudo classes dos 3.2 21 a:link.........define o estilo do link no estado inicial; 3.3 Arquitetura MVC para a Web 21 a:visited....define arquiteturalink visitado; o estilo do MVC 3.4 Vantagens da 22 a:hover.....definedesenvolvimento 4 Ambiente de o estilo do link quando passa-se o mouse sobre ele; 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:versão de JDK utilizar Qual 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 } e parar o Tomcat 4.2.2 Iniciar 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{ de aplicação web 4.4.2 Criar contexto 27 color:#00FF00; 4.4.3 Configurar contexto: web.xml 27 } contexto 4.4.4 Ativar 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 163 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 180 www.3way.com.br
  • 172. Java WEB Java WEB 18.11.5.12 Botões Sumário efeitos CSS em botões são gerados a partir de uma classe. Exemplo: Os 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 Física e Arquitetura Lógica 21 campo; 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; - define o tamanho da fonte; MVC para a Web 21 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:versão de JDK utilizar Qual 24 4.1.2.1 JAVA_HOME 24 4.2 Instalar Tomcat 25 .select { 4.2.1 Qual versão border:1px solid #000000; - define a propriedade da borda ( não de Tomcat utilizar 25 4.2.2 Iniciar e pararnoTomcat 25 aceito o 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 contexto de desenvolvimento 26 } 4.4.1 Estrutura de diretórios 26 4.4.2 Criar contexto de aplicação web 27 18.11.5.15 Manipulando Cursores 4.4.3 Usando o CSS contexto: web.xml o cursor em algumas partes do documento ou em seu conteúdo geral. Configurar é possível alterar 27 4.4.4 Ativar contexto 29 Abaixo segue 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 seus 30 crosshair (cruz) servlets 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 164 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 181 www.3way.com.br
  • 173. 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 ne-resize (seta que aponta ao nordeste) 1.1 Banco de Dados Relacional nw-resize (seta que aponta ao noroeste) 1.2 JDBC – Java pointer (mão) Database Connectivity 1.2.1 s-resize (seta que aponta para baixo) java.sql.DriverManager 1.3 Fábrica de que aponta se-resize (seta Conexões para o sudeste) 1.4 Criar (seta de aponta Tabelas sw-resizeBanco queDados e para o sudoeste) 1.5 textClasses Javabeans – Entidades (I-beam) 1.6 Inserindo Dados w-resize (seta que aponta à esquerda) 1.7 Fechando a areia) wait (relógio deConexão 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 type="text/css"> 2 Introdução a Java Enterprise Edition 2.1 Porque Java EE tem sido tãobody {cursor: crosshair} 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 partes do documento: 3.1 Arquitetura Física e Arquitetura Lógica 3.2 Tipos de aplicações na WEB 3.3 Arquitetura MVC para a Web <html> 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 style="cursor: crosshair">crosshair</p> (JDK) 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 utilizar <p style="cursor: ne-resize">ne-resize</p> 4.2.2 Iniciar e parar o Tomcat style="cursor: n-resize">n-resize</p> <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 style="cursor: help">help</p> <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> de aplicação web contexto 4.4.3 Configurar contexto: web.xml 4.4.4 Cursores personalizados: Ativar 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 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
  • 174. Java WEB Java WEB Sumário body {cursor : url("qualquer_imagem.cur")} </style> </head> JDBC <body> Banco de Dados Relacional </body> JDBC – Java Database Connectivity </html> 1 8 1.1 8 1.2 8 1.2.1 java.sql.DriverManager 8 1.3 Fábrica 9 18.11.5.16 Tabelas de Conexões 1.4 Simples Banco de Dados e Tabelas Criar 10 Borda 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: 1.9.1 DAO – Data Access #FFFFF0; Object 13 1.9.2 } Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 table.comBordaSimples td – define propriedades para a tag td da tabela 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 1px solid black; 19 border: 2.3.3 Deployment de aplicações solid black; - propriedades para a borda inferior 21 border-bottom: 2px 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 Bordas com estilo ('border-style') 'hidden' são suprimidas (ocultas) e têm precedência sobre todas 22 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 ordem: (maior) 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove', 'inset' (menor). Bordas com 4.1.2 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 versão de Tomcat utilizar Qual de bordas: 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 166 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 183 www.3way.com.br
  • 175. Java WEB Java WEB 18.12 JavaScript 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 JavaDocumento HTML 1.2 JDBC – um Database Connectivity 8 1.2.1 Para inserir parágrafos de programação dentro do HTML é necessário identificar o início e o fim do set de java.sql.DriverManager 8 JavaScript, da seguinteConexões forma: 1.3 Fábrica de 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 11 </SCRIPT> Dados são executados na 12 1.7 Fechando a Conexão sequência em que 12 1.8 PreparedStatement ou ser adotado em qualquer local da página. Este procedimento podeStatement 1.9 aparecem na página 13 Entretanto, Design Patterns para melhor visualização e facilidade de manutenção, recomenda-se que 1.9.1 a lógica seja Data Accessinício do documento, através da criação de funções a DAO – escrita no Object toda (documento) e os 13 1.9.2 invocadas quando se fizer necessário (normalmente atreladas a eventos). Pesquisando 14 serem atrelados a eventos 15 1.9.3 Os Recurso avaçando: O Cursor sensíveis ao tipo de letra (maiúsculas e comandos JavaScript são são executados 16 1.9.4 minúsculas)Alteraçãosintaxe. Portanto, é necessário que seja obedecida a forma de em sua 1.9.5 apenas quando o 16 escrever osExclusão de acordo com a forma apresentada ao longo deste manual. comandos, 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 18 variável. O que é Java Enterprise Edition? 2.3 A plataforma Java Enterprise Edition 18 2.3.1 Arquivo Externo APIs 19 18.12.2 2.3.2 Você pode também usar seus códigos em arquivos externos usando o Contêiners 19 2.3.3 Deployment de aplicaçõeslembre-se que sempre que você colocar seus 21 atributo SRC=”url-do-arquivo”, mas 3 Análise de arquiteturas precisará nomeá-los com a extensão .JS exemplo: 21 códigos em arquivos externos você 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos src=”meucodigo.js”></script> 21 <scriptde aplicações na WEB 3.3 Arquitetura MVC para a Web 21 3.4 Vantagens Eventos 22 18.12.3 Tratadores de da arquitetura MVC 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 23 a serem realizadas pelo programa. Abaixo apresentamos a lista dos eventos possíveis, indicando os momentos em 4.1.1 mesmos podem ocorrer, bem como, os objetos passíveis de sua ocorrência. Instalar Java JSE SDK (JDK) 24 que os 4.1.2 onload - versão de JDK utilizar Qual Ocorre na carga do documento. Ou seja, só ocorre no BODY do documento. 24 4.1.2.1 onunload - Ocorre na descarga (saída) do documento. Também só ocorre no BODY. JAVA_HOME 24 4.2 Instalar- Tomcat quando o objeto perde o focus e houve mudança de conteúdo. Válido para os objetos 25 onchange Ocorre 4.2.1 Text, Select e Textarea. Qual versão de Tomcat utilizar 25 4.2.2 onblur - Ocorre quando o objeto perde o focus, independente de ter havido mudança. Válido para 25 Iniciar e parar o Tomcat os 4.2.2.1 objetos Text, Select e Textarea. [Windows] Tomcat como serviço 25 4.2.2.2 onfocus - Ocorre quando o objeto recebe o focus. Válido para os objetos Text, Select e Textarea. Tomcat como processo 26 4.3 Testar Tomcat 26 onclick - Ocorre quando o objeto recebe um Click do Mouse. Válido para os objetos Buton, Checkbox, 4.4 Criar contexto e Submit. de desenvolvimento 26 Radio, Link, Reset 4.4.1 onmouseover - Ocorre quando o ponteiro do mouse passa por sobre o objeto. Válido apenas para Link. 26 Estrutura de diretórios 4.4.2 onselect contexto quando o objeto é selecionado. Válido para os objetos Text e Textarea. Criar - Ocorre de aplicação web 27 4.4.3 onsubmit - Ocorre quando um botão tipo Submit recebe um click do mouse. Válido apenas para o Form. 27 Configurar contexto: web.xml 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 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 167 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 184 www.3way.com.br
  • 176. 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 8 facilitar a leitura ao programador. O programador, a medida que desenvolve o script, vai deixando frases ou palavras 1.1 Banco comentários, que ajudam a ele ou a qualquer outro a ler mais facilmente o script na hora de 8 soltas, chamadas de Dados Relacional 1.2 JDBC – Java Database Connectivity 8 modificá-lo ou depurá-lo. 1.2.1 Existem dois tipos de comentários na linguagem. Um deles, a barra dupla, serve para comentar uma linha java.sql.DriverManager 8 1.3 9 de código. Fábrica de Conexões podemos utilizar para comentar várias linhas e se indica com os signos /* para O outro comentário 1.4 Criar Banco e */ para terminá-lo. Vejamos uns exemplos: de Dados e Tabelas 10 começar o comentário 1.5 Classes Javabeans – Entidades 10 1.6 Inserindo 11 <script> Dados //Este é um 1.7 Fechando a Conexãocomentário de uma linha 12 /*Este comentário pode 1.8 PreparedStatement ou Statement se expandir 12 por várias linhas. 1.9 Design Patterns 13 As que quiser*/ 1.9.1 </script> Access Object DAO – Data 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 ser Locais ou 21 2.3.3 Exemplo: NovaVariavel = "Jose" Deployment de aplicações Globais. 21 3 Análise de arquiteturas Foi Arquitetura Físicade Arquitetura Lógica que, passou a conter a String Jose. As criada a variável e nome NovaVariavel 3.1 21 variáveis que são de aplicações na WEB função são Locais e referenciáveis apenas dentro 3.2 Tipos criadas dentro de uma 21 da função. As variáveis criadas fora de funções são Globais, podendo serem referenciadas 3.3 Arquitetura MVC para a Web 21 em qualquer parte do documento. MVC 3.4 Vantagens da arquitetura 22 Desta forma, de desenvolvimento 4 Ambiente variáveis que precisam ser referenciadas por várias funções ou em 23 outra parte do documento, precisam ser definidas como globais. Embora não seja 4.1 Tomcat 23 recomendável, em uma JSE SDK (JDK) ser definida uma variável local com o mesmo nome 4.1.1 Instalar Java função, pode 24 de uma variável global. Para isso utiliza-se o método de definição var. 4.1.2 Qual versão de JDK utilizar 24 Exemplo: JAVA_HOME 4.1.2.1 24 Variável Tomcat 4.2 Instalar Global: MinhaVariavel = ""; 25 4.2.1 Variável Local: var MinhaVariavel = ""; Qual versão de Tomcat utilizar 25 4.2.2 Iniciar e parar o Tomcat 25 18.12.6 Palavras Reservadas como serviço 4.2.2.1 [Windows] Tomcat 25 4.2.2.2 Existem várias palavras que são reservadas para o JavaScript as quais são listadas abaixo. Essas palavras não 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 Ativar contexto default debugger delete do 4.4.4 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 seusgoto JSPs 31 function if implements import 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 168 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 185 www.3way.com.br
  • 177. 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 uma destas classes de informação é o tipo de dados. Javascript distingue entre três PreparedStatement ou Statement 12 Cada O Javascript 13 1.9 Design todas as tipos de dados e Patterns informações que se podem salvar em variáveis vão estar 1.9.1 trabalha com 13 encaixadas DAOalgum destes tipos de dados. Vejamos detalhadamente quais são estes em – Data Access Object 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.4de dados numérico Alteração 16 Tipo informação, como 1.9.5 Nesta linguagem só existe um tipo de dados numérico, ao contrário do que Exclusão 16 2 Introdução linguagens mais Edition textos ou 17 ocorre na maioria das a Java Enterprise conhecidas. Todos os números são portanto, do 2.1 Porque Java EE tem sido da utilizado? tipo numérico, independentemente tãoprecisão que tenham ou se são números reais ou números. 17 2.2 que é Java Enterprise números 18 inteiros. OsOnúmeros inteiros são Edition? que não têm vírgula, como 3 ou 339. Os 2.3 A plataforma Java Enterprise Edition 18 números reais são números fracionários, como 2.69 ou 0.25, que também se podem 2.3.1 em nota científica, por exemplo, 2.482e12. APIs 19 escrever 2.3.2 Com Javascript também podemos escrever números em outras bases, como a Contêiners 19 2.3.3 Deploymentsão aplicações numeração que utilizam mais ou menos dígitos de sistemas de 21 hexadecimal. As bases 3 escrever os números. Existem três bases com as que podemos trabalhar: Análise de arquiteturas 21 para 3.1 Arquitetura Física e Arquitetura Lógica 21 - Base 10 3.2 Tipos deque utilizamosWEB aplicações na habitualmente, o sistema decimal. Qualquer número, 21 É o sistema 3.3 Arquiteturaentende que Web escrito em base 10. MVC para a está 21 por padrão, se 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 escrever este número precedido de um 0, por exemplo 045. Instalar Java JSE SDK (JDK) 24 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 Estrutura de diretórios de uma variável é verdadeiro ou falso. 4.4.1 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 4.4.3 Os dois valorescontexto: web.xml variáveis boleanas são true ou false. Configurar que podem ter as 27 4.4.4 Ativar contexto 29 4.4.5 minhaBoleana = true Testar contexto 29 minhaBoleana Servlet 4.5 Bibliotecas = false 29 4.6 Testar seus servlets 30 4.7 Testar seus JSPs 31 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 169 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 186 www.3way.com.br
  • 178. Java WEB Java WEB Tipo de dados cadeia de caracteres Sumário último tipo de dados é o que serve para salvar um texto. Javascript só tem um tipo de dados para salvar O texto e nele, se podem introduzir qualquer número de caracteres. Um texto pode estar composto de números, 1 JDBC 8 letras e qualquer outro tipo de caracteres e signos. Os textos se escrevem entre aspas, duplas ou simples. 1.1 Banco de Dados Relacional 8 1.2 JDBC –= "Miguel vai pescar" Java Database Connectivity 8 meuTexto 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 1.9.2 Existe uma série de caracteres especiais que servem para expressar em uma cadeia de texto determinados Pesquisando 14 controles como pode ser uma O Cursor linha ou um tabulador. Estes são os caracteres de escape e se escrevem quebra de 1.9.3 Recurso avaçando: 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çãomuito comum é aEdition de linha, que se consegue escrevendo n. Outro caractere muito caractere a Java Enterprise quebra 2 17 habitual é colocar umasEE tem sido tão colocamos umas aspas sem seu caractere especial nos fechariam as aspas 2.1 Porque Java aspas, pois se utilizado? 17 que colocamos paraJava Enterprise Edition? iniciar a cadeia de caracteres. Temos então que introduzir as aspas com " ou ' (aspas duplas 2.2 O que é 18 ou simples). Existem outros caracteres de escape, que veremos na tabela abaixo mais resumidos, apesar de que 2.3 A plataforma Java Enterprise Edition 18 também háAPIs destacar como caractere habitual o que se utiliza para escrever uma contra-barra, para não que 2.3.1 19 confundi-la Contêiners de um caractere de escape, que é a dupla contra-barra . com o início 2.3.2 19 2.3.3 Exemplo de caracteres de escape: Deployment de aplicações 21 3 Análise de arquiteturas 21 n -Arquiteturalinha e Arquitetura Lógica Quebra de Física 3.1 21 ' - Aspas de aplicações na WEB 3.2 Tipos simples 21 " - Arquitetura MVC para a Web Aspas dupla 3.3 21 t - Vantagens da arquitetura MVC Tabulador 3.4 22 r - Ambiente de desenvolvimento Enter 4 23 f - Tomcat de página Avance 4.1 23 Retroceder JSE SDK 4.1.1 b -Instalar Javaespaço (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 Operadores Qual versão de Tomcat utilizar 25 18.12.8 4.2.2 25 OperadoresIniciar e parar o Tomcat Lógicos 4.2.2.1 São [Windows] Tomcat como serviço comandos condicionais, tais como: IF , FOR e WHILE. Os comandos 25 operadores a serem utilizados em 4.2.2.2 Tomcatvistos mais a frente. como processo 26 condicionais serão 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 ou Igual web.xml contexto: 27 Maior 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 170 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 187 www.3way.com.br
  • 179. Java WEB Java WEB Operadores Matemáticos Sumário operadores a serem utilizados em cálculos, referências de indexadores e manuseio de strings. Ao longo São do manual estes operadores serão largamente utilizados, dando, assim, uma noção mais precisa do seu potencial. 1 JDBC 8 1.1 8 + Banco de Dados Relacional 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 Statement 1.8 PreparedStatement = x + y da mesma forma podem ser utilizados: -= , *= , /= ou %= 12 Um Design Patternsser simplificado utilizando-se : X++ ou X-- o que equivale as expressões: contador pode 1.9 13 X + 1 ou X = X - 1 respectivamente. 1.9.1 X = DAO – Data Access Object 13 1.9.2 Pesquisando 14 Para inverter sinal: X = -X Cursor para positivo ou positivo para negativo. negativo 1.9.3 Recurso avaçando: O 15 1.9.4 Alteração 16 18.12.9 Comandos Condicionais e Laços 1.9.5 Exclusão 16 SãoIntrodução a Java Enterprise Edition comandos que condicionam a execução de uma certa tarefa à veracidade ou não de uma determinada 2 17 condição, ou enquanto determinada tão utilizado?verdadeira. São eles: 2.1 Porque Java EE tem sido condição for 17 2.2 O que é Java Enterprise Edition? 18 Comando IF plataforma Java Enterprise Edition 2.3 A 18 (condição) 2.3.1 if APIs 19 { ação 2.3.2 Contêiners para condição satisfeita } 19 2.3.3 else Deployment de aplicações 21 { de arquiteturas 3 Análiseação para condição não satisfeita } 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos 21 Exemplo: de aplicações na WEB 3.3 Arquitetura MVC para a Web 21 if (Idade < 18) 3.4 Vantagens da arquitetura MVC 22 {Categoria = "Menor"} else 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 {Categoria = "Maior"} 4.1.1 Instalar Java JSE SDK (JDK) 24 4.1.2 Qual 24 Comando FOR versão de JDK utilizar for(criação de variável de controle;condição;incremento da variável de controle;) 4.1.2.1 JAVA_HOME 24 { Instalar Tomcat ação } 4.2 25 4.2.1 Qual versão de Tomcat utilizar 25 Exemplo: e parar o Tomcat 4.2.2 Iniciar 25 for (x = 0 como serviço 4.2.2.1 [Windows] Tomcat ; x <= 10 ; x++) 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 4.4.1 Executa uma ação enquanto determinada condição for verdadeira. 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 = 10 29 var contador 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 SejaTodos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 171 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 188 www.3way.com.br
  • 180. Java WEB Java WEB O comando switch Sumário comando switch do JavaScript1.2 nada mais é do que um case, assim como no C ou no PHP, ou até O 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 Netscape e Internet Explorer nas suas versões 4.X. 8 JavaScript1.2, ou seja, serve apenas para 1.2 JDBC – Java Database Connectivity 8 1.2.1 switch (variavel_de_controle) { java.sql.DriverManager 8 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:– Data Access Object DAO 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 ‘2’: tão utilizado? valor foi 2’); break; EE tem sido alert(‘seu 17 2.2 O que é Java Enterprise Edition? 18 case ‘3’: 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 = ((VarSexo == "M") ? "Masculino" : "Feminino") JAVA_HOME 24 Os arrays foram 25 4.2 Instalar Tomcat introduzidos em 25 4.2.1 Qual 18.12.10 Arrays versão de Tomcat utilizar 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 26 4.3 Testar Tomcat 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 172 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 190 www.3way.com.br
  • 181. Java WEB Java WEB 18.12.10.1 Criação e Inicialização de Arrays Sumário primeiro passo para utilizar um array é criá-lo. Para isso utilizamos um objeto Javascript já implementado O no navegador. Esta é a sentença para criar um objeto array: 1 JDBC 8 1.1 8 varBanco de Dados new Array() meuArray = Relacional 1.2 JDBC – Java Database Connectivity 8 1.2.1 Isto java.sql.DriverManager que está se executando. O array se cria sem nenhum conteúdo, ou seja, não 8 cria um array na página 1.3 Fábrica de Conexões 9 terá nenhum campo ou compartimento criado. 1.4 Criar Banco de Dados e Tabelas 10 1.5 Classes Javabeans Array('Segunda','Terça','Quarta','Quinta','Sexta','Sábado', 10 diasSemana = new – Entidades 1.6 Inserindo 11 'Domingo') Dados 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 Design Patterns 13 zero. Também 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 = new Array(10) 14 meuArray 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 Neste caso indicamos que o array vai ter 10 posições, ou seja, 10 campos onde salvar dados. É importante Alteração 16 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 a Java Enterprise Edition 17 Javascript as maiúsculas e minúsculas sim que importam, se escrevemos em minúscula não funcionará. 2.1 Porque Java EE tem arraytão utilizado? tanto se indicamos ou não o número de campos do array. Se o sido qualquer dado, 17 Podemos introduzir no 2.2 18 campo está O que é Java Enterprise Edition? e se o campo não estava criado se cria e logo, se introduz o dado, com criado se introduz simplesmente 2.3 A plataforma Java Enterprise Edition o qual o resultado final será o mesmo. Esta criação de campos é dinâmica e se produz ao mesmo tempo, que 18 os 2.3.1 se executam. Vejamos a seguir como introduzir valores em nossos arrays. APIs 19 scripts 2.3.2 Contêiners 19 2.3.3 meuArray[0] = 290 Deployment de 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 os elementos Tomcat como processo 26 for(i = Tomcat 4.3 Testar 0; i<=nomes.length; i++) ///nomes.length retorna o tamanho do Array 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) Testar seus servlets 4.6 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 é indicado, usa a vírgula como default. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 173 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 191 www.3way.com.br
  • 182. Java WEB Java WEB Exemplo: Sumário nivel = new Array("baixo","medio","alto"); 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 //resulta "baixo/médio/alto" em str_3 8 str_3 = nivel.join("/"); 1.2.1 java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 length 1.4 Criarnúmero de elementos em uma array. Pode ser usado para diminuir o comprimento de um objeto já Banco de Dados e Tabelas 10 Indica o 1.5 Classes aumentar. 10 definido. Não pode Javabeans – 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 Enterprise Edition 2.3 A plataforma Java= nivel.pop; //a variável eliminado contém "muito alto" 18 2.3.1 APIs 19 push(valor1, valor2, ...) 2.3.2 Contêiners 19 2.3.3 Adiciona um ou mais elementos (valor1, valor2, etc) ao final de uma array, retornando o seu novo tamanho. Deployment de aplicações 21 Exemplo: a de arquiteturas 4 e os dois elementos serão adicionados. 3 Análise variável novo será 21 3.1 Arquitetura Física e Arquitetura Lógica 21 3.2 Tipos de aplicações na WEB 21 nivel = new 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: (nivel[0], nivel[1] e nivel[2] serão respectivamente "alto", "médio" e "baixo"). Instalar Java JSE SDK (JDK) 24 4.1.2 Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME= new Array("baixo","medio","alto"); 24 nivel 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 o primeiro elementoserviço esse elemento, reduzindo o tamanho da array. [Windows] Tomcat como e retorna 25 4.2.2.2 Exemplo: (acomo processo Tomcat variável removido terá "muito baixo" e a nivel não terá esse elemento). 26 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 não altera o objeto original. Os valores são copiados para a nova array. 4.8 Logs 31 4.9 Variáveis de Ambiente 32 SejaTodosProfissional Aprendendo com Profissionais um os direitos reservados a 3Way Networks 174 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 192 www.3way.com.br
  • 183. Java WEB Java WEB Exemplo: (escreve: "baixo,médio,alto"). Sumário nivel = new Array("muito baixo","baixo","medio","alto","muito alto"); 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 a Conexãofica em índice menor que a. retornar valor < 0, b 1.7 12 - se PreparedStatement oubStatement de índice. retornar valor = 0, a e não mudam 1.8 12 - se Design Patterns 0, b fica em índice maior que a. retornar valor > 1.9 13 1.9.1 DAO – Data Access Object 13 1.9.2 Para comparar números, a função pode ser simplesmente: Pesquisando 14 1.9.3 Recurso avaçando: O Cursor 15 1.9.4 function comparar(a, b) Alteração 16 { Exclusão 1.9.5 16 return a – b; 2 Introdução a Java Enterprise 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 – b; 21 return a 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 é 4.2.1 - quant versão inteiro indicando o número de elementos a remover. Se é zero, nenhum elemento25 Qual é um de Tomcat utilizar removido, e parar o Tomcat mas deve ser indicado pelo menos um novo elemento. 4.2.2 Iniciar 25 4.2.2.1 - elm1 ... elemN são os como serviço [Windows] Tomcat novos elementos a adicionar. Se não indicados, a função apenas remove elementos. 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 26 da 4.3 Testar Tomcat arrray é alterado.contexto de desenvolvimento A função retorna uma array com os elementos removidos. 4.4 Criar 26 4.4.1 Exemplos: de diretórios Estrutura 26 4.4.2 Criar contexto de aplicação web 27 num = new Array("10", "20", "30", "40"); 4.4.3 Configurar contexto: 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 175 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 193 www.3way.com.br
  • 184. Java WEB Java WEB Sumário document.write(num); //escreve 10,20,28,30,40 document.write("<br>"); //avança uma linha document.write(de_fora); //escreve 25 1 JDBC 8 1.1 8 toString() Banco de Dados Relacional 1.2 JDBCuma string com os elementos dispostos seqüencialmente e separados por vírgula. – Java Database Connectivity 8 Retorna 1.2.1 Exemplo: java.sql.DriverManager 8 1.3 Fábrica de Conexões 9 1.4 Criar Banco de Dados e Tabelas "20", "30", "40"); 10 num = new Array("10", 1.5 Classes Javabeans – Entidades //str contém "10,20,30,40" 10 str = 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 Design elementos. 13 elmN) são os novosPatterns 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 2.3.3 function NomeFunção(Parâmetros) Deployment de aplicações 21 { Análise de arquiteturas 3 21 Ação(ões) e Arquitetura Lógica 3.1 Arquitetura Física 21 } Tipos de aplicações na WEB 3.2 21 3.3 Arquitetura MVC para a Web 21 Suponha uma da arquitetura MVC como objetivo informar se uma pessoa é maior ou menor de idade, 3.4 Vantagens função que tenha 22 recebendo como parâmetro a sua idade. 4 Ambiente de desenvolvimento 23 4.1 Tomcat 23 4.1.1 function Java JSE (Anos) Instalar Idade SDK (JDK) 24 4.1.2 { Qual versão de JDK utilizar 24 4.1.2.1 JAVA_HOME > 17) 24 if(Anos 4.2 Instalar Tomcat 25 { 4.2.1 Qual versão alert("Maior de Idade") de Tomcat utilizar 25 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 embutidas na contexto: web.xml 4.4.3 Configurar própria linguagem 27 A sintaxe geral é a seguinte: 4.4.4 Ativar contexto 29 4.4.5 - eval - Calcula o conteúdo da string Testar contexto 29 - parseInt - Transforma string em inteiro 4.5 Bibliotecas Servlet 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 Seja Todos os direitos reservados a 3Way Networks um Profissional Aprendendo com Profissionais 176 www.3way.com.br Seja um Profissional Aprendendo com Profissionais 1 194 www.3way.com.br
  • 185. Java WEB Java WEB Exemplo: Sumário Result = eval ( " (10 * 20) + 2 - 8") 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çõesDados são chamadas de funções Matemáticas e fazem parte das classes ultilitárias: abaixo 1.6 Inserindo 11 – Math.abs(n)a-Conexãoo valor absoluto do número (ponto flutuante) 1.7 Fechando retorna 12 – Math.ceil(n) - retorna oupróximo valor inteiro maior que o número 1.8 PreparedStatement o Statement 12 – Math.floor(n) - retorna o próximo valor inteiro menor que o número 1.9 Design Patterns 13 1.9.1 – Math.round(n) - retorna o valor inteiro, arredondado, do número DAO – Data Access Object 13 1.9.2 – Math.pow(base, expoente) - retorna o cálculo do exponencial Pesquisando 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, n2) - retorna o menor número dos dois fornecidos Alteração 16 – Math.sqrt(n) - retorna a raiz quadrada do número 1.9.5 Exclusão 16 – Math.SQRT2 a retorna a raiz quadrada de 2 (aproximadamente 1.414) 2 Introdução - Java Enterprise Edition 17 2.1 Porque Java - retorna a tão utilizado? 17 – Math.SQRT_2 EE tem sidoraiz quadrada de 1/2 (aproximadamente 0