Java, HTTP, CGI e Linguagens de Scripting



Documentos relacionados
WWW, CGI e HTTP Java Deployment Course: Aula 2. por Jorge H. C. Fernandes (jhcf@di.ufpe.br) DI-UFPE 28 de Abril de 1999

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto

O protocolo HTTP. O que é o protocolo HTTP?

Hypertext Transport Protocol (HTTP)

Programação para Internet I. 2. O protocolo HTTP. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

Programação para Internet Flávio de Oliveira Silva, M.Sc.

Redes de Computadores Grupo de Redes de Computadores

1.264 Lição 11. Fundamentos da Web

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas)

APLICAÇÕES E SERVIÇOS WEB

Conteúdo Dinâmico. Introdução. Interação Browser x Servidor Web. Interação Browser x Servidor Web

Internet e protocolos web. A Internet é uma rede descentralizada de recursos computacionais. Topologia tem de fornecer caminhos alternativos

HyperText Transfer Protocol (HTTP)

Desenvolvimento Web Protocolos da Internet

World Wide Web e Aplicações

O protocolo HTTP. Você aprenderá: O que é e como funciona o protocolo HTTP. Quais são as partes de um pedido HTTP.

Input de dados a partir de formulários HTML

Programação para Internet I

Os componentes de um formulário são: Form, Input, Select e AreaText

ALCY JOSÉ VIEIRA NETO ALEXANDRE SOHN CINTIA CAVICHIOLO PROTOCOLO HTTP

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB

PHP. Hypertext Pre-Processor

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

FORMULÁRIOS HTML (FORMS) E ENTRADAS DE DADOS (INPUT)

COMO FUNCIONA UM FORMULÁRIO

Programação Web Prof. Wladimir

Universidade Federal de Mato Grosso

Desenvolvimento Web XHTML Formulários. Prof. Bruno E. G. Gomes

O código acima descreve o formulário com uma caixa de texto e dois botões

INTRODUÇÃO AO DESENVOLVIMENTO WEB

HYPERTEXT TRANSFER PROTOCOL

Programação Web Prof. Wladimir

Programação para a Web - I. José Humberto da Silva Soares

Desenvolvimento Web Histórico da Internet e Protocolos

WWW - World Wide Web

Curso De PHP. Aula 4. Formulários. Cookies. Session. Mail

PHP: Cookies e Sessões

Comunicação entre Processos

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Desenvolvimento Web com JSP/Servlets

Programação WEB Introdução

Introdução. HyperText Markup Language HTML. Formulário. Fluxo do Formulário. Fluxo do Formulário. Fluxo do Formulário. Fluxo do Formulário

Internet. Protocolos. Principais Serviços. Chat TELNET FTP. Definições Básicas

Tópicos de Ambiente Web Conceitos Fundamentais Redes de Dados

TECNOLOGIAS WEB AULA 7

Aula 05 HTML FORMULÁRIOS Prof. Daniela Pires Sumário

Scriptlets e Formulários

Programando em PHP. Conceitos Básicos

Aulas Práticas. Implementação de um Proxy HTTP. O que é um proxy?

Como se defender utilizando software livre na era da espionagem

Mini-curso de PHP. Aulas ministradas por: André Luis de Paula Arthur Kalsing Diego Silva

Protocolo HTTP. Palavras-chave: Navegador, aplicativos, web, cliente, servidor.

Práticas de Desenvolvimento de Software

A Camada de Aplicação

Universidade da Beira Interior

Redes de Computadores (RCOMP 2014/2015)

0,5 pelo negrito das palavras ID, Nome, e Analisar em outro momento.

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

Curso de Java. Geração de Páginas WEB. TodososdireitosreservadosKlais

Guia de Consulta Rápida HTTP. Décio Jr. Novatec Editora.

UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

UM NOVO CONCEITO EM AUTOMAÇÃO. Série Ponto

Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Felippe Scheidt IFPR Campus Foz do Iguaçu 2014/2

