28 de abril de 1999 di-ufpe por jorge h. c. fernandes www ...jhcf/mybooks/itjava/slides/web... ·...

53
WWW, CGI e HTTP Java Deployment Course: Aula 2 por Jorge H. C. Fernandes ([email protected]) DI-UFPE 28 de Abril de 1999

Upload: others

Post on 11-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

WWW, CGI e HTTPJava Deployment Course: Aula 2

por Jorge H. C. Fernandes ([email protected])

DI-UFPE28 de Abril de 1999

Page 2: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

WWW, CGI e HTTPCopyright © 1999, 1998, 1997 Jorge H. C. Fernandes ([email protected])

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.

JavaTM is a trademark of Sun Microsystems.

Page 3: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

World Wide Web,Common Gateway Interface,Hypertext Transfer Protocol

Page 4: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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

Page 5: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Um Pouco de Contexto...Internet

WWW

CGI

Java

Applets

JavaScriptPerl

Servlets

Page 6: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

WWW:O Cliente/Servidor Universal

Web Server

WWW(HTTP)

Web Browser

Base dedocumentos hipermídia:

HTML, gif, etc Bem Vindo!

URL

Bem Vindo!

Page 7: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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

Page 8: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

URL: Universal Resource Locator

Page 9: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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

Page 10: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

HTML:Hypertext Markup Language

Page 11: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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

Page 12: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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>

Page 13: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Nós, Links e Âncoras

Bem vindo!

Curriculum

Welcome.html

Dados PessoaisFormaçãoPublicações

Curriculum.html

Foto.gifNós

Links

Âncoras

Page 14: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Web Server

Page 15: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Web Server

• Servidor Web, WWW, HTTP• Disponibiliza documentos hipermídia na

Web• Atende solicitações de recursos,

normalmente através do protocolo HTTP

Page 16: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Web Browser

Page 17: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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

Page 18: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

CGI e Formulários HTML

Page 19: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

NomeAnoMod

FormulárioNomeAnoMod

Sepia1997999.999

FormulárioCGIscript

CGI e Formulários HTMLWeb Server

WWW(HTTP)

Web Browser

Page 20: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Formulário e Respostas HTML

Page 21: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

HTTP:Hypertext Transfer Protocol

Page 22: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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 identificadorde recursos e um método a ser aplicado ao recurso– GET, POST, PUT, DELETE, OPTIONS

Page 23: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Pedido e Resposta HTTP

Resposta HTTP

HTTP/1.0 200 OKDate: Th, 22-February-96 8:20:00 GMTServer: NCSA/1.4.2MIME-version: 1.0Content-type: text/htmlContent-length: 2000

<html><head><title>Sépia/1997</title></head><body><h1>Sépia/1997</h1><img src=“Sepia-Vermelho.gif”><br>Valor: ...</html>

Pedido HTTP

POST /cgi-jhcf/consulta.pl HTTP/1.0Accept: text/htmlAccept: text/plainUser-Agent: MozillaHost: goiana.di.ufpe.brContent-type: application/x-www-

form-urlencodedContent-length: 21

modelo=Sepia&ano=1997

Page 24: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

A Web:Uma Distribuidora de

Produtos Digitais

Page 25: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

NomeAnoMod

FormulárioNomeAnoMod

Sepia1997999.999

FormulárioCGIscript

Web ServerWWW(HTTP)

Web Browser

A Web: Uma Distribuidora deProdutos Digitais

ClienteDistribuidora

Depósito

Estoquista

Transportador

Produto

Vendedor

Page 26: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

CGI, HTTP e Formulários HTML: Detalhes

Page 27: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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

Page 28: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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)

Page 29: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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

Page 30: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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

Page 31: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

CGI: Método GET

Page 32: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

CGI: Método GET

• Exemplo 1– Pedido HTTP– Resposta Completa HTTP– Resposta Parcial Gerada pelo Script

• Exemplo 2– Mais Informações Através da URL

Page 33: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Método GET - Exemplo 1:O Pedido HTTP

GET /cgi-bin/welcome.pl HTTP/1.0Accept: text/htmlAccept: image/gifUser-Agent: MozzilaHost: goiana.di.ufpe.br

Page 34: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Método GET - Exemplo 1:Resposta Completa (HTTP)

HTTP/1.0 200 OKDate: Thursday, 22-February-96 08:20:00 GMTServer: NCSA/1.4.2MIME-version: 1.0Content-type: text/htmlContent-length: 2000

<HTML>...<H1>Welcome!</H1> ...</HTML>

Page 35: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Content-type: text/html

<HTML>...<H1>Welcome!</H1> ...</HTML>

Método GET - Exemplo 1:Resposta Parcial (HTML)

Page 36: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Método GET - Exemplo 2:Interface

Page 37: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Método GET - Exemplo 2:Enviando Dados na URL

GET http://www.di.ufpe.br/cgi-printers/detalhes.pl?jhcf&phd&May&1998 HTTP/1.0

Accept: text/htmlAccept: image/gifUser-Agent: MozzilaHost: goiana.di.ufpe.br

Page 38: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Método GET - Exemplo 2: Resposta Formatada

Page 39: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

CGI: Método POST

Page 40: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

CGI - Método POST

Page 41: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Método POST:Dados no Corpo do Pedido HTTP

POST /cgi-jhcf/consulta.pl HTTP/1.0Accept: text/htmlAccept: text/plainUser-Agent: MozillaHost: goiana.di.ufpe.brContent-type: application/x-www-form-urlencodedContent-length: 21

modelo=Sepia&ano=1997

Page 42: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Usando POST em Formulários HTML

Page 43: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Usando POST em Formulários HTML

Page 44: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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>

Page 45: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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>

Page 46: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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

Page 47: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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”

Page 48: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

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

Page 49: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

O Formulário que Monta o Pedido

Page 50: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

A Resposta (HTML Fonte e Formatado)

Page 51: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

Referências (Livros)

• O’Reilly (http://perl.oreilly.com)– CGI Programming on the WWW

– Programming Perl, 2nd Edition

– Advanced Perl Programming

Page 52: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto
Page 53: 28 de Abril de 1999 DI-UFPE por Jorge H. C. Fernandes WWW ...jhcf/MyBooks/itjava/slides/Web... · Hypertext Markup Language (HTML) • Linguagen Declarativa, de Markup – Subconjunto

FIM