TI Basico - Prog OO (Java) - Modulo 9_vAluno[1]

  • Upload
    soros87

  • View
    83

  • Download
    0

Embed Size (px)

Citation preview

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9Arquitetura de aplicaes Web e JEERoberto Campello [email protected]

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 1-82

TI Bsico Programao Orientada a Objetos (Java)

Objetivos para o concurso Arquitetura cliente servidor. Estrutura de um web site. Descrever a plataforma Java Enterprise Edition (JEE). Introduo a servlets e jsps. MVC JSF

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 2-82

TI Bsico Programao Orientada a Objetos (Java)

Arquitetura HTTP Cliente Servidor Diagrama de um web server.

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 3-82

TI Bsico Programao Orientada a Objetos (Java)

Cliente e Servidor HTTP HTML Informa ao browser como exibir o contedo do usurio.

HTTP Protocolo de rede que possui caractersticas especficas para web, e dependende do TCP/IP para obter a solicitao e a resposta completas de um lugar para outro que os clientes e os servidores usam para se comunicarem.Principais elementos do fluxo da solicitao: O Mtodo HTTP (ao a ser executada).Solicitao HTTP

A pgina que ser acessada (uma URL). Os parmetros do formulrio (como argumentos para o mtodo).

Resposta HTTP

Web browserCliente

Servidor

Principais elementos do fluxo da resposta: Um cdigo de status (no caso de uma bem sucedida) Tipo de contedo (texto, imagem, HTML, etc.) O contedo (o HTML real, a imagem, etc).

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 4-82

TI Bsico Programao Orientada a Objetos (Java)

Principais mtodos HTTP GET Mtodo mais simples do HTTP, seu principal trabalho na vida pedir ao servidor que consiga um recurso e envi-lo de volta.GET / : GET pode enviar dados atravs da URI (tamanho limitado) ?dados

HEAD Mtodo idntico ao GET mas o servidor no devolve a pgina (devolve apenas o cabealho). POST uma solicitao mais poderosa. Voc pode solicitar algo e, ao mesmo tempo, enviar dados de um formulrio para o servidor.POST / :

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 5-82

TI Bsico Programao Orientada a Objetos (Java)

HTML O HTML uma linguagem declarativa, interpretada pelo browser que define apenas como a informao organizada e apresentada. Define a interface do usurio na Web. utilizado para as seguintes finalidades: Definir o lay-out da tela da aplicao Construir uma interface com formulrios para envio de dados ao servidor. Servir de base para aplicaes baseadas na Web que rodam dentro de um browser (Navegador).

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 6-82

TI Bsico Programao Orientada a Objetos (Java)

HTML Exemplo: Pagina JSP Curso Java Avanado para Web

Limitaes do HTML: No oferece recurso de programao.

Os formulrios HTML apenas servem como entrada de dados. Eles no sabem processar esses dados (precisam de uma aplicao).

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 7-82

TI Bsico Programao Orientada a Objetos (Java)

Estrutura de um web site Um web site uma hierarquia de documentos HTML, media files, e outros diretrios que formam a estrutura.

Exemplo de um HTTP URL:http://www.soccer.org/league/Spring2001.html

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 8-82

TI Bsico Programao Orientada a Objetos (Java)

O Container web Um web container uma JVM especial, que responsvel por manter o ciclo de vida das servlets, bem como criar threads para cada solicitao. O Tomcat um exemplo de um container web.

O Container oferece: Suporte para comunicaes Oferece uma maneira simples para servlets se comunicarem com o servidor.

Gerenciamento do ciclo de vida Controla a vida e a morte dos servlets. Suporte a multithread Cria automticamente uma nova thread em Java para cada solicitao do servlet recebida. Segurana Utiliza o (e modificar) a segurana. deploymente descriptor para configurar

Suporte ao JSP Traduz o cdigo JSP em Java.

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 9-82

TI Bsico Programao Orientada a Objetos (Java)

Arquitetura Model 2 Diagrama de web container utilizando a arquitetura Model 2:

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 10-82

TI Bsico Programao Orientada a Objetos (Java)

A plataforma JEE Estende a linguagem Java atravs de padres para aplicaes distribudas atravs de um modelo baseado em componentes. uma plataforma completa, robusta, estvel, segura e de alta performance, voltada para o desenvolvimento de solues corporativas. Componentes Enterprise podem usar servios fornecidos pelo container como segurana, transao, persistncia e gerenciamento do ciclo de vida.

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 11-82

TI Bsico Programao Orientada a Objetos (Java)

Principais Papis A arquitetura JEE separa claramente os principais papis: Web Designer Cria elementos view.

Web Component Developer Cria elementos controler. Bussiness Component Developer Cria elementos model. Data Access Developer Cria elementos de acesso ao database.

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 12-82

TI Bsico Programao Orientada a Objetos (Java)