PROGRAMAÇÃO WEB DO LADO DO CLIENTE

Redes de Computadores e a Internet

HTML (Hyper Text Markup Language) É a linguagem com que se escrevem as páginas web;

INTRODUÇÃO A REDES DE COMPUTADORES. Alan Nakai

Aula 03 - Projeto Java Web

SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE SERVIDOR WEB - APACHE 27/02/2012

Sistemas Distribuídos na Web. Pedro Ferreira DI - FCUL

Linux - Servidor de Redes

Web Browser como o processo cliente. Servidor web com páginas estáticas Vs. Aplicações dinâmicas para a Web:

Breve introdução a User Dir e Senhas no Apache Uma abordagem prática (aka crash course on User Dir and Directory Authentication on Apache)

Protocolo HTTP. - Características. - Modelo Requisição/Resposta. - Common Gateway Interface (CGI)

A autoria - II. A autoria - II. Tecnologias básicas da Web. A autoria - II Wilson de Pádua Paula Filho. Tópicos:

Linguagem de. Aula 06. Profa Cristiane Koehler

Programação Web Prof. Wladimir

Fernando M. V. Ramos, RC (LEI), TP02. HTTP. Redes de Computadores

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

HTTP. passado, presente e futuro.

ftp://ftp.cr-df.rnp.br/pub/netinfo/training/rnp/kit-bsb/html/guia3.zip dezembro 1995 Tutorial - Autoria em World Wide Web

REDES DE COMPUTADORES. Prof. Evandro Cantú

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

Desenvolvimento de Aplicações Web

SIMULADOS & TUTORIAIS

Formulários HTML. Envio de Informação para o servidor

HTML / JAVASCRIPT. A versão atual é o HTML5 (seus predecessores imediatos são HTML 4.01, XHTML 1.1, etc.).

18/04/2006 Micropagamento F2b Web Services Web rev 00

Introdução à Tecnologia Web. Tipos de Sites. Profª MSc. Elizabete Munzlinger

Desenvolvimento Web TCC Turma A-1

Desenvolvimento de Aplicações Web. Prof. José Eduardo A. de O. Teixeira / j.edu@vqv.com.br

ESTUDO SOBRE AS LINGUAGENS DE PROGRAMAÇÃO HOSPEDEIRAS SUPORTADAS PELA FERRAMENTA HTML. Aluno: Rodrigo Ristow Orientador: Wilson Pedro Carli

Aula 14 Serviços Internet (Servidor Web Apache)

Introdução à Engenharia da Computação. Tecnologia Web Professor Machado

Linguagem de Programação III Aula 2 Revisão Parte II

Transcrição:

Java, HTTP, CGI e Linguagens de Scripting Java e Engenharia de Software Orientada a Objetos por Jorge H. C. Fernandes (jorgehcfernandes@uol.com.br) 2003

Objetivos desta Aula Descrever o protocolo HTTP, utilizado para prover a comunicação entre clientes e servidores na Web Mostrar como o protocolo HTTP é usado em browsers, servidores e em programas Java Descrever a tecnologia de CGI scripts Mostrar como integrar formulários HTML e scripts CGI

Referências RFCs 2068/2616 - HTTP/1.1, Jan/97, Jul/99 http://www.w3.org/protocols/rfc2068/rfc2068 http://sunsite.hr/cgi-bin/rfc/rfc2616.txt CGI Programming on the WWW Perl (http://perl.oreilly.com) Programming Perl, 2nd Edition Advanced Perl Programming HTML http://www.w3.org http://www.ozemail.com.au/~dkgsoft/html3/index.html http://www.hut.fi/~jkorpela/html3.2/

Conteúdo Elementos que compõem a WWW Recuperando um recurso através do GET CGI e Formulários HTML: Visão Geral O Protocolo HTTP CGI, Formulários e HTTP Diferenças e Aplicação dos Métodos GET e POST Linguagens de Scripting: Perl

