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
WWW, CGI e HTTP Copyright 1999, 1998, 1997 Jorge H. C. Fernandes (jhcf@di.ufpe.br) Todos os direitos reservados. Nenhuma parte desta publicação pode ser reproduzida, armazenada em sistema de retrieval, ou transmitida, em quaisquer formas, ou através de quaisquer meios, eletrônicos, mecânicos, fotocópias, gravações, etc, sem a prévia autorização, por escrito, de Jorge Henrique Cabral Fernandes. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form, or by any means, electronic, mechanical, photocopying, recording, or otherwise, without the prior consent of the publisher. Java TM is a trademark of Sun Microsystems.
World Wide Web, Common Gateway Interface, Hypertext Transfer Protocol
WWW, CGI, HTTP WWW Relação entre WWW, Java e outras tecnologias O Cliente/Servidor Universal Elementos do modelo WWW A Web: Uma Distribuidora de Produtos Digitais CGI, HTTP e Formulários HTML: Detalhes Métodos GET, POST Formulários HTML Scripts Perl
Um Pouco de Contexto... Internet Perl CGI JavaScript WWW Servlets Applets Java
WWW: O Cliente/Servidor Universal Web Server WWW (HTTP) Web Browser URL Base de documentos hipermídia: HTML, gif, etc Bem Vindo! Bem Vindo!
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
URL: Universal Resource Locator
Universal Resource Locator (URL) Endereço universal de recursos hipermídia <protocolo>://<servidor>[:<porta>]/<endereço-local> <protocolo> := http ftp https... <servidor> := www.di.ufpe.br www.dcc.ufmg.br... <endereço-local> := ~jhcf/welcome.html ~sbc98 Exemplos http://www.di.ufpe.br/~jhcf/welcome.html http://www.dcc.ufmg.br/~sbc98
HTML: Hypertext Markup Language
Hypertext Markup Language (HTML) Linguagen Declarativa, de Markup Subconjunto de SGML Documento HTML := cabeçalho + corpo Descreve documentos hipertextuais Nós, links, âncoras, navegação
Uma Página HTML Simples: Welcome.html <html> <!-- CABEÇALHO DO DOCUMENTO --> <head> <title>home-page</title> </head> <!-- CORPO DO DOCUMENTO --> <body> <h1>bem vindo à página de Jorge!</h1> <img src= foto.gif > <a href= Curriculum.html >Curriculum</a> </body> </html>
Nós, Links e Âncoras Welcome.html Bem vindo! Links Nós Foto.gif Curriculum Curriculum.html Dados Pessoais Formação Publicações Âncoras
Web Server
Web Server Servidor Web, WWW, HTTP Disponibiliza documentos hipermídia na Web Atende solicitações de recursos, normalmente através do protocolo HTTP
Web Browser
Web Browser Folheador HTML, cliente, navegador Acessa e mostra recursos hipermídia Transfere recursos para o servidor Exemplos: Netscape Navigator Microsoft Internet Explorer HotJava Amaya
CGI e Formulários HTML
CGI e Formulários HTML Web Server WWW (HTTP) Web Browser CGI script Formulário Nome Sepia Ano 1997 Mod 999.999
Formulário e Respostas HTML
HTTP: Hypertext Transfer Protocol
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 GET, POST, PUT, DELETE, OPTIONS
Pedido e Resposta HTTP Pedido HTTP POST /cgi-jhcf/consulta.pl HTTP/1.0 Accept: text/html Accept: text/plain User-Agent: Mozilla Host: goiana.di.ufpe.br Content-type: application/x-wwwform-urlencoded Content-length: 21 modelo=sepia&ano=1997 Resposta HTTP HTTP/1.0 200 OK Date: Th, 22-February-96 8:20:00 GMT Server: NCSA/1.4.2 MIME-version: 1.0 Content-type: text/html Content-length: 2000 <html> <head><title>sépia/1997</title></head> <body> <h1>sépia/1997</h1> <img src= Sepia-Vermelho.gif ><br> Valor:... </html>
AWeb: Uma Distribuidora de Produtos Digitais
A Web: Uma Distribuidora de Produtos Digitais Web Distribuidora Server Transportador WWW (HTTP) Web Browser Cliente Vendedor Depósito CGI script Estoquista Formulário Produto Nome Sepia Ano 1997 Mod 999.999
CGI, HTTP e Formulários HTML: Detalhes
CGI, HTTP e Formulários HTML: Detalhes Definições Aplicações Métodos Principais GET POST Usando POST em Formulários HTML Scripts em PERL
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 Saída de dados de um script CGI é gerada no formato HTML, o qual é enviado como resposta ao usuário (cliente Web)
CGI - Aplicações Tratamento de Formulários Gateways para SGBDs para outros protocolos/aplicações (Archie, WAIS, NNTP) Documentos Virtuais Horário local no servidor Carga no servidor
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 Exemplo1 PedidoHTTP Resposta Completa HTTP Resposta Parcial Gerada pelo Script Exemplo 2 Mais Informações Através da URL
Método GET - Exemplo 1: O Pedido HTTP GET /cgi-bin/welcome.pl HTTP/1.0 Accept: text/html Accept: image/gif User-Agent: Mozzila Host: goiana.di.ufpe.br
Método GET - Exemplo 1: Resposta Completa (HTTP) HTTP/1.0 200 OK Date: Thursday, 22-February-96 08:20:00 GMT Server: NCSA/1.4.2 MIME-version: 1.0 Content-type: text/html Content-length: 2000 <HTML>... <H1>Welcome!</H1>... </HTML>
Método GET - Exemplo 1: Resposta Parcial (HTML) Content-type: text/html <HTML>... <H1>Welcome!</H1>... </HTML>
Método GET - Exemplo 2: Interface
Método GET - Exemplo 2: Enviando Dados na URL GET http://www.di.ufpe.br/cgiprinters/detalhes.pl?jhcf&phd&may&1998 HTTP/1.0 Accept: text/html Accept: image/gif User-Agent: Mozzila Host: goiana.di.ufpe.br
Método GET - Exemplo 2: Resposta Formatada
CGI: Método POST
CGI - Método POST
Método POST: Dados no Corpo do Pedido HTTP POST /cgi-jhcf/consulta.pl HTTP/1.0 Accept: text/html Accept: text/plain User-Agent: Mozilla Host: goiana.di.ufpe.br Content-type: application/x-www-form-urlencoded Content-length: 21 modelo=sepia&ano=1997
Usando POST em Formulários HTML
Usando POST em Formulários HTML
Formulários HTML: Tags (1/2) <FORM ACTION="/cgi-jhcf/form.pl" METHOD="POST"> Text: <INPUT TYPE="text" NAME= texto" VALUE="Text" SIZE="4"> Password: <INPUT TYPE= password" NAME= senha VALUE= Passwd"> Hidden: <INPUT TYPE= hidden" NAME= escondido" VALUE="Hidden > Checkbox: <INPUT TYPE="checkbox" NAME= tick"><br> 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> Select: <SELECT NAME="selecao" SIZE="1"> <OPTION SELECTED>One <OPTION>Two <OPTION>Three <OPTION>Four </SELECT>
Formulários HTML: Tags (2/2) Multiple Select: <SELECT NAME= selecaomult" SIZE=2 MULTIPLE> <OPTION SELECTED>One <OPTION>Two <OPTION>Three <OPTION>Four </SELECT> TextArea: <TEXTAREA ROWS=4 COLS=20 NAME= areatexto"> Informação "default" </TEXTAREA> Submit: <INPUT TYPE="submit" VALUE="Submit!"> Submit: <INPUT TYPE="image" SRC="Sepia-Vermelho.gif"> Reset: <INPUT TYPE="reset" VALUE="Reset"> </FORM>
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 form.pl Renomeia entrada Declara rotina que monta dicionário (array associativo) Invocação da rotina Obtem valores locais Imprime cabeçalho da página HTML Valida password Abre arquivo Imprime dados na página HTML Grava dados no Arquivo Fecha arquivo Finalida HTML Encerra script
O Formulário que Monta o Pedido
A Resposta (HTML Fonte e Formatado)
Referências (Livros) O Reilly (http://perl.oreilly.com) CGI Programming on the WWW Programming Perl, 2nd Edition Advanced Perl Programming
FIM