apostila java web em português | curso formação java web 3way networks

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

Upload: 3way-networks

Post on 27-Oct-2015

259 views

Category:

Documents


9 download

DESCRIPTION

Apostila Java Web faz parte do curso Formação Java Web da 3Way Networks!Objetivo do curso Formação Java:Capacitar o aluno a compreender desde os conceitos de orientação a objetos, a sintaxe básica da linguagem, os componentes básicos de interface gráfica e programas na linguagem Java; aprender conceitos avançados para o desenvolvimento de aplicações Web com Java e mostrar os frameworks mais conhecidos e requisitados no mercado para aplicar o padrão arquitetural MVC (Model View Controller) tais como: Java Server Faces, Facelets, RichFaces, Springs e JPA. Durante o curso o aluno aprende também os recursos da poderosa plataforma do Eclipse, a IDE líder de mercado.Conteúdo da Apostila1 JDBC 81.1 Banco de Dados Relacional 81.2 JDBC – Java Database Connectivity 81.2.1 java.sql.DriverManager 81.3 Fábrica de Conexões 91.4 Criar Banco de Dados e Tabelas 101.5 Classes Javabeans – Entidades 101.6 Inserindo Dados 111.7 Fechando a Conexão 121.8 PreparedStatement ou Statement 121.9 Design Patterns 131.9.1 DAO – Data Access Object 131.9.2 Pesquisando 141.9.3 Recurso avaçando: O Cursor 151.9.4 Alteração 161.9.5 Exclusão 162 Introdução a Java Enterprise Edition 172.1 Porque Java EE tem sido tão utilizado? 172.2 O que é Java Enterprise Edition? 182.3 A plataforma Java Enterprise Edition 182.3.1 APIs 192.3.2 Contêiners 192.3.3 Deployment de aplicações

TRANSCRIPT

Page 1: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java Web

www.3way.com.br

Apostila

Page 2: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

2Todos os direitos reservados a 3Way Networks

Java WEB

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

1

Sumário

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

333345568899

1011131314141515171718

*Apostilha referente somente ao primeiro módulo do curso Formação Java Web 3Way Networks.

Page 3: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

3Todos os direitos reservados a 3Way Networks

Java WEB

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

8

1. JDBC1.1. Banco de Dados Relacional

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

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

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

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

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

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

As seguintes classes estão na API JDBC:

- java.sql.Connection – Representa a conexão com o banco de dados. Encapsula os detalhes de como acomunicação com o servidor é realizada.- java.sql.DriverManager – Gerencia os drivers JDBC utilizados pela aplicação. Em conjunto com oendereço e a autenticação, pode fornecer objetos de conexão.- java.sql.Statement – Fornece meios ao desenvolvedor para que se possa executar comandos SQL.- java.sql.ResultSet – Representa o resultado de um comando SQL. Estes objetos normalmente sãoretornados por métodos.

1.2.1. java.sql.DriverManagerUtilizando esta classe, o desenvolvedor pode retornar um objeto de conexão que pode ser usado para

executar tarefas relativas ao banco de dados. Dois passos são necessários para tal:

- Primeiro, o driver JDBC deve estar registrado com DriverManager. Isto pode ser feito utilizando o métodoClass.forName que carrega a classe do driver para a memória.- Segundo, utilizando o método getConnection(), mediante informação de uma URL, assim como a senha eo nome do usuário autenticado no banco de dados. A URL deve seguir a sintaxe requisitada pelaimplementação do banco de dados.

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

O processo de armazenageme captura de dados em um

banco é chamado depersistência.

Page 4: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

4Todos os direitos reservados a 3Way Networks

Java WEB

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

9

import java.sql.*;

public class JDBCExemplo {static String url = "jdbc:derby://localhost:1527/3way";static String usuario = "3way";static String senha = "123";public static void main(String[] args) {

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

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

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

} }}

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

1.3 Fábrica de ConexõesEm determinado momento de nossa aplicação, gostaríamos de ter o controle sobre a construção dos

objetos da nossa classe. Muita coisa pode ser feita através do construtor, como saber quantos objetos foraminstanciados ou fazer o log sobre essas instanciações. As vezes também queremos controlar um processo muitorepetitivo e trabalhoso, como abrir uma conexão com o banco de dados. Tomemos como exemplo a classe a seguirque seria responsável por abrir uma conexão com o banco:

import java.sql.*;