World Wide Web: Elementos que Compõem a WWW Universal Resource Locator (URL) Hypertext Markup Language (HTML) Web Server Web Browser Hypertext Transfer Protocol (HTTP) CGI e Formulários HTML

WWW: O Cliente/Servidor Universal Web Server Web Browser WWW (HTTP) URL Base de documentos hipermídia: HTML, gif, etc Bem Vindo! Bem Vindo!

Protocolo HTTP: Hypertext Transfer Protocol

HTTP Permite transferência de recursos hipermídia entre clientes e servidores Esquema síncrono de pedido e resposta Cada pedido contém um identificador de recursos e um método a ser aplicado ao recurso

HTTP: Histórico HTTP: A Stateless Search, Retrieve and Manipulation Protocol Internet Draft, Nov de 1993 HTTP/1.1 RFC 2068, Janeiro de 1997

HTTP/1.0 Nível de Aplicação Stateless Conexão (TCP/IP port 80) Pedido (Cliente -> Servidor) Resposta (Servidor -> Cliente) Fechamento da Conexão Negociação de Conteúdo

HTTP/1.0 Web Server Web Browser WWW (HTTP) Base de documentos hipermídia: HTML, gif, etc Java Programando para a Internet URL Java: Programando para a Internet

HTTP/1.1 Conexões Persistentes Proxy Cache Autenticação Mensagens Tipos: Request e Response Line + Header* + Body

Detalhes do Protocolo HTTP 1.1 Detalhes do Pedido Detalhes da Resposta

Detalhes do Pedido HTTP

Um Típico Pedido HTTP (com GET) GET /~jhcf/cgi/welcome.html HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.5 [en] (WinNT; I) Host: www.di.ufpe.br:80 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8

HTTP/1.1 Request Request ::= Request-Line+Header*+Body Request-Line ::= Method+ +URI+ +HTTP-Version Method: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, extensões Header ::= GeneralHeader + RequestHeader GeneralHeader (qualifica a conexão) RequestHeader (qualifica o pedido)

HTTP/1.1 Methods OPTIONS - que opções do servidor oferece? GET - solicita recurso HEAD - cabeçalho do recurso POST - envia informações para o recurso PUT - solicita adicionar recurso ao servidor DELETE - solicita remoção do recurso TRACE - diagnóstico extension - acordado entre o cliente e o servidor

HTTP/1.1 General Header Fields Cache-control: #cache-directive Connection Date Pragma Transfer-Encoding Upgrade (mudar de protocolo) Via (gateways e proxyes)

HTTP/1.1 Request Header Fields Accept Accept-Charset Accept-Encoding Accept-Language Authorization From Host Max-Forwards If-Modified-Since If-Match If-None-Match If-Range If-Unmodified-Since Proxy-Authorization Range Referer User-Agent

Detalhes da Resposta HTTP

Uma Típica Resposta HTTP HTTP/1.1 200 OK Date: Wed, 28 Jul 1999 02:29:08 GMT Server: Apache/1.2.5 Last-Modified: Wed, 28 Jul 1999 01:32:21 GMT ETag: "1bfc-62-379e5da5" Content-Length: 98 Accept-Ranges: bytes Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/html <HTML> <HEAD> <TITLE> Saudação </TITLE> </HEAD> <BODY> <H1>Bem vindo à Web!</H1> </BODY> </HTML>

HTTP/1.1 Response Response ::= Status-Line+Header*+Entity Body Status-Line ::= HTTP-Version+ +Reason-Phrase Reason: 1xx, 2xx, 3xx, 4xx, 5xx Header ::= Response-Header* + Entity-Header* Response-Header (Qualifica resposta) Entity-Header (Qualifica corpo da resposta) Entity Body conteúdo de arquivos HTML, GIF, JPG, classe Java, documento Word, documento texto, etc

