1 / 35

Curso de JavaWeb Instrutores: Rodrigo Cardoso e Maria Carolina

Curso de JavaWeb Instrutores: Rodrigo Cardoso e Maria Carolina Material por: Rodrigo Cardoso ( rcaa2@cin.ufpe.br ) Maria Carolina ( mcts@cin.ufpe.br ). Você pode: copiar, distribuir, exibir e executar a obra criar obras derivadas fazer uso comercial da obra Sob as seguintes condições:

violet
Download Presentation

Curso de JavaWeb Instrutores: Rodrigo Cardoso e Maria Carolina

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curso de JavaWeb Instrutores: Rodrigo Cardoso e Maria Carolina Material por: Rodrigo Cardoso (rcaa2@cin.ufpe.br) Maria Carolina (mcts@cin.ufpe.br)

  2. Você pode: • copiar, distribuir, exibir e executar a obra • criar obras derivadas • fazer uso comercial da obra • Sob as seguintes condições: • Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante. • Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta. • Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra. • Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor. • Veja aqui a licença completa

  3. Servlets

  4. Introdução a Servlets • Extensões do Servidor Web em Java • Componentes disponibilizados no servidor, responsáveis por aceitar pedidos,executar o serviço solicitado e gerar respostas. • Funcionam independente do browser • Uso: • Processar e armazenar dados submetidos por um formulário HTML; • Acesso dinâmico (ex: consulta ao banco de dados)

  5. Introdução a Servlets • São programas (leia-se classe) Java • Segurança, robustez, multiplataforma. • Alta performance • Máquina virtual no servidor. • Carregados na memória apenas uma vez, no momento em que se der a primeira requisição. • Não são carregados pela rede, pois apenas parâmetros trafegam. • Podem: • Acessar cookies e controlar sessão do usuário.

  6. Funcionamento básico

  7. Informações adicionais • Tecnologias semelhantes • JSP • CGI (PERL, shells, C) • ASP (Tecnologia Microsoft) • PHP • Acesso aos servlets • Diretamente da URL (uso de GET) • Através de formulários HTML (uso de POST)

  8. Passos essenciais • Toda classe Java que seja um servlet deve: • Estender de HttpServlet • Redefinir métodos doGet e/ou doPost • Ler parâmetros, processá-los e fazer validações • Instanciar classes auxiliares e básicas • Gerar resposta ao cliente

  9. Classes e interfaces importantes • HttpServlet • ServletRequest • Contém o que é passado na requisição do cliente ao servidor • Informa sobre o protocolo, IP do cliente, parâmetros e corpo • ServletResponse • O que servidor retorna ao cliente • HttpServletRequest e HttpServletResponse • Comunicação específica para HTTP

  10. Exemplo de Servlet

  11. Prática 1 • Criar um Servlet seguindo os passos mostrados. • Adicionar ao projeto a classe DadosData.java • Codifiquem dentro do método doGet.

  12. Funcionamento de um Servlet

  13. Ciclo de vida de um Servlet Carga de Classe Instanciação Instanciação Instanciação init( ) (...) (...) init( ) pode ser chamado várias vezes, porém o destroy ( ) deve ser executado antes Executado 0 ou mais vezes service( ) destroy( ) Finalização e GarbageCollector

  14. Fases • Inicialização • Acontece na primeira vez em que a instância do servlet é chamada • Serviço • Acontece entre as outras duas • Atende a todas as requisições • Destruição • O servlet é removido do container

  15. Fase de inicialização • public void init(ServletConfig cfg) • Não há problema de concorrência • Útil para fazer inicializações simples ou demoradas. • Ler arquivos • Criar threads • Alocar conexões com a base de dados

  16. Fase de serviço • public void service (ServletRequest req, ServletResponse res) • Trata todas as solicitações do servlet • Método chamado várias vezes, porém apenas uma vez para cada requisição. • Pode ser chamado simultaneamente por várias threads. • O desenvolvedor tem a responsabilidade de controlar acesso simultâneos a recursos compartilhados

  17. Fase de serviço • Os pedidos chegam através do parâmetro do tipo ServletRequest • As respostas são enviadas ao cliente através do parâmetro do tipo ServletResponse • No caso do uso de HTTP, usa-se extensões destes objetos: HttpServletRequest e HttpServletResponse. O método service encaminha para outros dois métodos: • public void doGet(HttpServletRequest req, HttpServletResponse resp) • public void doPost (HttpServletRequest req, HttpServletResponse resp)

  18. Fase de serviço: ServletRequest • Traz informações úteis: • Dados do cliente • Dados da URL • Dados do conteúdo • Parâmetros fornecidos pelo usuário • Acessar parâmetros • String getParameter(String) • String[] getParameterValues(String) • Enumeration getParameterNames()

  19. Fase de serviço: ServletResponse • Encapsula a resposta do servlet • Como usar: • Métodos mais comuns: • PrintWriter getWriter() • ServletOutputStream getOutputStream() • void setContentType(String) – chamado antes dos outros dois. response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<HTML><BODY>Bom Dia!</BODY></HTML>");

  20. Fase de serviço: HttpServletRequest • Métodos para leitura do cabeçalho HTTP • getServletPath(), getPathInfo(), getMethod(), getQueryString(), getRemoteUser(), getAuthType(), getHeader(String name) • Método para leitura de cookies • Cookie[] getCookies() • Método para gerenciamento de sessões • HttpSession getSession(boolean create)

  21. Fase de serviço: HttpServletResponse • Envia código de status ou de erros ao cliente • Contém constantes para identificar códigos de status (ex: int HttpServletResponse .SC_NOT_FOUND = 404) • Usado para: • Escrever cookies • Manipular cabeçalhos HTTP • Redirecionar o cliente

  22. Fase de destruição • public void destroy() • Método chamado quando todas as chamadas a service() forem completadas ou após um tempo ocioso. • Usado para fechar os recursos abertos na fase de inicialização • Após a execução desse método, o servlet pode sofrer garbage collection a qualquer momento.

  23. Exceções levantadas • Exceções mais relevantes para servlets: • ServletException • Falha geral no servlet • UnavailableException • Permanentemente: só solucionada pelo administrador • Temporariamente: problemas podem ser corrigidos com o tempo • IOException • O container é capaz de tratar e apresentar páginas de erro específicas para as exceções acima e RuntimeException. Qualquer outra exceção causa a queda do container

  24. Mantendo estado entre requisições Uso de session e cookies

  25. Manter estado • Necessidade • Guardar informações entre requisições de um mesmo cliente • Problema • HTTP não mantém estado • Soluções • Campos ocultos em formulários (hidden) • Cookies • Sessões (HttpSession)

  26. Sessions • Utilizados no lado do servidor • Pode-se armazenar objetos Java • Um por cliente (não por servlet) • Expira após algum tempo inativo • Implementados pela classe HttpSession ou através de Cookies ou reescrita de URLs. • Pode ser acessada via request quando usada a primeira opção.

  27. Sessions • Operações básicas: • Criação da session • Inserção de um objeto na session • Acesso a um objeto na session • Remoção de um objeto da session HttpSessionsession = req.getSession(true); session.setAttibute(“alias”, objeto); TipoObjeto objeto = (TipoObjeto) session.getAttribute(“alias”); session.removeAttribute(“alias”);

  28. Sessions: propriedades • Enumeration getAttributeNames() • boolean isNew() • void invalidate() • void setMaxInactiveInterval(int segundos) • int getMaxInactiveInterval()

  29. Cookies • Dados permanentes mantidos num browser do cliente entre múltiplas sessões. • Diferentemente da session, cada cookie representa um par e não uma coleção de pares nome-valor. • Por padrão, existem enquanto a sessão do browser existir. • Mas pode-se usar o médodo setMaxAge(int) Cookiecookie = newCookie(“alias”, “valor”); response.addCookie(cookie);

  30. Colaboração entre Servlets

  31. Colaboração entre Servlets • Divisão de tarefas entre Servlets • Um servlet inicia o processamento de uma requisição e repassa a outro servlet • Mecanismo utilizado: “Request Dispatching” • forward(...): passa para outro servlet, JSP ou página HTML. O receptor da chamada é responsável por produzir a resposta ao cliente • include(...): passa os dados para processamento ou produção de conteúdo, mas o controle é mantido no próprio servlet.

  32. Colaboração entre Servlets • forward • include ServletContextsc = this.getServletContext(); RequestDispatcherrd = sc.getRequestDispatcher(“/OutroServlet”); try { rd.forward(request,response); } catch (Exception ex) { // Tratar aqui qualquer possível exceção } ServletContextsc = this.getServletContext(); RequestDispatcherrd = sc.getRequestDispatcher(“/OutroServlet”); try { rd.include (request,response); } catch (Exception ex) { // Tratar aqui qualquer possível exceção }

  33. Prática 2 • Utilizando os conceitos vistos até agora, criar uma aplicação que realize: • Login, validando os dados fornecidos com alguns dos logins válidos. • Uma tela de boas vindas ao usuário logado • Mostre uma tela com os dados do usuário que acabou de logar. • Logout do usuário. • Além de tudo isso, valida a existência de uma sessão iniciada. • Dicas: utilize HttpSession.

  34. Prática 2

  35. Pratica 2

More Related