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 – cecafac@gmail.comcecafac@gmail.com

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/201410 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/201411 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/201412 Implementação Simples Herdar da classe HttpServlet Redefinir métodos doGet() e doPost() para implementar os serviços

13 3/5/201413 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/201414 Acesso aos servlets Diretamente através da URL http://www.faculdademarista.co 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/201416 Acesso aos servlets

17 3/5/201417 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/201418 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/201419 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/201420 HttpServlet : recebendo dados getQueryString Retorna um String url-encoded: nome=Fernando&credibilidade=0 Obtenção dos parâmetros getParameter getParameterValues getParameterNames

21 3/5/201421 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/201422 HttpServlet : Exemplo

23 3/5/201423 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/201425 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/201426 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/201427 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 + " "); //... } http://localhost:8080/servlet/HelloPersonServlet?nome=Eduardo

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

30 3/5/201430 ServletResponse Encapsula a reposta do servlet

31 3/5/201431 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/201432 ServletResponse - Saída Exemplo... response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(" Bom Dia! ");...

33 3/5/201433 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/201435 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/201436 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/201437 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/201438 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/201439 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/201440 Sessões A sessão é única para cada cliente e persiste através de várias requisições

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

42 3/5/201442 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/201443 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/201444 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/201445 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/201446 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/201447 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/201448 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/201449 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/201450 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