HTTP/1.1 Status Line Informational 1xx Successful 2xx Redirection 3xx Client Error 4xx Server Error 5xx

HTTP/1.1 Response Header Fields Age Location Proxy-Authenticate Public Retry-After Server Vary Warning WWW-Authenticate

HTTP/1.1 Entity Header Fields Allow Content-Base Content-Encoding Content Length Content-Location Content-MD5 Content-Range Content-Type Etag Expires Last-Modified <extension-header>

Recuperando recursos na Web através do Método GET Execute um browser HTML Peça para carregar uma URL e veja o recurso obtido Por exemplo: http://www.di.ufpe.br/~jhcf/cgi/welcome.html Veja no browser o fonte dos documentos HTML que você carregou Pegue os mesmos recursos na Web usando a classe GetURL Observe no LOG DE EXECUÇÃO resposta HTTP ao pedido Instale o mini-servidor HTTP na sua máquina e faça testes com ele Acesse os recursos de seu servidor através do browser (Veja no EXECUTION LOG do mini-servidor o pedido HTTP que seu browser gerou) Acesse os recursos de seu servidor através da classe GetURL (Veja no EXECUTION LOG do mini-servidor o pedido HTTP que seu browser gerou. Compare com a resposta HTTP no LOG da classe GetURL) Instale applets na área de seu servidor e teste-os

CGI e Formulários HTML

CGI e Formulários HTML: Detalhes Definições Métodos Principais GET POST Usando POST em Formulários HTML Scripts em PERL

CGI, Formulário e Resposta HTML Web Server WWW (HTTP) Web Browser Consulta Fotos Nome: CGI script Consulta Formulário Fotos Nome: Maria Ano Mod Consultar Consultar

CGI (Common Gateway Interface): Definições CGI Parte do Web Server que pode se comunicar com outros programas executando no servidor. Invocação de um programa com passagem de informações específicas enviadas pelo usuário Host com o qual o usuário se conectou Entrada de dados através de HTML forms, etc Saída de dados de um script CGI é (normalmente) gerada no formato HTML, o qual é enviado como resposta ao usuário (cliente Web) CGI está sendo rapidamente substituida por servlets

CGI - Métodos Principais Método GET Utilizado quando a quantidade de dados a passar para o servidor é pequena Dados passados através da URL Método POST Utilizado quando a quantidade de dados a passar para o servidor é maior Dados passados no corpo do pedido HTTP Formulários

CGI: Método GET

CGI: Método GET O Pedido HTTP não tem CORPO Possíveis informações para orientar o atendimento ao pedido estão embutidas na URL Exemplo 1 Não há informações adicionais na URL Exemplo 2 Informações adicionais através da URL

Método GET - Exemplo 1: O Pedido HTTP GET /cgi-jhcf/helloworld.pl HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.5 [en] (WinNT; I) Host: padct01:8000 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8

Método GET - Exemplo 1: A Resposta HTTP HTTP/1.1 200 OK Date: Wed, 28 Jul 1999 01:47:34 GMT Server: Apache/1.2.5 Connection: close Content-Type: text/html <HTML> <HEAD><TITLE>Hello World</TITLE> </HEAD> <BODY> <H1>Hello World</H1> </BODY> </HTML>

Método GET - Exemplo 1: A Saída Gerada pelo Script #!/usr/local/bin/perl # # hello world escrito por jhcf # print "Content-Type: text/html\n"; print "\n"; print "<HTML>\n"; print "<HEAD><TITLE>Hello World</TITLE>\n"; print "</HEAD>\n"; print "<BODY>\n"; print "<H1>Hello World</H1>\n"; print "</BODY>\n"; print "</HTML>\n"; exit;

Exercícios: Usando CGI com o Método GET Modifique o script HelloWorld.pl para que ele produza uma saudação personalizada Teste o funcionamento seu script CGI

