curso de servlets
DESCRIPTION
Slides apresentados como guia para curso de Java ServletsTRANSCRIPT
![Page 1: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/1.jpg)
1
Arquitetura Web
![Page 2: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/2.jpg)
2
Container Web
![Page 3: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/3.jpg)
3
Web Application
![Page 4: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/4.jpg)
4
Web Application, como funciona ?
![Page 5: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/5.jpg)
5
Web Application
![Page 6: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/6.jpg)
6
Tecnologias do lado do servidor
Estendem as funções básicas do HTTP CGI – Common Gateway Interface API’s : Servlet API , Apache API ... Scripts : ASP, JSP, Cold Fusion, PHP
![Page 7: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/7.jpg)
7
Tecnologias do lado do servidor
Rodam do lado do servidor, portanto não dependem de suporte dos navegadores Os navegadores fornecem apenas a interface com o
usuário
Interceptam o curso normal da comunicação Recebem dados via requisições HTTP ( GET e POST) Devolvem através de respostas HTTP
![Page 8: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/8.jpg)
8
Servlets
O que são servlets ? Extensão de servidor escrita em Java Podem ser usadas para estender qualquer tipo de
aplicação do modelo requisição-resposta Toda Servlet implementa javax.servlet.Servlet
HTTP Servlets Extensões para servidores WEB Estendem javax.servlet.http.HttpServlet Lidam com características do HTTP como GET, POST ,
Cookies , etc.
![Page 9: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/9.jpg)
9
Ciclo de vida da Servlet
O Ciclo de vida de uma Servlet é controlado pelo container Quando o servidor recebe uma requisição, ela é repassada
para o container que delega a uma Servlet O container fica responsável por:
Carregar a classe em memória Criar uma instância da classe Inicializar a instância chamando o método init()
![Page 10: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/10.jpg)
10
Ciclo de vida da Servlet
Depois que a servlet foi inicializada, cada requisição é executada em um método service() O Container cria um ServletRequest, que representa
um objeto de requisição e um ServletResponse, que representa um objeto de resposta, depois chama o service() passando-os como parâmetros
Quando o container decidir remover a servlet da memória ele a finaliza chamando o método destroy()
![Page 11: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/11.jpg)
11
Ciclo de vida da servlet
![Page 12: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/12.jpg)
12
API: Servlets HTTP
Interfaces HTTPServletRequest HTTPServletResponse HttpSession
Classes Abstratas HttpServlet
Classes Concretas Cookie
![Page 13: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/13.jpg)
13
Como escrever um servlet HTTP
Para escrever uma Servlet HTTP, deve-se estender HTTPServlet e implementar um ou mais métodos de serviço , normalmente o doPost() e/ou doGet()
![Page 14: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/14.jpg)
14
Métodos de serviço HTTP
A Classe HTTPServlet redireciona os pedidos encaminhados para service() para os métodos que refletem os métodos HTTP (GET , POST ,etc ...) public void doGet(HttpServletRequest,HttpServletResponse) public void doPost(HttpServletRequest,HttpServletResponse) Outros como doDelete(),doTrace(),doPut(),doOptions() ( o
método HEAD é implementado pelo doGet )
![Page 15: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/15.jpg)
15
Métodos de serviço HTTP
Uma Servlet HTTP deverá estender HTTPServlet e implementar pelo menos um dos métodos doGet() ou doPost()
![Page 16: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/16.jpg)
16
Inicialização
A inicialização de uma HTTPServlet pode ( e deve ) ser feita através do método init()
![Page 17: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/17.jpg)
17
Obtenção de dados de requisições
Alguns métodos de HTTPServletRequest Enumeration getHeaderNames() – obtém nomes dos
cabeçalhos String getHeader(“nome”) – obtém o valor do cabeçalho String getParameter(“nome”) – obtém o valor do
parâmetro HTTP String[] getParameterValues(“nome”) – obtém os valores
do parâmetro HTTP Enumeration getParameterNames() – obtém os nomes
dos parâmetros
![Page 18: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/18.jpg)
18
Obtenção de dados de requisições
Alguns métodos de HTTPServletRequest HttpSession getSession() – retorna a sessão setAttribute(“nome”,obj) – define um atributo obj
chamado nome Object getAttribute(“nome”) – recupera o atributo nome
![Page 19: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/19.jpg)
19
Preenchimento de uma resposta
Alguns métodos de HTTPServletResponse addHeader(String nome, String valor) – adiciona cabeçalho HTTP setContentType(tipo MIME) – define o tipo MIME para gerar a saída
(text/html , image/gif , etc ...) sendRedirect(String url) – redireciona o cliente para a url Writer getWriter() – obtém um Writer para gerar a saída ( ideal para
saídas de texto) OutputStream getOutputStream() – obtém um OutputStream, ideal
para gerar saídas não texto (imagens , etc ...) reset() – limpa toda a saída resetBuffer() – limpa toda a saída, exceto os cabeçalhos
![Page 20: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/20.jpg)
20
Como implementar doGet e doPost
Use doGet() para receber requisições GET Links clicados ou URL digitadas no navegador Alguns formulários que usam GET
Use doPost() para receber dados de formulários POST Se quiser usar ambos, não sobreponha o service(), e
sim implemente os 2 métodos
![Page 21: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/21.jpg)
21
Parâmetros de requisição
Parâmetros são pares nome/valor que são enviados pelo cliente concatenados em Strings e separados por & nome=joao&sobrenome=paulo&id=32
Se o método for GET, os parâmetros são passados em uma única linha no query String, que estende a URL após um “?” /servlet/Teste?nome=joao&sobrenome=paulo&id=32
Se o método for POST, os parâmetros são passados como uma stream no corpo da mensagem
![Page 22: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/22.jpg)
22
Como ler parâmetros de requisição
Seja o método POST ou GET, os valores dos parâmetros podem ser recuperados pelo método getParameter() String parametro = request.getParameter(“id”);
Parâmetros de mesmo nome podem ser repetidos, nesse caso o getParameter() retornará a primeira ocorrência, para obter todas use : String[] parans = request.getParameterValues(“alunos”);
![Page 23: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/23.jpg)
23
Como gerar uma resposta Para gerar uma resposta, primeiro deve-se obter um fluxo
de saída de caracteres (Writer) ou de Bytes ( OutputStream) Writer out = response.getWriter(); OutputStream out = response.getOutputStream();
Deve-se definir o tipo de dados a ser gerado, isto é importante para que o navegador saiba exibir as informações response.setContentType(“text/html”);
Deve-se imprimir os dados no objeto de saída out.println(“<h1>Olá</h1>”);
![Page 24: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/24.jpg)
24
Criando uma Servlet
São necessárias quatro etapas para construir e usar uma servlet Codificar Compilar Implantar (deploy) Executar
![Page 25: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/25.jpg)
25
Compilação e implantação Para compilar, use qualquer distribuição da API
O servlet.jar distribuído pelo Tomcat em common/lib O j2ee.jar distribuído no pacote J2EE da Sun O javax.servlet.jar do JBoss em server/default/lib
Inclua o JAR no seu CLASSPATH ao compilar, ex: > javac –classpath ../servlet.jar;. MeuServlet.java
Para implantar, copie as classes compiladas para um contexto existente no servidor Jboss : /server/default/deploy
![Page 26: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/26.jpg)
26
Execução
Se você instalou as servlets em um contexto raiz, execute-as através da URL: http://localhost:8080/contexto/nome.do.servlet
Para passar parâmetros : Escreva um formulário HTML Passe-os via URL
http://localhost:8080/contexto/nome.do.servlet?id=32
![Page 27: Curso de Servlets](https://reader033.vdocuments.us/reader033/viewer/2022052322/557cc539d8b42a59078b4e67/html5/thumbnails/27.jpg)
27
Exercícios Crie uma servlet (treinamento.exercicios.Lista) , que
imprima em uma tabela todos os nomes de parâmetros enviados e seus valores A servlet deve suportar tanto GET quanto POST