Migrao de uma aplicao web Matriz de relacionamento entre robustez e complexibilidade de uma arquitetura, baseado nas tecnologias utilizadas.

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 13-82

TI Bsico Programao Orientada a Objetos (Java)

Exemplo da Arquitetura JEE

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 14-82

TI Bsico Programao Orientada a Objetos (Java)

Java Servlets Um servlet um componente da tecnologia Java EE que roda no servidor web. Servlets executam as seguintes operaes: Processa uma solicitao HTTP request Gera o HTTP response dinamicamente

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 15-82

TI Bsico Programao Orientada a Objetos (Java)

O que um Servlet Servlets vivem para servir clientes. A principal funo de um servlet receber uma solicitao do cliente edevolver uma resposta. Pode ser algo simples como: traga-me a pgina de Boas-vindas. Ou pode ser algo complexo: Finalize o processo do meu carrinho de compras.

Solicitao: Traz consigo dados cruciais e o cdigo do seu servlet tem que saber como encontr-los e utiliz-los.

Resposta: Leva a informao que o browser precisa para montar uma pgina (ou baixar alguns dados). O cdigo do seu servlet tem que saber como envi-los, ou encaminhar a solicitao adiante (para outra pgina, servlet ou JSP).

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 16-82

TI Bsico Programao Orientada a Objetos (Java)

Servlets no Servidor Web Diagrama de um web server com um web container:

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 17-82

TI Bsico Programao Orientada a Objetos (Java)

HttpServlet Servlet para Aplicaes Web HTTP Java fornece a classe abstrata HttpServlet que implementa o mtodo service(), para refletir as caractersticas HTTP do servlet. Caractersticas: Gerencia solicitaes e resposta. Gerncia estado de Sesso.

Recebe dados enviados pelo browser. Devolve recursos solicitados e recursos extras. Permite gerenciar separadamente as requisies GET, POST etc...

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 18-82

TI Bsico Programao Orientada a Objetos (Java)

Processamento Request e Response

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 19-82

TI Bsico Programao Orientada a Objetos (Java)

Processamento Request e Response

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 20-82

TI Bsico Programao Orientada a Objetos (Java)

Processamento Request e Response

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 21-82

TI Bsico Programao Orientada a Objetos (Java)

Processamento Request e Response

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 22-82

TI Bsico Programao Orientada a Objetos (Java)

Diagrama de Sequncia de um HTTP GET Request

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 23-82

TI Bsico Programao Orientada a Objetos (Java)

Desenvolvendo um Servlet O modelo demonstra o projeto Liga de Futebol Web, utilizando servlet.

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 24-82

TI Bsico Programao Orientada a Objetos (Java)

API HttpServlet

O mtodo service() chama os mtodos doGet() ou doPost() de acordo com a requisio HTTP.

A maioria das caractersticas do seu servlet tratada pelos os mtodos da superclasse. Tudo o que voc precisa fazer sobrescrever os mtodos HTTP que voc precisa.

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 25-82

TI Bsico Programao Orientada a Objetos (Java)

Cdigo da Servlet ListLeaguesServlet1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 package sl314.view; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; // Support classes import java.io.IOException; import java.io.PrintWriter; // Model classes import sl314.model.League; import java.util.List; import java.util.LinkedList; import java.util.Iterator; public class ListLeaguesServlet extends HttpServlet { private List leagueList = new LinkedList(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 26-82

TI Bsico Programao Orientada a Objetos (Java)

Cdigo da Servlet ListLeaguesServlet19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 // Create the set of leagues leagueList.add(new League(2003, Spring, Soccer League (Spring 03))); leagueList.add(new League(2003, Summer, Summer Soccer Fest 2003) ); leagueList.add(new League(2003, Fall, Fall Soccer League (2003)) ); leagueList.add(new League(2004, Spring, Soccer League (Spring 04))); leagueList.add(new League(2004, Summer, The Summer of Soccer Love 2004)); leagueList.add(new League(2004, Fall, Fall Soccer League (2004)) ); // Set page title String pageTitle = Dukes Soccer League: List Leagues; // Specify the content type is HTML response.setContentType(text/html); PrintWriter out = response.getWriter(); // Generate the HTML response out.println(); out.println(); out.println( + pageTitle + ); out.println(); out.println();

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 27-82

TI Bsico Programao Orientada a Objetos (Java)

Cdigo da Servlet ListLeaguesServlet40 41 42 43 // Generate page heading out.println();out.println(); out.println(); out.println( + pageTitle + ); out.println(); out.println(); // Generate main body out.println(); out.println(The set of soccer leagues are:); out.println();

44 45 46 47 48 49 50 51 52 out.println(

  • ); 53 Iterator items = leagueList.iterator(); 54 while ( items.hasNext() ) { 55 League league = (League) items.next(); 56 out.println(
  • + league.getTitle() +

); 57 } 58 out.println(); 59 out.println(); 60 out.println(); 61 } // END of doGet method 62 } // END of ListLeaguesServlet class

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 28-82