public class FabricaConexao {

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

public static Connection getConexao() throws SQLException{

try{Class.forName("org.apache.derby.jdbc.ClientDriver");return DriverManager.getConnection(url,usuario,senha);

}catch(ClassNotFoundException e){

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

}}

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

Connection con = FabricaConexao.getConexao();

Page 5: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

5Todos os direitos reservados a 3Way Networks

Java WEB

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

10

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

1.4 Criar Banco de Dados e TabelasDevemos criar um banco de dados agenda. Para criá-lo você deve editar a url de conexão do banco para:

static String url = "jdbc:derby://localhost:1527/agenda;create=true";

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

CREATE TABLE contatos (ID BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY,NOME VARCHAR(255),EMAIL VARCHAR(255),ENDERECO VARCHAR(255),PRIMARY KEY(id)

);

1.5 Classes Javabeans – EntidadesNo banco de dados relacional, é comum representar um contato (entidade) em uma tabela de contatos.

Agora iremos utilizar:- uma classe com métodos do tipo get e set para cada um de seus parâmetros, que representa algumobjeto.- uma classe com construtor sem argumentos que representa uma coleção de objetos.

A seguir, você vê um exemplo de uma classe javabean que seria equivalenteao nosso modelo de entidade do banco de dados:

public class Contato {

private int id;

private String nome;

private String endereco;

private String email;

public int getId() {return id;

}public void setId(int id) {

this.id = id;}public String getNome() {

return nome;}public void setNome(String nome) {

this.nome = nome;}public String getEndereco() {

return endereco;}

JavabBeans sãoclasses que possuem o

construtor semargumentos e

métodos de acesso dotipo get e set.

Page 6: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

6Todos os direitos reservados a 3Way Networks

Java WEB

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

11

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

}public String getEmail() {

return email;}public void setEmail(String email) {

this.email = email;}

}

1.6 Inserindo DadosPara inserir dados em uma tabela de um banco de dados entidade relacional basta usar a cláusula INSERT.

Precisamos especificar quais os campos que desejamos atualizar e os valores.Primeiro o código SQL:

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

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

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

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

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

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

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

PreparedStatement stmt = con.prepareStatement("insert into contatos(nome,email,endereco) values (?,?,?)");

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

//preenche os valoresstmt.setString(1, "3Way Networks");stmt.setString(2, "[email protected]");stmt.setString(3, "Av. 4ª Radial, 1952 Milão Shopping Center");

Por fim, uma chamada ao método execute que executa o comando SQL.

stmt.execute();

Page 7: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

7Todos os direitos reservados a 3Way Networks

Page 8: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

8Todos os direitos reservados a 3Way Networks

Java WEB

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

12

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

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

try {Connection con = ConnectionFactory.getConnection();

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

//executastmt.execute();stmt.close();System.out.println("Gravado!");con.close();

}catch (SQLException e) {e.printStackTrace();

}finally{if (con != null){con.close();

stmt.close();}

}}

}

1.7 Fechando a ConexãoO mais praticado é o uso de alguma API de ORM como o Hibernate ou JPA, porém aqueles que ainda

insistem no uso de JDBC devem prestar atenção no momento de fechar a conexão. O exemplo dado acima fecha aconexão caso algum erro ocorra no momento de inserir algum dado no banco dedados. O comum é fechar a conexão em um bloco finally.

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

mais simples chamada Statement, que simplesmente executa uma cláusula SQLno método execute:

Statement stmt = con.createStatement();stmt.execute("insert into contato (nome, email, endereco) values"+"('Nome','Email','Endereco')");stmt.close();

É melhor usar a classe PreparedStatement que é mais rápida queStatement e deixa o código muito mais limpo. Geralmente, seus comandos SQLconterão valores vindos de variáveis do programa Java.

Usando Statements, vocêterá que fazer muitas

concatenações, já comPreparedStatements, isso

fica mais limpo e fácil.

Page 9: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

9Todos os direitos reservados a 3Way Networks

Java WEB

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

13

1.9 Design PatternsOrientação à objetos resolve as grandes dores de cabeças que tínhamos na programação procedural,

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

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

1.9.1 DAO – Data Access ObjectJá foi possível sentir que colocar código SQL dentro de suas classes de lógica

é algo nem um pouco elegante e muito menos viável quando você precisa manter oseu código.

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

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

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

// adiciona o os dados no bancoMisterio bd = new Misterio();bd.adiciona(“meu nome”, “meu email”, “meu endereço”);

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

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

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

public class TestaInsere {

public static void main(String[] args) {

try {

//pronto para gravarContato contato = new Contato();contato.setNome("3Way");contato.setEmail("[email protected]");contato.setEndereco("Av. 4ª Radial, Goiânia-GO");

//grave nessa conexão!!!ContatoDAO dao = new ContatoDAO();

A melhor maneirapara aprender o que éum Design Pattern évendo como surgiu a

necessidade domesmo.

Page 10: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

10Todos os direitos reservados a 3Way Networks

Java WEB

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

14

//método elegantedao.adiciona(contato);

System.out.println("Gravado!");

} catch (SQLException e) {e.printStackTrace();

}}

}

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

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

import java.sql.Connection;import java.sql.SQLException;import conexao.FabricaConexao;

public class ContatoDAO {private Connection conexao;public ContatoDAO() throws SQLException {

this.conexao = FabricaConexao.getConexao();}

}

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

