A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Desenvolvimento de Projeto e Aplicações Web

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento de Projeto e Aplicações Web"— Transcrição da apresentação:

1 Desenvolvimento de Projeto e Aplicações Web
Ceça Moraes –

2 Conteúdo Servlets 30/03/2017

3 Servlets Módulos de programas em Java
Pacote javax.servlets incluídos na especificação da J2EE Recebem pedidos, executam o serviço e geram respostas paradigma request-response Residem no servidor Grande uso na geração de conteúdo dinâmico na web Baseados em CGI 30/03/2017

4 CGI – Common Gateway Interface
Especificação de transferência de informações entre um servidor Web e um programa Um programa CGI pode ser escrito em linguagens de programação: C, Perl, Java, or Visual Basic. Maneira usual de fazer o servidor Web interagir dinamicamente com o cliente 30/03/2017

5 CGI – Common Gateway Interface
Exemplo: Formulário HTML usando um programa CGI no servidor para processar os dados digitados Métodos HTTP GET: linha de comando. POST: entrada/saída padrão e sem limite de caracteres. 30/03/2017

6 Formulários Interface HTML para a entrada de dados pelo usuário (cliente) <FORM> define um bloco de formulário. ACTION: a URL do programa CGI METHOD, o método do protocolo HTTP Objetos do formulário: INPUT, SELECT, TEXTAREA NAME identifica uma variável VALUE identifica valor armazenado. 30/03/2017

7 Gateways CGI para SGBDs
Converte comandos de formulário HTML para a linguagem sistema de banco de dados. Converte respostas do SGBD p/ HTML Cliente 30/03/2017

8 Servlets Cria threads para cada requisição Web. 30/03/2017

9 Arquitetura Servidor Web Container Servlet Context 30/03/2017

10 Características Servlets não têm GUI
Rodam no servidor e não no cliente Não são carregados pela rede Máquina virtual está no servidor (e não no Browser) Mais eficiente, mais completa e mais confiável 30/03/2017

11 Ciclo de vida de servlets
service(): Recebe e processa as requisições pedidos GET são repassados para o método doGet() pedidos POST são repassados para o método doPost() 30/03/2017

12 Implementação Simples
Herdar da classe HttpServlet Redefinir métodos doGet() e doPost() para implementar os serviços 30/03/2017

13 Implementação Simples
Dentro dos métodos doGet()/doPost(), ler parâmetros vindos do formulário HTML ou da URL Processar os parâmetros, fazer validações, executar lógica de negócio e montar a reposta para o usuário 30/03/2017

14 Acesso aos servlets Diretamente através da URL
matr=“2312"&valor=1000 30/03/2017

15 Acesso aos servlets Através de formulários HTML
Pode escolher métodos GET ou POST Passagem de parâmetros automática Exemplo: <form method=“POST” action=“ <input type=“text” name=“matr” value=“2312”> <input type=“text” name=“valor” size=“1000”> <input type=“submit” > </form>

16 Acesso aos servlets 30/03/2017

17 Classes e Interfaces básicas
Interface Servlet Métodos para gerenciar servlets Classe GenericServlet Implementa interface Servlet HttpServlet Estende GenericServlet Acrescenta funcionalidade específica para o protocolo HTTP Servlet <<Interface>> GenericServlet HttpServlet <<interface>> 30/03/2017

18 Classes e Interfaces básicas
ServletRequest Conteúdo que é passado do cliente para o servidor ServletResponse O que o servidor retorna para o cliente HttpServletRequest, HttpServletResponse Estendem ServletRequest e ServletResponse Comunicação específica para o protocolo HTTP 30/03/2017

19 HttpServlet Fornece um framework para lidar com o protocolo HTTP
Introduz suas próprias subclasses de request e response para lidar com o protocolo HTTP HTTPServletRequest e HTTPServletResponse 30/03/2017

20 HttpServlet: recebendo dados
getQueryString Retorna um String url-encoded: nome=Fernando&credibilidade=0 Obtenção dos parâmetros getParameter getParameterValues getParameterNames 30/03/2017

21 HttpServlet: Exemplo import javax.servlet.*; import java.io.*;
public class ServletHelloWorld extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out = res.getWriter(); out.println("<HEAD><TITLE>Primeiro”); out.println(“Servlet</TITLE></HEAD>"); out.println("<BODY>"); out.println("<center><h1>Hello World!</h1><center>"); out.println("</BODY>"); out.close(); } 30/03/2017

22 HttpServlet: Exemplo 30/03/2017

23 Fase de serviço: service()
Os dados da requisição chegam ao servlet através de um objeto do tipo ServletRequest A requisição pode ser respondidada através de um objeto do tipo ServletResponse Protocolo HTTP, os objetos usados são instâncias de HttpServletRequest e HttpServletResponse 30/03/2017

24 ServletRequest Métodos para obter: Informações do cliente
Informações da URL Parâmetros fornecidos pelo usuário

25 ServletRequest Parâmetros
String getParameter(String nomeParametro) Retorna um string com o valor do parâmetro especificado na variável nomeParametro ou null se o parâmetro não existir 30/03/2017

26 ServletRequest Parâmetros
String[] getParameterValues(String nomeParametro) Retorna os valores do parâmetro especificado na variável nomeParametro, como um array de strings, ou null se o parâmetro não existir Parâmetros com múltiplos valores, como listas 30/03/2017