TI Bsico Programao Orientada a Objetos (Java)

Configurando um Servlet - Abre a declarao de um servlet. Define um nome e uma classe para o servlet.

- Define o nome do servlet. Serve principalmente para o uso em outras partes do DD. O cliente NO saber da existncia dele.O Container ir criar um e somente um objeto servlet para cada definio no deployment descriptor.

- Define a classe do servlet. Deve possuir o full-qualified name da classe sem a extenso .class.

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 29-82

TI Bsico Programao Orientada a Objetos (Java)

Configurando o Mapeamento de um Servlet - Abre o mapeamento de um servlet. Define o padro URL que mapeia para um nome de servlet.

- Nome usado para unir um elemento a um elemento especfico .O Container usa na execuo, quando uma solicitao chega para perguntar qual servlet eu devo chamar para esta URL solicitada?

- Isto que o cliente v (e usa) para chegar ao servlet. Um nome criado, que NO o nome verdadeiro da classe do servlet. Pode ser mapeada de trs maneiras:

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 30-82

TI Bsico Programao Orientada a Objetos (Java)

O elemento O padro de URL que voc coloca em uma mapeamento de servlet pode ser completamente inventado. Apenas um nome lgico que voc quer fornecer aos clientes.

Pode possuir trs tipos:1. Combinao EXATA:DEVE comear com uma barra (/). Pode ter uma extenso, mas no obrigatrio.

/Beer/SelectBeer.do 2. Combinao de DIRETRIO:DEVE comear com uma barra (/). E sempre termina com uma barra/asterisco (/*).

/Beer/* 3. Combinao de EXTENSO:DEVE comear com asterico NUNCA com uma barra (/). Aps o asterico. DEVE ter uma extenso com ponto.

*.do

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 31-82

TI Bsico Programao Orientada a Objetos (Java)

Deployment Descriptor (web.xml) O arquivo web.xml o arquivo que contm as configuraes da aplicao web (contexto), que executada no Web Container. Fica localizado em: /WEB-INF/web.xml. Exemplo:1 2 3 9 10 SL-314 WebApp Example 11 12 This Web Application demonstrates a single View servlet. 13

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 32-82

TI Bsico Programao Orientada a Objetos (Java)

Deployment Descriptor (web.xml)14 15 16 17 18 19 20 21 22 23 ListLeagues sl314.view.ListLeaguesServlet ListLeagues /list_leagues.view

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 33-82

TI Bsico Programao Orientada a Objetos (Java)

Mtodos HTTP A classe HttpServlet possui todos exceto um mtodo doXXX() para tratar uma solictao HTTP. Na maior parte do desenvolvimento de servlet (provavelmente todo), voc usar o doGet() (para solicitaes simples) ou o doPost() (para aceitar e processar dados do formulrios).

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 34-82

TI Bsico Programao Orientada a Objetos (Java)

Mtodos HTTP GET Pede para obter alguma coisa (recurso/arquivo) na URL requisitada. POST Pede para o servidor aceitar a informao do corpo anexada na solicitao, e a entrega para aquilo que consta na URL solicitada. HEAD Pede apenas a parte header daquilo que o GET vai retornar. TRACE Solicita um loopback da mensagem de solicitao, para que o cliente veja o que est sendo recebido na resposta.

PUT - Diz para colocar a informao anexada (o corpo) na URL requisitada. DELETE - Diz para apagar alguma coisa (recurso/arquivo) na URL requisitada. OPTIONS - Solicita uma lista dos mtodos HTTP para os quais a coisa na URL requisitada pode responder. CONNECT- Diz para conectar no caso de tunneling.

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 35-82

TI Bsico Programao Orientada a Objetos (Java)

O Mtodo GET e POST O papel da sua classe servlet implementar o mtodo doGet() ou doPost() de acordo com a solicitao HTTP. A principal diferena entre o mtodo GET e POST, que o POST tem um corpo. Ambos podem enviar parmetros, mas com o GET, o parmetro limitado ao que voc pode colocar na linha de solicitao, alm dos dados ficarem expostos na barra de endereos.

TI Bsico Programao Orientada a Objetos (Java)

Mdulo 9, 36-82

TI Bsico Programao Orientada a Objetos (Java)

Vantagens e Desvantagens de Java Servlets Vantagens do uso de Java Servlet: Performance (threads so mais rpidos do que processos).

A linguagem Java robusta e orientada a objetos. A linguagem Java independente de plataforma. Desvantagens do uso de Java Servlet:

Para gerar pginas dinmicas (99% das aplicaes) preciso embutir o html ou xml dentro de instrues Java.out.print("Servlet"); for (int num=1; num