Método GET - Exemplo 2: OPedidoHTTP GET /cgi-jhcf/consultafotosget.pl?maria HTTP/1.0 Connection: Keep-Alive User-Agent: Mozilla/4.5 [en] (WinNT; I) Host: www.di.ufpe.br Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8

Método GET - Exemplo 2: A Resposta HTTP HTTP/1.1 200 OK Date: Wed, 28 Jul 1999 02:46:22 GMT Server: Apache/1.2.5 Connection: close Content-Type: text/html <html> <head><title>foto de maria</title></head> <body> <h1>foto de maria</h1> <img src="/~jhcf/cgi/fotos/maria.gif"><br> </body> </html>

Método GET - Exemplo 2: A Resposta Formatada

Método GET - Exemplo 2: O Script PERL que gerou a Resposta #!/usr/local/bin/perl # consulta fotos escrito por jhcf. Produz a saida do script CGI/GET $nome=$argv[0]; print "Content-Type: text/html\n"; print "\n"; print "<html>\n"; print "<head><title>foto de ",$nome,"</title></head>\n"; print "<body>\n"; print "<h1>foto de ",$nome,"</h1>\n"; print "<img src=\"\/~jhcf\/cgi\/fotos\/",$nome,".gif\"><br>\n"; print "</body>\n"; print "</html>\n"; exit;

CGI: Método POST

CGI, Formulário e Resposta HTML Web Server WWW (HTTP) Web Browser Consulta Fotos Nome: CGI script Consulta Formulário Fotos Nome: Maria Ano Mod Consultar Consultar

Formulário e Respostas HTML com POST

O Pedido HTTP Enviado pelo Browser POST /cgi-jhcf/consultafotos.pl HTTP/1.0 Referer: http://www.di.ufpe.br/~jhcf/cgi/consultafotos.html Connection: Keep-Alive User-Agent: Mozilla/4.5 [en] (WinNT; I) Pragma: no-cache Host: www.di.ufpe.br:80 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Content-type: application/x-www-form-urlencoded Content-length: 10 nome=maria

A Resposta HTTP Enviada pelo Servidor HTTP/1.1 200 OK Date: Tue, 27 Jul 1999 18:21:55 GMT Server: Apache/1.2.5 Connection: close Content-Type: text/html <html> <head><title>foto de maria</title></head> <body> <h1>foto de maria</h1> <img src="/~jhcf/cgi/fotos/maria.gif"><br> </body> </html>

Parte do Script CGI (em PERL) que Gerou a Resposta

Opções no Formulário HTML

Opções de entrada de dados em Formulários HTML

Opções de entrada de dados em Formulários HTML

TAGS em Formulários HTML <FORM ACTION="/cgi-jhcf/eco.cgi" METHOD="POST"> Texto: <INPUT TYPE="text" NAME="texto" VALUE="uma linha de texto" SIZE="20"><br> Senha: <INPUT TYPE="password" NAME="senha" VALUE="senha" SIZE="8"><br> Escondido: <INPUT TYPE="hidden" NAME="escondido" VALUE="valor escondido" SIZE="10"><BR> Checkbox: <INPUT TYPE="checkbox" NAME="checkbox" VALUE="marcado"><BR>

TAGS em Formulários HTML Radio #1: <INPUT TYPE="radio" NAME="radio" VALUE="1"> #2: <INPUT TYPE="radio" NAME="radio" VALUE="2"> #3: <INPUT TYPE="radio" NAME="radio" VALUE="3"><BR> SelecaoSimples: <SELECT NAME="selecaoSimples" SIZE="1"> <OPTION SELECTED>Um <OPTION>Dois <OPTION>Tres <OPTION>Quatro </SELECT><BR>

TAGS em Formulários HTML Selecao Multipla: <SELECT NAME="selecaoMultipla" SIZE=4 MULTIPLE> <OPTION SELECTED>Um Selecionado <OPTION>Dois Selecionado <OPTION>Tres Selecionado <OPTION>Quatro Selecionado </SELECT><BR> Area Texto: <TEXTAREA ROWS=4 COLS=20 NAME="areaTexto"> Coloque qualquer texto aqui </TEXTAREA><BR>

