Download - psw_aula02
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 1/90
PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB
Prof. Dr. Daniel Caetano
2013 - 2
INTRODUÇÃO À
TECNOLOGIA SERVLETS
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 2/90
Objetivos
• Apresentar o conceito aplicaçõesorientada a serviços via web
• Apresentar o papel dos
contentores Java
• Capacitar para a construção deAplicações Web simples
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 3/90
Material de Estudo
Material Acesso ao MaterialNotas de Aula http://www.caetano.eng.br/
(Prog. Servidor Web - Aula 2)
Apresentação http://www.caetano.eng.br/ (Prog. Servidor Web - Aula 2)
Material Didático -
Java: ComoProgramar
(6ª Edição) Páginas 928 a 948
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 4/90
ARQUITETURA WEB E SERVIÇOS
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 5/90
Arquitetura Web e Serviços•
Na primeira aula, vimos esse sistema:
Cliente
Servidor
REQUEST
RESPONSE
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 6/90
Arquitetura Web e Serviços
• Quem é responsável por gerar a request?
• O computador cliente
– Navegador
– Outro programa qualquer
• Quem é responsável por gerar a response?
• O computador servidor
– Programa servidor
• O servidor presta um serviço ao cliente
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 7/90
Arquitetura Web e Serviços
• O cliente: navegador
• Requisições são geradas quando – Digitamos uma nova URL / Clicamos em um link
– Enviamos um formulário
– Enviamos uma consulta AJAX
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 8/90
Arquitetura Web e Serviços
• O servidor: aplicativo em computador 24/7• Este aplicativo é composto de serviços
• Serviço recebe requests e devolve responses
– Apenas quando uma requisição chega ele atua
• É este tipo de aplicativo, baseado emserviços, que iremos desenvolver!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 9/90
Arquitetura Web e Serviços
• Faz sentido um servidor dedicado a um únicoserviço simples?
• A resposta é: depende!
•
Depende de quê? – Da demanda sobre estes serviços
– Do processamento exigido pelos serviços
– Dos requisitos de segurança e qualidade (SLA)
• É comum ter servidores web e servidores debanco de dados dedicados
• Se a demanda de um serviço não é grande, em
geral não faz sentido ter infra exclusiva...
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 10/90
Arquitetura Web e Serviços
• Vários serviços web na mesma máquina – Comum
• No caso do Java, estes pequenos serviços
são chamados de servlets
• Agora... que tal centralizar funções comuns?
– Ex.: Gerenciamento de Conexões
• Esse é o papel do contentor Java
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 11/90
Arquitetura Web e Serviços
• Existem vários contentores Java – GlassFish
– TomCat
– TomCat + JBoss – Dentre outros...
• Neste curso, usaremos o GlassFish – É o mais completo
– É o padrão sugerido pela Oracle
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 12/90
O CONTENTOR JAVA E O CICLO DE VIDA
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 13/90
O Contentor Java
• O contentor Java também é conhecido comoservidor de aplicações Java
• Gerencia a execução de serviços web Java
• Disponibilizar infraestrutura necessária paraestes serviços
• Permite a comunicação com outroscomponentes Java e aplicações
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 14/90
O Contentor Java
• Servidor de Aplicações - Funcionamento básico:1. Aguarda pelas requests
2. Repassa a request para o servlet correto
3. Recebe a response do servlet 4. Devolve a response p/ cliente que enviou a request
• Ou seja, ele é responsável por gerenciar asconexões (dentre outras coisas)
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 15/90
O Contentor Java
• Resumidamente...
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 16/90
O Contentor Java
• O servidor de aplicativos não faz só isso... – Dentre outras coisas...
– Ele também cuida do ciclo de vida do servlet
1. Quando necessário, inicia o Servlet
2. Coloca este Servlet no estado “ativo”
3. Finaliza o Servlet quando não é maisnecessário
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 17/90
Ciclo de Vida do Servlet
• Resumidamente...
init()
• Quando
necessário
service()• Aguardando
conexões
destroy() • Quando não émais necessário
Invocação
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 18/90
SERVLETS NO NETBEANS
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 19/90
Criando um Servlet•
Iniciaremos criando um projeto
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 20/90
Criando um Servlet•
Escolha o tipo: Java Web e Aplicação Web
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 21/90
Criando um Servlet•
Escolha o tipo: Java Web e Aplicação WebJava
ATENÇÃO
Caso apareça uma janelasolicitando autorização paraacesso, responda “Permitir”
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 22/90
Criando um Servlet•
Dê um nome ao seu projeto: ex.: WProjeto1
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 23/90
Criando um Servlet•
Dê um nome ao seu projeto: ex.: WProjeto1
Nomes de projeto devem
a) Começar com letra maiúscula
b) Não ter espaçosc) Não usar acentos ou caracteres especiaisd) Ex.: WProjeto1e) SUGESTÃO: Inicie projetos Web com a letra W
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 24/90
Criando um Servlet•
Dê um nome ao seu projeto: ex.: WProjeto1
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 25/90
Criando um Servlet•
Selecione o contentor: GlassFish Server
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 26/90
Criando um Servlet•
Este é o endereço da aplicação: /WProjeto1
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 27/90
Criando um Servlet•
Clique em Finalizar
ATENÇÃO
Caso apareça uma janelasolicitando autorização paraacesso, responda “Permitir”
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 28/90
Criando um Servlet•
Esta tela vai aparecer... Há campos novos!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 29/90
Criando um Servlet•
Execute o projeto e veja o que ocorre!
EXECUTE O PROJETO
ATENÇÃOCaso apareça uma janela
solicitando autorização para
acesso, responda “Permitir”
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 30/90
Criando um Servlet•
Por padrão, o index.jsp é executado
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 31/90
Criando um Servlet•
Vamos construir um formulário...
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 32/90
Criando um Servlet•
Vamos construir um formulário...
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 33/90
Criando um Servlet•
Vamos construir um formulário...Isso irá gerar uma request paraum aplicativo web chamado Imc.
Precisamos criá-lo!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 34/90
Criando um Servlet•
Clique com o botão direito em “Pacotes deCódigo Fonte”
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 35/90
Criando um Servlet•
E selecione Novo > Pacote Java...
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 36/90
Criando um Servlet•
Agora dê um nome ao pacote: imc
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 37/90
Criando um Servlet•
Agora dê um nome ao pacote: imc
Nomes de PACOTES devem
a) Começar com letra minúsculab) Não ter espaçosc) Não usar acentos ou caracteres especiaisd) Ex.: imc
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 38/90
Criando um Servlet•
E clique em Finalizar
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 39/90
Criando um Servlet•
Agora clique com o botão direito no pacoteimc e selecione Novo > Servlet...
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 40/90
Criando um Servlet•
Agora dê um nome ao servlet: Imc
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 41/90
Criando um Servlet•
Agora dê um nome ao servlet: Imc
Um SERVLET é uma CLASSE, então...
a) Começar com letra maiúsculab) Não ter espaçosc) Não usar acentos ou caracteres especiaisd) Ex.: Imc
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 42/90
Criando um Servlet•
Agora dê um nome ao servlet: Imc
Este nome deve ser o
MESMO usado no campoaction do FORM!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 43/90
Criando um Servlet•
E clique em Próximo
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 44/90
Criando um Servlet• MARQUE a opção Adiciona informação ao descritor
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 45/90
Criando um Servlet• MARQUE a opção Adiciona informação ao descritor
Nomes paraacesso ao Servlet
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 46/90
Criando um Servlet• E clique em Finalizar
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 47/90
Criando um Servlet• Isso vai criar uma série de arquivos e abrir o servlet
na área de edição... O primeiro é o de configuração:
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 48/90
CONFIGURANDO O SERVLET
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 49/90
Configurações do Servlet
• O arquivo de configuração é chamadoweb.xml...
• Algumas vezes existem vários deles
• O que nos interessa está na pasta web-inf • Clique duas vezes neste arquivo...
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 50/90
Configurações do Servlet•
A aba Geral serve para indicar a descrição doSISTEMA, além de indicar o timeout (veremosisso depois)
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 51/90
Configurações do Servlet•
A aba Servlets configura itens importantes
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 52/90
Configurações do Servlet•
A ordem de inicialização
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 53/90
Configurações do Servlet•
O nome do Servlet
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 54/90
Configurações do Servlet•
A classe do Servlet (pode ser trocada!)
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 55/90
Configurações do Servlet•
E o nome de acesso do Servlet
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 56/90
Configurações do Servlet•
Essas e outras configurações podem ser feitasdiretamente pela aba XML...
• Mas pelo NetBeans é mais conveniente!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 57/90
PAUSA PARA O CAFÉ
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 58/90
VOLTANDO A EDITAR O SERVLET
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 59/90
Criando um Servlet• O outro arquivo importante é o arquivo do Servlet,
neste caso o Imc.java.
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 60/90
Limpando a área• Vamos apagar os comentários do NetBeans
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 61/90
Limpando a área• Vamos esconder código “desnecessário”
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 62/90
Entendendo o Servlet• Observe que o Servlet extends HttpServlet
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 63/90
Entendendo o Servlet• Vamos entender a estrutura
Este é o trecho que
mais nos interessa!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 64/90
Entendendo o Servlet• Vamos entender a estrutura
Não mexa aqui!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 65/90
Entendendo o Servlet• Vamos entender o funcionamento
Quando uma request chega aocontentor, ela é repassada para esse
método, juntamente com uma reponse,onde armazenaremos a saída
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 66/90
Entendendo o Servlet• Vamos entender o funcionamento
A primeira coisa feita é aconfiguração do objeto out, queusaremos para imprimir a saída
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 67/90
Programando o Servlet• Aqui é onde escreveremos o nosso código
• Temos de imprimir um HTML!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 68/90
Programando o Servlet• Acompanhe o professor!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 69/90
Programando o Servlet• Acompanhe o professor!
Execute e veja oque ocorre!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 70/90
Programando o Servlet• Falta fazer o cálculo:
– IMC = PESO / (ALTURA * ALTURA)
• Mas antes...
– É preciso pegar os parâmetros na request...
• Pegar... Parâmetro... Da request...
– request.getParameter(“nome”)
• Os nomes são “peso” e “altura” (do form!)• NOTA: as informações da request estão
sempre no formato String!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 71/90
Programando o Servlet• Execute e veja o que acontece!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 72/90
Programando o Servlet• Execute e veja o que acontece!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 73/90
Programando o Servlet• Execute e veja o que acontece!
OPA! Não pulou linha!a) Estamos imprimindo HTMLb) Onde está o <p> e o </p> ???
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 74/90
Programando o Servlet• Execute e veja o que acontece!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 75/90
Programando o Servlet• Execute e veja o que acontece!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 76/90
Programando o Servlet
•
Antes de fazer os cálculos, porém...
• Temos que converter estas Strings paranúmeros reais, do tipo double
• Existe um método pronto para isso, na classeDouble... Ele se chama valueOf
• NOTA: Use PONTO para indicar peso e altura – Certo: 1.70
– Errado: 1,70
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 77/90
Programando o Servlet• Execute e veja o que acontece!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 78/90
Programando o Servlet• Execute e veja o que acontece!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 79/90
Programando o Servlet• Podemos melhorar um pouco mais...
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 80/90
Programando o Servlet• Podemos melhorar um pouco mais...
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 81/90
Programando o Servlet• O programa tem problemas com “,” nos
números? Experimente!
• Corrija substituindo:
• Por isso:
d l
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 82/90
Programando o Servlet• Para imprimir mensagens de acordo com o
resultado, experimente acrescentar o códigoabaixo!
d l
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 83/90
Programando o Servlet• O servlet ainda “capota” quando um “texto” é
digitado nos campos numéricos! Experimente!
• Corrija isso acrescentando o “catch” abaixo!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 84/90
ATIVIDADE ESTRUTURADA
O i ã A i id d E d
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 85/90
Orientação Atividades Estruturadas
•
Esta disciplina tem Atividades Estruturadas • Elas serão disponibilizadas futuramente
• A primeira consiste em uma pesquisa
(leitura e redação)• A segunda consiste em compreender e
modificar um sistema funcional
• Aguardem maiores informações!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 86/90
ATIVIDADE
P d S l
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 87/90
Programando o Servlet• Modifique o Servlet Criado:
– Para imprimir mensagens diferentes para cadanível de IMC:
• < 18.5 => Cuidado! Abaixo do peso!
• 18.5 <= imc < 25.0 => Parabéns! Peso ideal!• 25.0 <= imc < 30.0 => Atenção! Acima do peso!
• Imc >= 30.0 => Cuidado! Está obeso!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 88/90
CONCLUSÕES
R
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 89/90
Resumo• As aplicações Web funcionam como pequenos
programas que rodam no servidor
• Estes programas, em Java, são feitos com atecnologia Servlets
• Servlet recebe request e devolve response
• TAREFA: Trabalho A
• Ainda não estou seguro com esses tais Servlets!
• Na próxima aula, exercitaremos mais...
• E veremos algumas novidades!
7/25/2019 psw_aula02
http://slidepdf.com/reader/full/pswaula02 90/90
PERGUNTAS?