27 ServletRequest Parâmetros
Enumeration getParameterNames() Retorna o nome dos parâmetros do request como uma enumeração de strings, ou uma enumeração vazia, se não houver parâmetros 30/03/2017

28 ServletRequest - Parâmetros
ServletRequest representa o pedido getParameter(String nomeParametro) // ... public class HelloPersonServlet extends HttpServlet { public void doGet(HttpServletRequest request, // ... { String nome = request.getParameter(“nome”); out.println("<h1> Hello " + nome + " </h1>"); }

29 HttpServletRequest Métodos para leitura de cookies
Cookie[] getCookies() Métodos para gerenciamento de sessões HttpSession getSession(boolean create) 30/03/2017

30 ServletResponse Encapsula a reposta do servlet 30/03/2017

31 ServletResponse - Saída
getWriter() para escrever dados textuais getOutputStream() para escrever dados binários Pode-se chamar o método setContentType() antes de chamar getWriter() ou getOutputStream() o tipo padrão é “text/plain” 30/03/2017

32 ServletResponse - Saída
Exemplo ... response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML><BODY>Bom Dia!</BODY></HTML>"); 30/03/2017

33 HttpServletResponse Métodos para
enviar códigos de status ou de erros para o cliente redirecionar o cliente para outra URL adicionar cookies à resposta .... 30/03/2017

34 Mantendo o Estado entre Requisições

35 Mantendo o Estado entre Requisições
Objetivo manter um estado conversacional entre o cliente e o servidor persistindo algum tipo de informação entre as requisições do cliente Cookies e Sessões 30/03/2017

36 Cookies Concebidos pela Netscape (versão 0)
Informações ficam armazenadas no browser, em memória ou em disco Suportado na API de Servlets classe Cookie 30/03/2017

37 Cookies Características São enviados apenas para o servidor de origem
Tamanho máximo de 4KB por cookie Um navegador armazena no máximo 20 cookies por servidor Informações do cookie são enviadas e recebidas em toda transação HTTP São enviados apenas para o servidor de origem 30/03/2017

38 Cookies: manipulação Recuperação dos cookies Adição de cookies
getCookies() da classe HttpServletRequest retorna uma matriz de cookies acessíveis da página Adição de cookies addCookie(Cookie) da classe HttpServletResponse envia um cookie para o navegador 30/03/2017

39 Sessões O protocolo HTTP não mantém estado de sessão
As aplicações Web devem mantê-lo quando necessário São criadas no lado do servidor podem armazenar variáveis e objetos de programas Java Uma sessão por cliente Expiram depois de um intervalo de tempo definido no servidor 30/03/2017

40 Sessões A sessão é única para cada cliente e persiste através de várias requisições 30/03/2017

41 Sessões Implementadas pela interface HttpSession 30/03/2017

42 Sessões Operações básicas Criação da sessão
HttpSession session = req.getSession(boolean create) Retorna a sessão corrente associada com o request req Se não existe uma sessão, e create=true, retorna uma nova sessão Se create=false e o request não possui uma sessão, este método retorna null 30/03/2017

43 Sessões Operações básicas Inserção de um objeto
Poupanca p = new Poupanca(“34560”,513.00); session.setAttribute(“poupanca”,p); 30/03/2017

44 Sessões Operações básicas Consulta a um objeto Remoção do objeto
Poupanca objeto = (Poupanca) session.getAttribute(“poupanca”) Remoção do objeto session.removeAttribute(“poupanca”) 30/03/2017

45 Sessões: propriedades
Enumeration getAttributeNames() retorna uma enumeração com todos os nomes dos atributos armazenados na sessão boolean isNew() retorna true se a sessão é nova para o cliente. Retorna false para sessões preexistentes 30/03/2017

46 Sessões: propriedades
boolean isNew() Para saber se uma sessão é nova, use o método isNew() if (session.isNew()) { myObject = new BObject(); } else { myObject = (BObject) session.getAttribute("obj"); } 30/03/2017

47 Gerenciamento de Sessão
Não há como saber que cliente não precisa mais da sessão Pode-se definir um timeout em minutos para a duração de uma sessão desde a última requisição do cliente setMaxInactiveInterval(int segundos) define novo valor para timeout se intervalo for -1 sessão nunca expira int getMaxInactiveInterval() recupera valor de timeout 30/03/2017

48 Sessões – Exemplo salvando objeto na sessão
public class ControleSessaoServlet { public void doGet( ...) { HttpSession session =request.getSession(true); response.setContentType("text/html"); PrintWriter out = response.getWriter(); String nome = request.getParameter("nome"); Pessoa p = new Pessoa(nome); session.setAttribute("usuario",p); out.println("<a href=\"/servlet/SeuNomeServlet\">"+ "Clique aqui</a>"); out.close(); } 30/03/2017

49 Sessões – Exemplo recuperando objeto da sessão
public class SeuNomeServlet { public void doGet() { HttpSession session = request.getSession(false); response.setContentType("text/html"); PrintWriter out = response.getWriter(); if (session != null) { Pessoa p = (Pessoa) session.getAttribute("usuario"); out.println("Seu nome é" + p.getNome()); } else { out.println("Sessão inválida"); } out.close(); 30/03/2017

50 Compartilhamento de objetos na sessão
Como a sessão pode persistir além do tempo de uma requisição, é possível que a persistência de alguns objetos não sejam desejáveis Use o método removeAttribute("nome") para remover objetos da sessão 30/03/2017


Carregar ppt "Desenvolvimento de Projeto e Aplicações Web"

Apresentações semelhantes


Anúncios Google