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

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

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

Apresentações semelhantes


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

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

2 3/5/20142 Conteúdo Servlets

3 3/5/20143 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

4 3/5/20144 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

5 3/5/20145 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.

6 3/5/20146 Formulários Interface HTML para a entrada de dados pelo usuário (cliente) 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.

7 3/5/20147 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

8 3/5/20148 Servlets Cria threads para cada requisição Web.

9 3/5/20149 Arquitetura Servidor Web Container Servlet Context

10 3/5/ 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

11 3/5/ 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()

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

13 3/5/ 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

14 3/5/ Acesso aos servlets Diretamente através da URL m.br/servlet/ServletPgtohttp://www.faculdademarista.co m.br/servlet/ServletPgto? matr=2312"&valor=1000

15 15 Acesso aos servlets Através de formulários HTML Pode escolher métodos GET ou POST Passagem de parâmetros automática Exemplo:

16 3/5/ Acesso aos servlets

17 3/5/ 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 > GenericServlet HttpServlet >

18 3/5/ 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

19 3/5/ 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

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

21 3/5/ 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(" Primeiro); out.println(Servlet "); out.println(" "); out.println(" Hello World! "); out.println(" "); out.close(); }

22 3/5/ HttpServlet : Exemplo

23 3/5/ 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

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

25 3/5/ 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

26 3/5/ 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

27 3/5/ 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

28 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(" Hello " + nome + " "); //... }

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

30 3/5/ ServletResponse Encapsula a reposta do servlet

31 3/5/ 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

32 3/5/ ServletResponse - Saída Exemplo... response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" Bom Dia! ");...

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

34 Mantendo o Estado entre Requisições

35 3/5/ 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

36 3/5/ 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

37 3/5/ Cookies Características 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

38 3/5/ Cookies: manipulação Recuperação dos 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

39 3/5/ 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

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

41 3/5/ Sessões Implementadas pela interface HttpSession

42 3/5/ 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

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

44 3/5/ Sessões Operações básicas Consulta a um objeto Poupanca objeto = (Poupanca) session.getAttribute(poupanca) Remoção do objeto session.removeAttribute(poupanca)

45 3/5/ 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

46 3/5/ 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"); }

47 3/5/ 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

48 3/5/ 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(" "+ "Clique aqui "); out.close(); }

49 3/5/ 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(); } Sessões – Exemplo – recuperando objeto da sessão

50 3/5/ 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


Carregar ppt "Desenvolvimento de Projeto e Aplicações Web Ceça Moraes –"

Apresentações semelhantes


Anúncios Google