Programação Java Web
Introdução Programação Java Web
Servlet Prof. Jeangrei Veiga
jeangrei@[Link]
PROGRAMA
Arquitetura em Camadas
Arquitetura J2EE
Container e Serviços
Servlet
2
Prof. Jeangrei Veiga UPF - ADS - Programação de Aplicações Web
PROGRAMAÇÃO JAVA WEB
ARQUITETURA EM CAMADAS
Introdução a Programação de Computadores - Prof. Jeangrei Veiga
3
PROGRAMAÇÃO JAVA WEB
Arquitetura em Camadas – Introdução e Motivação
▪ Requisitos da Solução: O que grandes empresas com
grandes problemas de desenvolvimento de sistemas,
querem tecnicamente?
▪ Melhor flexibilidade: satisfazer novos requisitos de negócio
rapidamente
▪ Melhor manutenabilidade: minimizar o impacto de mudanças
▪ Melhor reusabilidade: montar rapidamente aplicações únicas e
dinâmicas
▪ Melhor aproveitamento do legado: reusar funcionalidade de
sistemas legados em novas aplicações.
▪ Melhor interoperabilidade: possibilitando integrar 2 aplicações
executando em plataformas diferentes
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 4
PROGRAMAÇÃO JAVA WEB
Arquitetura em Camadas – Introdução e Motivação
▪ Melhor escalabilidade: Possibilitando distribuir e configurar a
execução da aplicação para satisfazer vários volumes de
transações.
▪ Menor tempo de desenvolvimento:
▪ Possibilitando viver em “Internet time” e com baixo orçamento
▪ Equivalente a querer Produtividade do Programador.
▪ Melhor robustez: Possibilitando ter soluções com menos defeitos,
confiabilidade e disponibilidade.
▪ Menor risco: Possibilitando tudo sem se arriscar a ter projetos
fracassados.
Resumindo: tudo que ISO 9126 caracteriza como “qualidade de
software”
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 5
PROGRAMAÇÃO JAVA WEB
Arquitetura em Camadas – Introdução e Motivação
▪Solução: Aplicações Multicamadas
Distribuídas
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 6
PROGRAMAÇÃO JAVA WEB
Arquitetura em Camadas – Evolução das Aplicações Multicamadas
Centralizada
▪ Manutenção e atualização
extremamente penosa e complexa
▪ Dominantes de 1946 até década de 80
como arquitetura corporativa
(Mainfremes)
▪ Problema básico: interface não
amigável
7
System/360 – Mainframe criado pela IBM em 1964
PROGRAMAÇÃO JAVA WEB
Arquitetura em Camadas – Evolução das Aplicações Multicamadas
2 Camadas
▪ Sistemas em Camadas permitiram aumentar a escalabilidade
de uso de Sistemas de Informações, surgindo para:
▪ Melhor aproveitar os PCs da empresa
▪ Oferecer sistemas com interfaces gráficas amigáveis
▪ Integrar o desktop e os dados corporativos
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 8
PROGRAMAÇÃO JAVA WEB
Arquitetura em Camadas – Evolução das Aplicações Multicamadas
3 Camadas
▪ A arquitetura cliente/servidor em 2 camadas sofria de vários
problemas:
✓ Falta de escalabilidade (conexões a bancos de dados).
✓ Enormes problemas de manutenção (mudanças na lógica de aplicação
forçava instalações).
✓ Dificuldade de acessar fontes
heterogêneas (legado CICS, 3270, ...).
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 9
PROGRAMAÇÃO JAVA WEB
Arquitetura em Camadas – Evolução das Aplicações Multicamadas
3 Camadas
▪ A arquitetura em 3 camadas original sofre de problemas:
✓ Instalação inicial de programas em desktop é cara.
✓ O problema de manutenção ainda persiste quando há mudanças à camada
de apresentação.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 10
PROGRAMAÇÃO JAVA WEB
Arquitetura em Camadas – Evolução das Aplicações Multicamadas
4 Camadas
▪ Então, usamos o Browser como Cliente Universal
▪ É retirada a apresentação do cliente e
centralizá-lo
▪ O cliente deixa de existir como um
programa, o acesso é feito através de um
navegador.
▪ Às vezes, continua-se a chamar isso de 3
camadas porque as camadas Web e
Aplicação frequentemente rodam na
mesma máquina (para pequenos volumes)
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 11
PROGRAMAÇÃO JAVA WEB
Arquitetura em Camadas – Evolução das Aplicações Multicamadas
n Camadas
▪ Os problemas remanescentes:
✓ Não há suporte a Thin Clients (PDAs, celulares, smart cards, quiosques, ...)
pois preciso usar um browser (pesado) no cliente
✓ Dificuldade de criar software reutilizável: cadê a componentização?
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 12
PROGRAMAÇÃO JAVA WEB
Arquitetura em Camadas – Evolução das Aplicações Multicamadas
n Camadas
▪ Fazer aplicações distribuídas multicamadas é difícil, tem que:
✓ Implementar persistência (impedance mismatch entre o mundo OO e o mundo
dos BDs relacionais)
✓ Implementar tolerância a falhas com fail-over
✓ Implementar gerência de transações distribuídas
✓ Implementar balanceamento de carga
✓ Implementar resource pooling
✓ Etc.
▪ O truque é introduzir middleware num servidor de aplicação que ofereça esses
serviços automaticamente
▪ As soluções oferecidas (J2EE, .Net) são baseadas em componentes
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 13
PROGRAMAÇÃO JAVA WEB
Arquitetura em Camadas – Evolução das Aplicações Multicamadas
n Camadas
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 14
PROGRAMAÇÃO JAVA WEB
ARQUITETURA J2EE
“JAVA 2 ENTERPRISE EDITION”
Introdução a Programação de Computadores - Prof. Jeangrei Veiga
15
PROGRAMAÇÃO JAVA WEB
Arquitetura J2EE
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 16
PROGRAMAÇÃO JAVA WEB
Arquitetura J2EE
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 17
PROGRAMAÇÃO JAVA WEB
Arquitetura J2EE
▪ Foi criada a partir da linguagem de programação Java e de
tecnologias Java e possui uma boa adaptabilidade a
ambientes distribuídos.
▪ É um padrão que traz alguns benefícios para quem o aplica,
como:
✓Portabilidade, produtos que podem ser executados em
qualquer sistema que suporte J2EE;
✓Variedade de bibliotecas (componentes);
✓Aplicações independentes;
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 18
PROGRAMAÇÃO JAVA WEB
Arquitetura J2EE
▪ Os servidores de aplicação J2EE lidam com problemas
complexos, como:
✓Sincronização;
✓Transação;
✓Alocação de Recursos;
✓Gerenciamento de ciclo de vida.
▪ Não tem uma arquitetura fechada;
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 19
PROGRAMAÇÃO JAVA WEB
Arquitetura J2EE
▪ Redução no tempo de desenvolvimento e menor custo
(proposta do conceito de processo de desenvolvimento de
software);
▪ Plataforma de desenvolvimento padrão para aplicações
distribuídas em Java.
▪ Fornece uma divisão clara, lógica e física de uma aplicação
em camadas.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 20
PROGRAMAÇÃO JAVA WEB
Arquitetura J2EE
Bibliotecas (componentes)
▪ Aplicações J2EE são compostas de componentes
▪ Componentes são unidades autocontida de software que pode
ser composta numa aplicação em tempo de design(sem
compilação)
▪ Componentes J2EE são escritos em Java
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 21
PROGRAMAÇÃO JAVA WEB
Arquitetura J2EE
Bibliotecas (componentes)
▪ Exemplos:
✓ JDBC API, para acessar Bancos de Dados
✓ Java Servlet Technology
✓ JavaServer Pages (JSP) Technology
✓ Java Message Service (JMS), para comunicação assíncrona distribuída,
fracamente acoplada e confiável
✓ Java Transaction API (JTA), para a demarcação de transações
✓ JavaMail™ Technology, para que aplicações possam enviar mail
✓ Java API for XML Processing (JAXP), para implementar B2B, relatório XML, etc.
✓ J2EE Connector Architecture, para se conectar de forma simples a vários
sistemas de informação corporativos (ERP, BD)
✓ Java Authentication and Authorization Service (JAAS), para prover serviços de
autenticação e autorização.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 22
PROGRAMAÇÃO JAVA WEB
J2EE CONTAINER E SERVIÇOS
Introdução a Programação de Computadores - Prof. Jeangrei Veiga
23
PROGRAMAÇÃO JAVA WEB Tomcat é um exemplo de web container
J2EE Container e Serviços
Executam um “console”
na máquina cliente
Observe que servlets e JSPs podem executar sem um "J2EE server" completo, como
num servidor Web com suporte especial, como exemplo o Glassfish, JBOSS, Websphere
são exemplos de J2EE Server. 24
PROGRAMAÇÃO JAVA WEB
J2EE Container e Serviços
TOMCAT - é um web container bastante estável. Tem todas
características que um container profissional de aplicações web
possui.
Glassfish - permite todas as especificações da API Java EE,
tais como JDBC, RMI, JavaMail, JMS, JMX, etc. e determina
como as gerenciar.
JBoss - rapidez de inicialização, pouco consumo de
recursos e serviços iniciados on-demand.
WildFly - servidor de aplicações open source em Java, com
padrões definidos pela especificação Java EE.
Jetty - conta com servidor HTTP e Servlet Container
totalmente em Java.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 25
PROGRAMAÇÃO JAVA WEB
J2EE Container e Serviços
▪ A chave da arquitetura J2EE é que muito trabalho normalmente
feito pelo programador é poupado, já que é feito
automaticamente pelo middleware, deixando o programador se
concentrar no Business Logic.
▪ A entidade que faz essa mágica é o Container, o qual "envolve"
um componente de forma a capturar mensagens dirigidas ao
componente e fornecer serviços automáticos a este.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 26
PROGRAMAÇÃO JAVA WEB
J2EE Container e Serviços
▪ Portanto, antes de ser usado, um componente (seja cliente, Web
ou EJB) deve:
✓Ser montado numa aplicação
✓Ser "deployed" (implantado) dentro de um container
▪ O container pode ser configurado em tempo de deployment com
declarative programming, isto é, mudança de atributos
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 27
PROGRAMAÇÃO JAVA WEB
J2EE Container e Serviços
▪ Exemplos do que se faz no deployment ao configurar um
container:
✓Estabelecer segurança
✓Estabelecer o tratamento transacional
✓Mapear nomes entre a aplicação e os recursos disponíveis
▪ O container também gerencia serviços não configuráveis:
✓O lifecycle dos componentes (achar, criar, destruir, ...)
✓Pooling de recursos (conexões de bancos de dados, por exemplo)
✓Persistência de dados
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 28
PROGRAMAÇÃO JAVA WEB
J2EE Container e Serviços
Atividade 0 – Instalar e Configurar Apache Tomcat na IDE Netbeans
▪ Utilizar o tutorial “3.Tutorial_InstalandoTomcatEclipse” para realização desta
atividade.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 29
PROGRAMAÇÃO JAVA WEB
SERVLET
Introdução a Programação de Computadores - Prof. Jeangrei Veiga
30
PROGRAMAÇÃO JAVA WEB
Primeiro Projeto Java Web
Atividade 1 – Criar o primeiro projeto Java Web
▪ Utilizar o tutorial “4-Tutorial_PrimeiroProjetoJavaWeb” para realização desta
atividade.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 31
PROGRAMAÇÃO JAVA WEB
SERVLET
Introdução
▪ Servlets e JSP são duas tecnologias desenvolvidas pela SUN
para desenvolvimento de aplicações WEB
▪ Servlets são classes Java que são instanciadas e executadas
em associação com servidores Web, atendendo a
requisições por meio do protocolo HTTP.
▪ Ao serem acionados, os objetos Servlets podem enviar a
resposta na forma de uma página HTML ou qualquer outro
formato.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 32
PROGRAMAÇÃO JAVA WEB
SERVLET
Introdução
▪ Servlets são tipicamente usados no desenvolvimento de
sites dinâmicos
✓Onde algumas de suas páginas são construídas no momento do
atendimento de um requisição.
✓Assim é possível criar páginas com conteúdo variável, de acordo
com o usuário, tempo, ou informações armazenadas em um banco
de dados
▪ Servlets não possuem interface gráfica e suas instâncias são
executadas dentro de um ambiente gráfico denominado
container
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 33 33
PROGRAMAÇÃO JAVA WEB
SERVLET
O que é Servlet?
▪ O nome “servlet” vem do inglês e dá uma ideia de servidor
pequeno cujo objetivo basicamente é receber requisições
HTTP, processá-las e responder ao cliente, essa resposta
pode ser um HTML, uma imagem etc.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 34 34
PROGRAMAÇÃO JAVA WEB
SERVLET
Como Funciona?
1. Cliente (navegador) faz uma requisição HTTP ao servidor.
2. O servlet responsável trata a requisição e responde ao
cliente de acordo.
3. O cliente recebe os dados e exibe.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 35 35
PROGRAMAÇÃO JAVA WEB
SERVLET
Container
• Servlets provêm uma solução interessante para o
relacionamento cliente/servidor na internet, tornando-se
uma alternativa para implementação de sistemas para a
Web.
Client Machine J2EE Server
Browser
Servlet JSP Page
BD
Web Container
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 36
PROGRAMAÇÃO JAVA WEB
SERVLET
Container
• O container atua em associação com servidores Web
recebendo as requisições encaminhadas por eles.
• Tipicamente existe apenas uma instância de cada Servlet
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 37 37
PROGRAMAÇÃO JAVA WEB
SERVLET
Container: Multi-thread
▪ Servlets são carregados apenas uma vez e executados de forma
multi-thread podem atender a mais de uma solicitação
simultâneamente.
▪ O Container pode criar vários threads (cópia/ clone, onde os
dados serão compartilhados minimizando alguns problemas) de
modo a permitir que uma única instância do Servlet atenda mais de
uma requisição simultaneamente.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 38 38
PROGRAMAÇÃO JAVA WEB
SERVLET
Protocolo HTTP
▪ O cliente inicia a conversa pedindo uma página, onde não
há callback do servidor para o cliente
▪ GET Request Method, para pedir páginas estáticas ou
dinâmicas
▪ POST Request Method, para pedir páginas dinâmicas
▪ Formulários em páginas HTML podem usar o método GET
ou POST
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 39
PROGRAMAÇÃO JAVA WEB
SERVLET
Protocolo HTTP
▪ Hypertext Transfer Protocol
▪ Seu uso para a obtenção de recursos levou ao estabelecimento
da WWW
▪ Primeira versão (HTTP/0.9) é de 1990
▪ Em 1996 foi liberada a versão 1.1
▪ Fica na camada de aplicação segundo o modelo de OSI
▪ Trafega sobre o protocolo TCP/IP
▪ A comunicação entre o cliente e o servidor é por meio de
mensagens
▪ Não guarda estado entre as trocas de mensagens
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 40
PROGRAMAÇÃO JAVA WEB
SERVLET
Protocolo HTTP
▪ Possui 8 métodos que indicam a ação a ser realizada no
recurso especificado:
▪ GET – Solicita um recurso
▪ HEAD – Solicita metainformações de um recurso
▪ POST – Envia dados para serem processados
▪ PUT – Envia um recurso
▪ DELETE – Excluir o recurso
▪ TRACE – Ecoa a requisição
▪ OPTIONS – Recupera os métodos que o servidor aceita
▪ CONNECT – Uso com proxy para túnel SSL
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 41
PROGRAMAÇÃO JAVA WEB
SERVLET
Classe HttpSerlvet
▪ Além de herdar as características da classe HttpServlet, o
programador precisa sobrescrever ao menos um dos
seguintes métodos.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 42
PROGRAMAÇÃO JAVA WEB
SERVLET
Atividade 2 – Implementar Servlet no projeto JavaWebHelloWord
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 43
PROGRAMAÇÃO JAVA WEB
SERVLET
Atividade 2 – Implementar Servlet no projeto JavaWebHelloWord
▪ Adicionar a classe
Servlet “[Link]”
no projeto.
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 44
PROGRAMAÇÃO JAVA WEB
SERVLET
Atividade 2 – Implementar Servlet no projeto JavaWebHelloWord
▪ Definir o pacote da classe
▪ Definir o nome da classe
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 45
PROGRAMAÇÃO JAVA WEB
SERVLET
Atividade 2 – Implementar Servlet no projeto JavaWebHelloWord
▪ Editar a página [Link], adicionando código para criar um link
Código HTML que criar um link
para classe servlet criada
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 46
PROGRAMAÇÃO JAVA WEB
SERVLET
Atividade 2 – Implementar Servlet no projeto JavaWebHelloWord
▪ Implementar o conteúdo HTML na classe Servlet...
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 47
PROGRAMAÇÃO JAVA WEB
SERVLET
Atividade 2 – Implementar Servlet no projeto JavaWebHelloWord
▪ Executar o projeto
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 48
PROGRAMAÇÃO JAVA WEB
SERVLET
Atividade 2 – Implementar Servlet no projeto JavaWebHelloWord
▪ Acessar o link para classe Servlet Nome da classe
Servlet
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 49
PROGRAMAÇÃO JAVA WEB
SERVLET
Estrutura da Classe Servlet
Consumo de um recurso GET. Ex.:
Exibir uma página estática Web
Consumo de um recurso
POST. Ex.: Enviar dados de
um formulário Web
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 50
PROGRAMAÇÃO JAVA WEB
SERVLET
Implementação do Front
▪ E se for necessário apresentar alguma informação para o usuário no navegador,
será necessário adicionar HTML no JAVA, utilizando a estrutura:
[Link](“ ”);
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 51
PROGRAMAÇÃO JAVA WEB
SERVLET
Interpretando a URI Nome da classe
Servlet
MV - VISIONNIT – INTRODUÇÃO A PROGRAMAÇÃO JAVA WEB - Prof. Jeangrei Veiga 52
PROGRAMAÇÃO JAVA WEB
SERVLET
Configuração [Link]
▪ Aspectos JSP que podem ser
configurados no [Link]
✓ Página inicial do projeto
✓ Parâmetros de iniciação
✓ Mapeamentos de URL
✓ Tempo de sessão.