TAGS em Formulários HTML Submeter: <INPUT TYPE="submit" VALUE="submeter"><BR> Submeter: <INPUT TYPE="image" SRC="fotos/maria.gif" NAME="imagem" VALUE="imagem"><BR> Limpar: <INPUT TYPE="reset" VALUE="Limpar"><BR> </FORM>

O Pedido HTTP

Pedido HTTP gerado pelo Formulário HTML POST /cgi-jhcf/form.pl HTTP/1.0 Referer: http://padct01:80/form.html Connection: Keep-Alive User-Agent: Mozilla/4.5 [en] (WinNT; I) Host: padct01:80 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */* Accept-Encoding: gzip Accept-Language: en Accept-Charset: iso-8859-1,*,utf-8 Content-type: application/x-www-form-urlencoded Content-length: 138 texto=text&senha=password&escondido=hidden&selecao=one&selecaomult= One&areatexto=Informa%E7%E3o+%22default%22+%0D%0A&image.x= 27&image.y=27

A Resposta HTML

A Resposta (HTML Fonte e Formatado)

O Script CGI: em Perl

Linguagens de Script O que são? Linguagens p/ Programação Rápida Requisitos Manipulação de texto Interface com Bibliotecas Acesso às variáveis de ambiente Exemplos PERL, C/C++, Tcl, Java, JavaScript, VisualBasic, Python

Perl: Program Extraction and Report Language Linguagen interpretada otimizada para varredura em arquivos de texto arbitrários, extraindo informações destes arquivos de texto e imprimindo relatórios

Perl: Blocos de Código do Script eco.cgi Declara que o arquivo deve ser interpretado como um script PERL Renomeia a entrada Declara uma subrotina que monta um dicionário com os valores do formulário Invoca a subrotina Produz o HTML Encerra o script

Declara o arquivo como um script PERL, e renomeia a entrada #!/usr/local/bin/perl # # bounce (eco) escrito por jhcf # $entrada=<stdin>;

Declara rotina que monta um dicionário com os valores do formulário sub inputparser { local($buffer) = @_; chomp($buffer); @pares = split(/&/,$buffer); foreach $pares (@pares) { ($nome,$valor) = split(/=/,$pares); $valor =~ tr/+/ /; $valor =~ s/%([\da-fa-f]{2})/pack("c",hex($1))/eg; if (! defined $FORM{$nome}) { $FORM{$nome} = $valor; } else { $FORM{$nome} = $FORM{$nome}.",". $valor; } } }

Invoca a rotina inputparser, produz a saída do script e encerra o programa &inputparser($entrada); print "Content-Type: text/html\n"; print "\n"; print "<HTML>\n"; print "<HEAD><TITLE>Eco</TITLE>\n"; print "</HEAD>\n"; print "<BODY>\n"; print "<H1>Eco: Dados recebidos no Formulário </h1>\n"; foreach $key (keys %FORM) { print "<li>", $key, "=", @FORM{$key},"\n"; } print "</BODY>\n"; print "</HTML>\n"; exit;

Observações Sobre Perl A linguagem permite desenvolvimento rápido Tem muitos recursos de manipulação de caracteres e arrays associativos O Código não é orientado a objetos Sistemas tendem a ficar muito complexos com o passar do tempo

Observações sobre CGI A criação de um processo para cada pedido consume muito recurso de CPU Otimizações são proprietárias de cada sistema CGI está sendo rapidamente substituida por Servlets, embora o modelo básico de programação seja o mesmo

Exercício Monte um formulário HTML para creditar e debitar de uma conta bancária através de um script CGI, usando o método POST A computação no lado do servidor (CGI) será criada posteriormente, na forma de um Servlet

FIM