public void adiciona(Contato contato) throws SQLException {

PreparedStatement stmt = (PreparedStatement)this.conexao.prepareStatement(

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

}

1.9.2 PesquisandoPara pesquisar também utilizamos a interface PreparedStatement, de forma que o método executeQuery

retorna todos os contatos no exemplo a seguir. O objeto retornado é do tipo ResultSet que permite navegar porseus registros através do método next(). Esse método irá retornar false quando chegar ao fim da pesquisa, portantoele é normalmente utilizado para fazer um loop nos registros como no exemplo a seguir:

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

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

Page 11: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

11Todos os direitos reservados a 3Way Networks

Java WEB

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

15

// itera no ResultSetwhile (rs.next()) {}rs.close();stmt.close();con.close();

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

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

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

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

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

1.9.3 Recurso avaçando: O CursorAssim como o cursor do banco de dados, só é possível mover para o próximo registro. Para permitir um

processo de leitura para trás é necessário especificar na abertura do ResultSet que tal cursor deve ser utilizado.Mas, novamente, podemos aplicar as idéias de DAO e criar um método getLista() no nosso ContatoDAO:

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

ResultSet rs = stmt.executeQuery();

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

Contato contato = new Contato(); contato.setNome(rs.getString(“nome”));

contato.setEmail(rs.getString(“email”));contato.setEndereco(rs.getString(“endereco”));

contatos.add(contato);}

rs.close();stmt.close();return contatos;

Crie o método getLista na classe ContatoDAO.

public List<Contato> getLista() throws SQLException {

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

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

Contato contato = new Contato();contato.setNome(rs.getString("nome"));

Page 12: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

12Todos os direitos reservados a 3Way Networks

Page 13: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

13Todos os direitos reservados a 3Way Networks

Java WEB

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

16

contato.setEmail(rs.getString("email"));contato.setEndereco(rs.getString("endereco"));contatos.add(contato);

}rs.close();stmt.close();return contatos;

}

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

ContatoDAO dao = new ContatoDAO();

Liste os contatos com o DAO:

List<Contato> contatos = dao.getLista();

Itere nessa lista e imprima as informações dos contatos:

for (Contato contato : contatos) {System.out.println("Nome: " + contato.getNome());System.out.println("Email: " + contato.getEmail());System.out.println("Endereço: " + contato.getEndereco() + "\n");

}

1.9.4 AlteraçãoAgora que você já sabe usar o PreparedStatement para executar qualquer tipo de código SQL e ResultSet

para receber os dados retornados da sua pesquisa fica simples, porém maçante, escrever o código de diferentesmétodos de uma classe típica de Dao.

Veja primeiro o método altera, que recebe um contato cujos valores devem ser alterados:

public void altera(Contato contato) throws SQLException {PreparedStatement stmt = (PreparedStatement)connection.prepareStatement(

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

}

1.9.5 ExclusãoNão existe nada de novo nas linhas acima. Uma execução de query! Simples, não?Agora o código para remoção: começa com uma query baseada em um contato, mas usa somente o id dele

para executar a query do tipo delete:

public void remove(Contato contato) throws SQLException {PreparedStatement stmt = (PreparedStatement)Connection.prepareStatement("delete from contatos where id=?");stmt.setLong(1, contato.getId());stmt.execute();stmt.close();

}

Page 14: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

14Todos os direitos reservados a 3Way Networks

Java WEB

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

17

2 Introdução a Java Enterprise Edition

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

pode ser utilizadacomputadores com sistema

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

com MainFrames.

Page 15: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

15Todos os direitos reservados a 3Way Networks

Java WEB

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

18

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

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

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

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

negócio.

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

Figura 2.1 – Java EE servidores e contêiners

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

2.3 A plataforma Java Enterprise Edition

Item Descrição

Blueprints DesignGuidelines for Java EE

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

Page 16: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

16Todos os direitos reservados a 3Way Networks

Page 17: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

17Todos os direitos reservados a 3Way Networks

Java WEB

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

19

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

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

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

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

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

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

Contamos com as seguintes APIs na plataforma Java EE:

API Descrição

JDBC Extension Extensão da API JDBC.

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

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

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

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

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

JavaMail Utilizada para envio e recebimento de e-mails.

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

Java Naming and DirectoryInterface ( JNDI)

API que oferece acesso a Catálogo de Objetos.

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

Java API for XML Web Services (JAX-WS)

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

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

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

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

Page 18: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

18Todos os direitos reservados a 3Way Networks

Java WEB

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

20

Tipo Descrição / Exemplo

Client-side

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

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

Server-side

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

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

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

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

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

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

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

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

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

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

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

podem ser instaladas emqualquer Contêiner.

Page 19: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

19Todos os direitos reservados a 3Way Networks

Java WEB

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

21

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

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

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

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

3 Análise de arquiteturas

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

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

Figura 3.1 – Aplicações em Camadas

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

Page 20: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

Java WEB

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

1

Sumário

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

20Todos os direitos reservados a 3Way Networks

Page 21: Apostila Java Web em Português | Curso Formação Java Web 3WAY Networks

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